Работа с файловой системой

Системе нужно объяснить три простые вещи:

  1. какая файловая система на разделе;
  2. какой файл-устройство вам нужно;
  3. куда его подключить для просмотра = точка монтирования;

Каталог, в котором вы будете просматривать содержимое ваших разделов, называется точкой монтирования (mount point). Поэтому нужно объяснить системе — командой или через графический интерфейс — что вы хотите смонтировать, куда и что за файловая система на этом разделе.

В переводе на язык UNIX, это звучит так:

mount -t vfat /dev/hda3 /mnt/storage

Если нужно часто монтировать одни и те же разделы, занесите их в /etc/fstab — это общесистемный конфиг, в котором указаны все необходимые разделы для монтирования. Редактировать этот файл может не абы кто, а только root. Так что разживитесь рутовыми полномочиями и редактируйте /etc/fstab

Файл /etc/fstab состоит из колонок, разделители между колонками параметров — табуляция (клавиша TAB). Вот пример содержимого файла /etc/fstab:

# /etc/fstab: static file system information.
#
#
/dev/hda2 / reiserfs notail,noatime 0 1
/dev/hdb /mnt/cdrom iso9660 ro,user,noauto 0 0
/dev/sda1 /mnt/flash vfat iocharset=koi8-r,codepage=866,rw,user,auto 0 0


Формат колонок такой:

  • Монтируемое устройство (файл-устройство, он же раздел, который вы хотите примонтировать).
  • Точка монтирования (в какую директорию в файловой системе монтировать, точка монтирования).
  • Тип монтируемой файловой системы.
  • Опции монтирования (кодировка языка, необходимость монтирования при старте).
  • Dump (обычно 0).
  • Pass (обычно 0).

Важно, чтобы вы вставляли Тab после каждой колонки при редактировании /etc/fstab

Ниже приводятся уточнения для каждого случая файловой системы, но идея монтирования разделов в Linux одна и та же.

mount -t vfat /dev/hda1 /home/vasya/tempdir

^^^^ ^^^ ^^^^ ^^^^^^^^^^^
прикрутить тип FAT что прикрутить куда это прикрутить


Пишем буквально то, чего хотим: от имени суперпользователя, прикрутить логическую структуру с файловой системой FAT, находящуюся в файле /dev/hda1,к каталогу /home/vasya/tempdir.

После всех операций раздел следует размонтировать, чтобы данные на него записались из памяти — точно так же, как при работе с флешками в Windows. Для этого следует дать команду:

$ umount /mnt/XX
или
$ sudo umount /mnt/XX

где /mnt/XX — точка монтирования. Если ни одно приложение не работает с разделом, то раздел размонтируется отключится и данные на него полностью запишутся. После этого устройство можно безопасно извлечь.

Всё очень просто и логично. Как и многое другое в UNIX.


Предварительные действия перед монтированием

Прежде, чем монтировать разделы, нужно создать точки монтирования. Точки монтирования следует создавать в каталогах /mnt или /media. Для этого даём команду:

$ sudo mkdir /mnt/win
или
# mkdir /mnt/win

и даём каталогу права доступа для обычных пользователей:

$ sudo chmod 777 /mnt/win
или
# chmod 777 /mnt/win

Это позволит считывать и записывать данные не только суперпользователю-руту, но и обычному пользователю. Даже если в системе вы — единственный пользователь. Свою точку монтирования в директории /mnt нужно создать длякаждого раздела.

Далее приводятся описания нескольких типичных случаев монтирования разделов и файлов.

Как примонтировать раздел с файловой системой FAT в Linux
Самое главное здесь — кодировка. Замечательная корпорация Microsoft изобрела свою собственную кодировку CP866 для MS DOS, CP1251 для Windows и только в последнее время прозрела до UTF8. Благодарим Microsoft за изобретение велосипеда с треугольными колёсами и приступаем к монтированию.

Однократное монтирование FAT
Временное, однократное монтирование, например, флешки, выглядит в командной строке так:

$ sudo mount -t vfat /dev/XX /mnt/YY -o iocharset=utf8,codepage=cp866
или
# mount -t vfat /dev/XX /mnt/YY -o iocharset=utf8,codepage=cp866

