Монтирование

Материал из Xgu.ru

Перейти к: навигация, поиск
Короткий URL: mount

Содержание

[править] Общие представления о монтировании

Современные компьютеры должны работать одновременно с несколькими независимыми файловыми системами. Как правило, даже в самом простом компьютере находится несколько дисковых устройств или даже, если диск один, он разбит на несколько логических разделов.

Существует, как минимум, два различных подхода в организации представления независимых файловых систем в компьютере. В одном случае, как это принято в ОС DOS/Windows, устройства представлены независимыми друг от друга; в другом — файловые системы всех устройств объединяются в единое дерево каталогов. В UNIX/Linux-системах принят второй способ.

Независимые файловые системы включаются в существующее дерево каталогов при помощи операции монтирования. Среди всех устройств система выделяет одно, называемое системным или корневым. На нем находится корневая файловая система. Для включения файловой системы нового устройства в общее дерево каталогов из каталогов корневой файловой системы выбирается один — точка монтирования. К точке монтирования подсоединяется дерево каталогов, расположенное на подключаемом устройстве. Таким образом, этот каталог становится корневым для подключаемой файловой системы, а в нем располагаются её каталоги первого уровня (т.е. те, что находились на самом верху, в корневом). Теперь, с точки зрения пользователя, дерево каталогов подключённой файловой системы неотделимо от дерева каталогов корневой файловой системы, они составляют единое целое.

При завершении работы с подключённой файловой системой, можно отключить её, т.е. произвести обратную монтированию операцию — демонтирование или размонтирование.


FIXME: Монтирование может производится автоматически (при загрузке системы), программно (при помощи сценариев, реагирующих на внутренние и внешние события системы) или пользователем вручную (например, монтирование файловой системы флоппи-диска).

[править] Монтирование ФС в ОС Linux

Для монтирования в ОС Linux используется команда mount:

mount -lhV
mount опции устройство
mount опции каталог
mount опции ~-t~ типФС устройство каталог

Программа mount многофункциональна, она имеет множество управляющих ключей. В наиболее распространённой форме

mount -t типФС устройство каталог

она монтирует файловую систему, расположенную на указанном устройстве устройство, в указанный каталог. Монтируемая файловая система имеет тип <replaceable>типФС</replaceable>. Если монтирование удалось произвести, программа завершит свою работу без дополнительных сообщений. В противном случае программа сообщит пользователю о предполагаемой причине возникшей ошибки.


Программа допускает указывать только один из аргументов устройство или каталог. Тогда по указанному аргументу она пытается определить второй и произвести монтирование. Взаимное соответствие устройств и предназначенных для них точек монтирования описывается файлом /etc/fstab.


При вызове команды без параметров mount вообще ничего не монтирует, только сообщает пользователю информацию о смонтированных файловых системах (устройство, точка монтирования, тип файловой системы, опции монтирования).

Note-icon.gif

Для того чтобы узнать какие файловые системы смонтированы, нужно дать команду mount без параметров. Если интересуют файловые системы только одного типа, нужно использовать ключ -t типФС

[править] Дополнительная информация

  • mount(8)
  • fstab(5) — Формат файла /etc/fstab. Соглашения используемые при написании файла.

Файлы:

  • /etc/fstab — Файл, хранящий статическую описательную информацию о файловых системах: монтируемое устройство, точка монтирования, тип файловой системы, опции монтирования
  • /etc/mtab — Таблица, смонтированных файловых систем. Формат файла аналогичен формату файла /etc/fstab.

[править] Опции программы mount

Программа mount поддерживает большой набор общих и специфических для конкретного вида ФС опций, которые позволяют управлять процессом монтирования, доступом к смонтированной ФС и задавать параметры использования ФС. Опции указываются в командной строке через запятую, после ключа -o или при описании файловой системы в файле /etc/fstab.

Некоторые общие опции команды mount:

auto
Файловая система монтируется автоматически.
exec
Разрешить исполнение двоичных файлов.
user
Разрешать простому пользователю монтировать файловую систему. Опция автоматически включает noexec, nosuid и nodev, если они не перекрыты соответствующими опциями exec, suid и dev.
owner
Аналогично опции user разрешает простому пользователю монтировать файловую систему только в том случае, если он является владельцем файла устройства.
noauto
Не монтировать файловую систему автоматически.
noexec
Не разрешать исполнение двоичных файлов. Полезно, если сервер хранит на своих разделах программы другой архитектуры, нежели его собственная (например, exe-файлы Windows).
nouser
Не разрешать простому пользователю (не root) производить монтирование файловой системы. Используется по умолчанию, только суперпользователь может монтировать файловую систему, если не указано обратное.
ro
Монтировать файловую систему в режиме только-для-чтения (readonly). Запись в файлы смонтированной ФС не допускается.
rw
Монтировать файловую систему в режиме чтение-и-запись (readwrite).
defaults
Набор опций, используемых по умолчанию. Включает rw, suid, dev, exec, auto, nouser, async.


