Монтирование
Материал из 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 вообще ничего не монтирует, только сообщает пользователю информацию о смонтированных файловых системах (устройство, точка монтирования, тип файловой системы, опции монтирования).
|
Для того чтобы узнать какие файловые системы смонтированы, нужно дать команду 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.
|
Для работы с русскими именами на 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 и флоппи-дисковод, хотя монтировать их автоматически не нужно.
|
Для того чтобы устройство не монтировалось при загрузке, в числе его опций монтирования должно быть указано noauto. |
Если устройство описано в файле /etc/fstab, при его монтировании вручную не обязательно указывать все параметры, необходимые программе mount, — достаточно указать устройство или точку монтирования. По ним в файле /etc/fstab будут найдены значения остальных параметров. Например, если в файле /etc/fstab описан CD-ROM, команда mount /dev/cdrom самостоятельно определит точку и опции монтирования и смонтирует диск.
[править] Размонтирование файловой системы
При завершении работы с файловой системой производится её размонтирование. В UNIX/Linux-системах для этого предназначена команда umount:
- umount [ -hV ]
- umount [ опции ] устройство | каталог [...]
- umount -a [ опции ] [ -t типФС ]
Программа umount размонтирует файловую систему, определяемую ее параметрами: устройство, на котором она расположена, или каталог, в который она смонтирована. Таким образом, для того чтобы размонтировать ФС достаточно указать только ее точку монтирования или файл соответствующего блочного устройства.
Файловая система не может быть размонтирована, если она занята, например, если на ней есть открытые файлы, или какой-то из её подкаталогов является текущим для процесса системы. В случае, когда в системе работает несколько пользователей одновременно или размонтируется активно используемый раздел, бывает сложно определить, какие файлы открыты на размонтируемом разделе. Для просмотра списка открытых файлов существует утилита lsof. Она выдаёт полную информацию об открытых в системе файлах.
Программа 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].
[править] Примечания
- ↑ Только для ext2 и ext3
- ↑ Changing the UUID of a FAT32 or NTFS Partition (англ.)