Пример: монтирование типичной флешки выглядит так

$ sudo mount -t vfat /dev/sda1 /mnt/flash -o iocharset=utf8,codepage=cp866

То есть монтируем раздел /dev/sda1 типа vfat в точку монтирования /mnt/flash
Постоянное монтирование FAT
Если нужно постоянно обращаться к этим разделам, правим /etc/fstab добавляя строку:

/dev/XX /mnt/YY vfat iocharset=utf8,codepage=866,user,rw 0 0

Пример: та же типичная флешка в /etc/fstab смотрится так

/dev/sda1 /mnt/flash vfat iocharset=utf8,codepage=866,user,rw 0 0

То есть монтируем раздел /dev/sda1 типа vfat в точку монтирования /mnt/flashПосле этого раздел FAT в Linux будет доступен. Отмонтирование по команде umount /mnt/flash
Как правильно говорят в комментариях, iocharset совпадает с текущей локалью — например, iocharset=utf8.

Как примонтировать раздел с файловой системой NTFS в Linux
Кодировка в NTFS нормальная, но здесь нас ждёт другая засада. Замечательная корпорация Microsoft изобрела не просто новый велосипед с треугольными колёсами, а ещё и закрыла его, треугольноколесатого велокактуса, описание. Да так, что пришлось очень долго его взламывать и создавать драйвера обратной разработкой. О сложности проблемы даёт понять описание дефрагментации NTFS, что, как говорится, внушает.

Но с этим надо жить, и это всё монтировать. Монтировать и записывать на NTFS в Linux, тем не менее, возможно, благодаря героическим усилиям ребят, создавших драйвер NTFS-3g. Этот драйвер можно установить командой:

aptitude install ntfs-3g

или поискать пакет ntfs-3g в графической оболочке установки программ вашего любимого ди стрибутива.

Однократное монтирование NTFS
Временное, однократное монтирование, например, раздела с данными Windows, выглядит так:

$ sudo mount -t ntfs-3g /dev/XX /mnt/YY -o umask=0,nls=utf-8
или
mount -t ntfs-3g /dev/XX /mnt/YY -o umask=0,nls=utf-8

Пример: монтирование раздела Windows с NTFS разделом выглядит так

$ sudo mount -t ntfs-3g /dev/sda1 /mnt/flash -o umask=0,nls=utf-8

То есть монтируем раздел /dev/sda1 типа ntfs-3g в точку монтирования /mnt/flash

Постоянное монтирование NTFS
Если нужно постоянно обращаться к этим разделам, правим /etc/fstab добавляя строку:

/dev/XX /mnt/YY ntfs-3g umask=0,nls=utf-8,user,auto,rw 0 0

Пример: та же типичная флешка в /etc/fstab смотрится так

/dev/sda1 /mnt/windows ntfs-3g umask=0,nls=utf-8,user,auto,rw 0 0

То есть монтируем раздел /dev/sda1 типа ntfs-3g в точку монтирования/mnt/windows После этого раздел NTFS в Linux будет доступен. Отмонтирование по команде umount /mnt/windows

Как примонтировать CD/DVD диск в Linux
Всё проще — скорее всего, это уже сделано в вашем дистрибутиве. Тем не менее, привожу это здесь для примера.

Однократное монтирование CD/DVD
Временное, однократное монтирование, например, DVD-диска с данными в Linux, вглядит так:

$ sudo mount -t iso9660 /dev/XX /mnt/YY
или
#
mount -t iso9660 /dev/XX /mnt/YY

Пример: монтирование DVD-диска с данными выглядит так

$ sudo mount -t iso9660 /dev/cdrom /mnt/dvd

То есть монтируем раздел /dev/cdrom типа iso9660 в точку монтирования /mnt/dvd

Постоянное монтирование CD/DVD
Если нужно постоянно обращаться к этим разделам, правим /etc/fstab добавляя строку:

/dev/XX /mnt/YY iso9660 umask=0,nls=utf-8,user,ro 0 0

Пример: та же типичная флешка в /etc/fstab смотрится так

/dev/cdrom /mnt/cdrom iso9660 umask=0,nls=utf-8,user,ro 0 0