Программа mount поддерживает множество специфических опций, определяемых типом монтируемой файловой системы. Ниже рассмотрены некоторые опции монтирования файловых систем семейства FAT (msdos, umsdos и vfat)


[править] Некоторые опции команды mount для монтирования FAT-систем

blocksize=512/1024/2048
Явно указывает размер кластера монтируемого FAT-раздела
uid=value и gid=value
Устанавливает пользователя-владельца и группу-владельца всех файлов монтируемой ФС. По умолчанию используется uid и gid текущего процесса
check=r/n/s
Определяет реакцию на длинные имена файлов и имена, содержащие определенные специальные символы
conv=binary/text/auto
Управление автоматическим преобразованием CRLF<->NL (завершение строк в DOS-UNIX-стиле) на уровне ядра. В режиме binary преобразование не производится. В режиме text преобразование производится для всех файлов. В режиме auto преобразование производится для всех файлов, которые не имеют известных расширений (exe, com и т.д.). Нужно быть очень осторожным при использовании этой опции! С ее помощью можно легко нарушить логическую структуру файлов на FAT-разделе.
fat=12/16/32
Выбор 12, 16, 32-разрядного типа FAT-системы. Эта опция перекрывает автоопределение типа. Нужно быть осторожным при использовании этой опции!
codepage=value
Устанавливает кодовую страницу для преобразования не ASCII-символов в коротких именах в FAT-системах. Кодовая страница используемая по умолчанию 477. Для работы с русскими именами необходимо указать кодовую страницу 866.
iocharset=value
Набор символов, используемый для преобразования 8-битных символы в 16-битные символы unicode и обратно в длинных именах файлов. По умолчанию используется iso8859-1. Для работы с русскими именами необходимо использовать value koi8-r.

Note-icon.gif

Для работы с русскими именами на FAT-разделах в числе опций необходимо указать codepage=866,iocharset=utf-8 (или koi8-r, если вы используете эту кодировку)

[править] Файл /etc/fstab

При загрузке системы (и в некоторых других случаях) возникает необходимость в автоматическом монтировании нескольких устройств. Для этого в команде mount предусмотрен специальный режим автоматического монтирования:

mount -a [ опции ] [ -t типФС ]

При вызове команды mount с единственным параметром -a, монтируются все (ещё не смонтированные) устройства, подлежащие автоматическому монтированию. При указании ключа -t монтируются только те из них, которые имеют тип типФС.

Монтируемые при загрузке устройства заранее известны системе. Они описаны файлом /etc/fstab.

Файл /etc/fstab представляет собой текстовый файл, состоящий из строк, каждая из которых описывает одно монтируемое устройство. Строки, в свою очередь, состоят из последовательности, разделённых пробелами и символами табуляции, записей. Структура файла описана ниже.


Первое поле
Описывает блочное устройство, например /dev/cdrom или /dev/hda5, или удалённую файловую систему, например \\core\docs, подлежащую монтированию. Для устройств это должно быть имя специального файла устройства , для сетевых ресурсов Samba и NFS — имя, определённое соответствующим сервисом. Для дисковых разделов[1] в этом поле можно указывать не имя соответствующего файла устройства, а метку раздела, что существенно облегчает жизнь, при частой смене дисковой конфигурации машины.
Второе поле
Описывает точку монтирования файловой системы. Для разделов подкачки (swap partitions) точка монтирования должна быть указана как none.
Третье поле
Описывает тип файловой системы. Вместо типа файловой системы может быть указано слово ignore, означающее, что данную запись рассматривать не нужно. Таким способом удобно отмечать дисковые разделы, которые временно не используются.
Четвёртое поле
Содержит опции монтирования, разделённые запятыми (без пробелов). Используются те же опции, что и при вызове команды mount вручную, только в этом случае ключ -o опускается
Пятое поле
Используется командой резервного копирования dump для определения тех разделов, которые должны быть обработаны командой. Если поле пустое или имеет значение 0, файловая система резервному копированию не подвергается
Шестое поле
Используется программой fsck и определяет последовательность, в какой разделы будут подвергаться проверке на целостность файловой системы. Проверка осуществляется в порядке возрастания номеров. Разделы, имеющие одинаковые номера проверяются одновременно, если они находятся на разных дисках (если разделы принадлежат одному диску, распараллелить процесс проверки не удаётся). Корневая файловая система должна иметь значение этого поля 1. Разделы, имеющие значение поля 0, проверке не подвергаются.

Файл /etc/fstab хранит список не только тех устройств, которые должны монтироваться при загрузке; в этот файл может заноситься описание всех устройств, которые вообще могут быть смонтированы в системе. Например, в файле /etc/fstab целесообразно иметь строки, описывающие CD-ROM и флоппи-дисковод, хотя монтировать их автоматически не нужно.

Note-icon.gif

Для того чтобы устройство не монтировалось при загрузке, в числе его опций монтирования должно быть указано noauto.

Если устройство описано в файле /etc/fstab, при его монтировании вручную не обязательно указывать все параметры, необходимые программе mount, — достаточно указать устройство или точку монтирования. По ним в файле /etc/fstab будут найдены значения остальных параметров. Например, если в файле /etc/fstab описан CD-ROM, команда mount /dev/cdrom самостоятельно определит точку и опции монтирования и смонтирует диск.

[править] Размонтирование файловой системы

При завершении работы с файловой системой производится её размонтирование. В UNIX/Linux-системах для этого предназначена команда umount:

umount [ -hV ]
umount [ опции ] устройство | каталог [...]
umount -a [ опции ] [ -t типФС ]

Программа umount размонтирует файловую систему, определяемую ее параметрами: устройство, на котором она расположена, или каталог, в который она смонтирована. Таким образом, для того чтобы размонтировать ФС достаточно указать только ее точку монтирования или файл соответствующего блочного устройства.

Файловая система не может быть размонтирована, если она занята, например, если на ней есть открытые файлы, или какой-то из её подкаталогов является текущим для процесса системы. В случае, когда в системе работает несколько пользователей одновременно или размонтируется активно используемый раздел, бывает сложно определить, какие файлы открыты на размонтируемом разделе. Для просмотра списка открытых файлов существует утилита lsof. Она выдаёт полную информацию об открытых в системе файлах.

Tip-icon.gif

Программа lsof является очень удобным средством для определения, из-за какого открытого файла не удается размонтировать файловую систему.

В этой ситуации также может быть полезна программа fuser. Она определяет список процессов использующих указанный файл. fuser -k уничтожает найденные процессы.


Программа umount при указании опции -a автоматически размонтирует все разделы, перечисленные в файле /etc/mtab или, при указании ключа -t, только те из них, которые имеют заданный типФС. В файле указаны все разделы, смонтированные в системе кроме тех, которые были специально смонтированы с ключом -n, запрещающим запись в /etc/mtab.

[править] Дополнительная информация

  • umount(8)
  • lsof(8)

Файлы:

  • /etc/mtab — Файл, хранящий таблицу с информацией о смонтированных файловых системах. Смонтированные устройства, точки монтирования, тип ФС, параметры монтирования.

[править] Типы файловых систем

Linux поддерживает множество разнообразных файловых систем. Одной из причин, по которым ОС Linux заслужила столь широкую популярность, было то, что она могла легко сосуществовать с установленными на компьютере другими операционными системами (Windows, DOS) и даже использовать их файлы. ОС Linux поддерживает не только дисковые файловые системы, такие как ext4 и FAT, но и сетевые файловые системы, такие как CIFS и NFS.

При всем этом, количество типов поддерживаемых файловых систем постоянно растёт, а существующая поддержка усовершенствуется.

FIXME: Одним из последних шагов в этом направлении явилось появление целой серии журнализируемых файловых систем, таких как ext3, ReiserFS, XFS, отличающихся повышенной надежностью и устойчивостью ко сбоям.


[править] Типы наиболее популярных файловых систем, поддерживаемых ОС Linux