То есть монтируем раздел /dev/cdrom типа iso9660 в точку монтирования/mnt/cdrom После этого оптический диск в Linux будет доступен. Отмонтирование по команде umount /mnt/cdrom

Как примонтировать ISO-файл или другой файл в Linux
Вы откуда-то скачали ISO-файл и хотите просмотреть его содержимое. Для этого в Windows есть такой костыль под названием Alcohol. В Linux и вообще в UNIX такие костыли не требуются, так как монтирование ISO-образа ничем для системы не отличается от монтирования CD/DVD-диска. Нужно только передать один параметр-o loop чтобы сообщить системе, что монтировать мы собираемся на петлевое устройство (loopback). Если делать это надо много и часто, можно воспользоваться программой GmountISO, описанной тут.

Для монтирования ISO-образа в командной строке даём команду:

$ sudo mount -t iso9660 file.iso /mnt/YY -o loop
или
#
mount -t iso9660 file.iso /mnt/YY -o loop

Пример: монтирование DVD-диска с данными выглядит так

$ sudo mount -t iso9660 file.iso /mnt/dvd -o loop

То есть монтируем файл file.iso типа iso9660 в точку монтирования /mnt/dvd на петлевое устройство loop
Точно так же можно монтировать любой CD/DVD образ, а так же файл-образы сжатых\зашифрованных\экзотических файловых систем типа SquashFS. Отмонтирование по команде umount /mnt/dvd

Как примонтировать раздел с файловой системой EXT2/EXT3/ReiserFS/XFS/JFS… в Linux
Монтирование нормальных файловых систем проблем не создаёт. Приведу пример только с ext3, остальные файловые системы в Linux монтируются точно так же, только вместо ext3 подставьте буквально: ext2, reiserfs, xfs, jfs в зависимости от вашей файловой системы.

Однократное монтирование
Временное, однократное монтирование, например, флешки, выглядит в командной строке так:

$ sudo mount -t ext3 /dev/XX /mnt/YY
или
# mount -t
ext3 /dev/XX /mnt/YY

Пример: монтирование раздела с данными выглядит так

$ sudo mount -t ext3 /dev/sda1 /mnt/data

То есть монтируем раздел /dev/sda1 типа ext3 в точку монтирования /mnt/data


Постоянное монтирование
Если нужно постоянно обращаться к этим разделам, правим /etc/fstab добавляя строку:

/dev/XX /mnt/YY ext3 user,auto,rw 0 0

Пример: та же типичная флешка в /etc/fstab смотрится так

/dev/sda1 /mnt/data ext3 user,auto,rw 0 0

То есть монтируем раздел /dev/sda1 типа ext3 в точку монтирования /mnt/dataПосле этого раздел EXT3 в Linux будет доступен. Отмонтирование по команде umount /mnt/data

Что делать, если устройство в Linux не хочет размонтироваться!?
Вы пытаетесь размонтировать раздел с данными (флешка, CD/DVD диск…) и получаете сообщение с ошибкой — устройство занято. Например, при выполнении команды umount /mnt/windows получаете сообщение вида:

umount /mnt/windows
umount: /mnt/windows: device is busy
umount: /mnt/windows: device is busy

Ну и что делать, если раздел в Linux не размонтируется!? Очень просто — посмотреть, какой процесс держит раздел или файл и не даёт отмонтировать его. Дальше либо закрыть это приложение, либо придушить его с помощью командыkill. Даём команду:

lsof | grep /mnt/windows

Вертикальная черта означает передачу вывода команды lsof программе grep и фильтрации по слову /mnt/windows
После этого вы получите ответ вида:

$ lsof | grep /mnt/windows
lsof: WARNING: can’t stat() reiserfs file system /dev/.static/dev
Output information may be incomplete.
mc 14134 beast cwd DIR 8,1 4096 1 /mnt/windows

Стало быть, ваш раздел держит MC (Midnight Commander), который вы скорее всего открыли на другом рабочем столе и просто забыли о нём. Найдите это приложение, закройте его и отмонтируйте раздел снова — теперь проблема должна быть решена.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

РЕШИТЕ ЗАДАЧКУ :-) *