minix
Первая файловая система Linux. Позаимствована у операционной системы Minix Эндрю Танненбаума. Файловая система обладает рядом существенных ограничений. Может применятся как ФС для флоппи-дисков
ext
Расширение файловой системы minix. Заменена на ext2. В настоящее время не используется, в будущем поддержка ext будет полностью удалена из ядра.
ext2
Высокопроизводительная файловая система пришедшая на смену файловой системе ext. До недавнего времени была главной файловой системой ОС Linux
ext3
Развитие файловой системы ext2. Добавлена поддержка журнализации. Обратносовместима с ФС ext2. Основная ФС в некоторых дистрибутивах Linux.
reiserfs
Высокопроизводительная журнализируемая файловая система, разработанная компанией Namesys. Основная ФС в некоторых дистрибутивах Linux.
xfs
Linux-версия файловой системы ОС IRIX, разработанной компанией SGI. Высокопроизводительная журнализируемая файловая система
msdos
Популярная файловая система, используемая в DOS и Windows. Имена файлов в формате 8.3: длина файла не более 8-ми символов и расширение длиной не более трех символов
umsdos
Linux-расширение файловой системы msdos. Поддержка длинных имен, прав, идентификаторов uid/gid
vfat
Расширение файловой системы msdos, используемое в система MS Windows 95/98. Поддержка длинных имен.
proc
Псевдофайловая система, предоставляющая удобный доступ к структурам данных ядра. Файлы не хранятся ни на каком из устройств и существуют только условно.
iso9660
Файловая система дисков CDROM, утвержденная международной организацией стандартов как стандарт ISO 9660
hpfs
Файловая система, использующаяся в OS/2
sysv
Файловая система SysV/Coherent.
nfs
Сетевая файловая система, предоставляющая разделенный доступ к удаленным файловым системам, в соответствии с сетевым протоколом NFS. Широко используется для совместного использования файлов в UNIX-сетях
smbfs
Сетевая файловая система, предоставляющая разделенный доступ к удаленным файловым системам, в соответствии с сетевым протоколом SMB. Широко используется для разделения файлов в Windows-сетях
ncpfs
Сетевая файловая система, предоставляющая разделенный доступ к удаленным файловым системам, в соответствии с сетевым протоколом NCP. Широко используется для разделения файлов в Netware-сетях

[править] Дополнительная информация

Файлы:

  • /proc/filesystems — Список файловых систем поддерживаемых запущенным в настоящий момент ядром и загруженными модулями.

[править] Полезные советы

[править] Определение типа файловой системы

Хотя тип файловой системы определяется операционной системой автоматически, иногда бывает нужным проверить, что мы монтируем, перед тем как сделать это.

Проверить тип файловой системы можно с помощью команды file -s (вообще команда file анализирует файлы, но с ключом -s она может работать и с блочными устройствами).

Пример использования:

# file -s /dev/sdb1
/dev/sdb1: Linux rev 1.0 ext3 filesystem data, UUID=b756eeed-6db4-404b-8730-e72c536f9760 (needs journal recovery) (large files)

Если вы монтируете устройство, на котором есть таблица разделов, но вы не знаете, какой именно раздел вас интересует, или просто хотите её посмотреть, вы можете воспользоваться командой fdisk:

# fdisk -l /dev/sdb

Disk /dev/sdb: 500.1 GB, 500106780160 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x0009059e

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        1216     9767488+  83  Linux
/dev/sdb2            1217        1702     3903795   82  Linux swap / Solaris
/dev/sdb3            1703       60801   474712717+  83  Linux

Здесь видно три раздела, точное название файловых систем на которых можно установить с помощью file -s.

[править] Монтирование файлов

Вообще, монтированию подлежат только блочные устройства, однако обычный регулярный файл может быть смонтирован, если внутри него находится образ файловой системы.

Пример.

Убедимся, что внутри файла находится файловая система:

$ file /Volumes/ISO/vyatta-livecd-vc4.iso
/Volumes/ISO/vyatta-livecd-vc4.iso: ISO 9660 CD-ROM filesystem data 'Vyatta OFR Live 20080419-13:02 ' (bootable)

Смонтируем файл, как мы бы это делали для блочного устройства, только укажем при опцию loop:

%# mount -o loop /Volumes/ISO/vyatta-livecd-vc4.iso /mnt

Проверим, что у нас в каталоге /mnt. Там видна файловая система ISO-образа:

$ ls /mnt
doc  isolinux  live  md5sum.txt  packages.txt  parameters.txt

Видно, что в каталог примонтировано loop-устройство /dev/loop0:

$ df -h /mnt
Файловая система      Разм  Исп  Дост  Исп% смонтирована на
/dev/loop0            132M  132M     0 100% /mnt

Когда мы использовали опцию loop, файл был привязан к этому устройству, с помощью которого файл и был смонтирован.

Связь существует, пока устройство смонтировано:

$ losetup /dev/loop0
/dev/loop0: [fd03]:16385 (/Volumes/ISO/vyatta-livecd-vc4.iso)

После того как мы размонтируем устройство, связь исчезает:

# umount /mnt
# losetup /dev/loop0
loop: can't get info on device /dev/loop0: Нет такого устройства или адреса

Если связь файла с loop-устройством была установлена вручную с помощью команды losetup, а не возникла при выполнении команды mount, то она сохранится и после размонтирования, и удалять эту связь нужно будет тоже вручную.

[править] iso9660

Файловая система для CD-ROMа.

Монтирование отдельной сессии диска:

%# mount /dev/cdrom /mnt -t iso9660  -o session=0

[править] Автоматическое монтирование дисков с использованием UUID

Одним из недостатков использования имён блочных устройств в файле /etc/fstab (например /dev/hda.. /dev/sda..), является то, что порядок подключения при наличии более чем одного такого устройства становится случайным. Приведем простой пример. Допустим у нас имеется несколько usb-устройств:

...
/dev/sdc1  /media/hdd  ntfs-3g user,noauto,umask=000,locale=ru_UA.utf8  0  0
/dev/sdd1  /media/usb  vfat    user,noauto,umask=000                    0  0
...

В результате диск, который будет присоединен первым, будет виден в системе как блочное устройство /dev/sdc1, хотя не факт, что это будет то устройство, которое мы имели в виду, когда составляли файл /etc/fstab. Например, он может иметь не файловую систему ntfs, а какую-то другую, и в процессе монтирования возможна ошибка.

Выходом из подобной ситуации может быть использование уникальных обозначений — UUID (Universally Unique Identifier). Эти идентификаторы, по идее, должны быть уникальными (хотя и существует вероятность их повторов, но она ничтожно мала), и они создаются автоматически

Примонтировав единожды устройство и выполнив команду:

sudo ls -al /dev/disk/by-uuid/

Если устройств много, ивы не можете выбрать из списка точно, можно определить UUID по имени устройства с помощью команды blikid:

# blkid /dev/sda1
/dev/sda1: UUID="ya3iDI-C5c0-FAC5-0UCI-xhwH-0KKh-NudVOH" TYPE="LVM2_member"

В конечном счёте мы получим уникальный идентификатор данного устройства, который и прописываем в fstab.

...
UUID=C678394378393391  /media/hdd  ntfs-3g user,noauto,umask=000,locale=ru_UA.utf8  0  0
UUID=E0F9-BBAC         /media/usb  vfat    user,noauto,umask=000                    0  0
...

Как результат, например по команде mount /media/hdd будет смонтировано то самое устройство с файловой системой ntfs, независимо от того в каком порядке или к какому usb-порту оно было подключено.

UUID иногда нужно не только читать, но и изменять (например, если вы делаете полную копию устройства и хотите, чтобы дажу UUIDы были одинаковы). Для файловых систем ext2/ext3/ext4 это довольно легко сделать:

# tune2fs /dev/hda1 -U e1e0493e-d93f-41e4-ac21-cbf387c13124

(сгенерировать новый UUID можно командой uuidgen).

Для файловых систем FAT и NTFS изменение UUID тоже возможно, однако оно выполняется более извращённым способом[2].

[править] Примечания

  1. Только для ext2 и ext3
  2. Changing the UUID of a FAT32 or NTFS Partition (англ.)
Xentaur
Дисковая подсистема
Linux | FreeBSD

Диски и разделы
Файлы устройств: Блочное устройство | Символьное устройство | Raw-устройство | loop-устройство
Диски: IDE | SATA (SATA hotplug) | SCSI | USB
RAID-массивы: Аппаратный RAID | Linux RAID | FreeBSD RAID
Дисковые разделы: Раздел | MBR | fdisk | parted | disklabel | GPT

Управление томами
Логический том | Физический том | Группа томов | Снимок | Клон
device-mapper | dm-ioband | dm-crypt | dm-userspace | multipath
Системы управления томами: LVM | CLVM | EVMS | Btrfs* | ZFS* | AdvFS* | Zumastor

Сетевые хранилища и репликация
Отказоустойчивость: DRBD | Xen + DRBD | ggate + gmirror | HAST
Сетевые хранилища: AoE | iSCSI | FCoE | GNBD

Файловые системы
Монтирование | Проверка целостности | Дефрагментация | Суперблок | inode | Журнал | Кэш | VFS | UUID | FUSE
Локальные: ext3 | ext3cow | ext4 | JFS | Reiser4 | XFS | ZFS | Btrfs | AdvFS | ISO | aufs
Сетевые: NFS | CIFS | AFS | POHMELFS
Кластерные: GFS | OCFS2 | CXFS | VMFS | GPFS
Распределенные: Lustre | PVFS | Ceph | Coda

* Btrfs, ZFS и AdvFS — это файловые системы с возможностями управления томами