Что содержит файл mtab

Обновлено: 04.07.2024

mount -a [-fFnrsvw] [-t тип_ФС ] [-O список_параметров ]
mount [-fnrsvw] [-o параметры [. ]] устройство | каталог
mount [-fnrsvw] [-t тип_ФС ] [-o параметры ] устройство каталог

ОПИСАНИЕ

Все файлы, доступные в Unix системах, составляют иерархическую файловую структуру, которая подобна растущему дереву имеет ветки (каталоги) и листья (файлы в каталогах). Корень этого большого дерева обозначается как / . Физически файлы могут располагаться на различных устройствах. Команда mount служит для подключения файловых систем разных устройств к этому большому дереву. Также существует противоположная ей команда под названием umount (8) , которая выполняет демонтирование (отключение) файловых систем.

Наиболее часто встречающаяся форма команды mount выглядит следующим образом:
mount -t vfstype device dir Такая команда предлагает ядру смонтировать (подключить) файловую систему указанного типа vfstype , расположенную на устройстве device , к заданному каталогу dir , который часто называют точкой монтирования. Предыдущее содержимое, владелец и режим доступа к каталогу dir становятся недоступными (исчезают), а вновь появившиеся продолжают действовать, пока файловая система device смонтирована (подключена) к dir .

Следующие три формы вызова этой команды не связаны с каким-либо монтированием:
mount -h выводит на экран помощь-подсказку программы;
mount -V выводит информацию о версии программы. И наконец третья mount [-l] [-t vfstype ] выводит список всех смонтированных файловых системы с определенным типом vfstype . В этом списке параметр -l добавляет некоторые описания, например, ext2, ext3, XFS и др. См. ниже.

Начиная с ядра Linux 2.4.0 появилась возможность перемонтирования части файловой иерархии дополнительно в иное место. Это можно сделать через следующий вызов команды:
mount --bind olddir newdir После выполнения этой команды одно и тот же содержимое становится доступным из двух точек. Таким же образом можно перемонтировать отдельный файл (или на отдельный файл).

olddir и newdir .

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

Следует помнить, что новая точка монтирования файловой системы, например, newdir , наследует свойства (например, права владельцев), от первоначальной точки монтирования olddir , которые не могут быть изменены через параметр -o , пока действуют --bind/--rbind.

Начиная с ядра Linux 2.5.1 появилась возможность атомарно перемещать (т.е. операция или выполняется до конца, или вообще не выполняется) смонтированное дерево каталогов в иное место. Для этого используют следующий вызов:
mount --move olddir newdir

Большинство устройств определяется именем файла (для специальных блочных устройств), например, /dev/sda1 , однако существуют и другие описания. Например, в случае монтирования некоего NFS устройства device можно встретить такое его описание: knuth.cwi.nl:/dir . Также есть возможность указать специальное блочное устройство, используя его метку тома или UUID (см. ниже параметры -L и -U).

Ключевую роль в процессе монтирования играет файл /etc/fstab (см. fstab (5)), строки которого обычно характеризуют подключаемые устройства с соответствующими для них параметрами. Этот файл используют в следующих случаях:

(i) Команда
mount -a [-t vfstype ] [-O optlist ] (обычно встречается в сценариях загрузки) пытается смонтировать все файловые системы типа vfstype , которые перечислены в файле /etc/fstab (с соответствующим типом vfstype и/или имеющие или не имеющие соответствующие параметры optlist ) , за исключением тех, чьи строки описаний содержат ключевое слово noauto . С дополнительным параметром -F операция монтирования будет выполняться параллельно и файловые системы монтироваться одновременно.

(ii) Если монтируемая файловая система упоминается в файле /etc/fstab , то для команды mount достаточно в параметрах указывать только устройство или точку монтирования.

(iii) Обычно только суперпользователь может монтировать файловые системы, но, если в строке описания файла /etc/fstab содержится параметр user или users , соответствующую файловую систему может монтировать любой пользователь.

Так, задавая в строке файла fstab следующее описание
/dev/cdrom /cd iso9660 ro,user,noauto,unhide любой пользователь сможет монтировать файловую систему iso9660 для устройства CDROM с помощью команды
mount /dev/cdrom или
mount /cd Для большей информации, см. fstab (5).

Лишь тот пользователь, который смонтировал файловую систему, может её размонтировать. Если необходимо, чтобы любой пользователь мог выполнить операцию размонтирования, тогда в строках описания файла /etc/fstab используйте параметр users вместо user .

Параметр owner подобен параметру user , с тем ограничением, что пользователь должен быть владельцем специального файла (устройства). Этот параметр может быть полезна, например, для /dev/fd если сценарий начальной регистрации будет назначать пользователя владельцем этого устройства. Параметр group подобен параметру user , с тем лишь ограничением, что пользователь должен быть членом группы, которой принадлежит специальный файл (устройство).

Программы mount и umount поддерживают список текущих смонтированных файловых систем в файле /etc/mtab . Запущенная без аргументов, mount выводит на экран этот список.

Когда файловая система proc монтируется, к примеру, на точку /proc , содержание файлов /etc/mtab и /proc/mounts весьма схожее между собой. При этом в первом из них содержится несколько больше информации, так как здесь дополнительно указываются параметры монтирования, хотя это не всегда соответствует действительности (если корневая файловая система смонтирована в режиме "только чтение", например, во время ремонта файловой системы, то файл /etc/mtab не может быть создан и его использование приведет к получению недостоверной информации. См. параметр -n ниже). Допустима возможная замена /etc/mtab символической ссылкой на /proc/mounts особенно тогда, когда у вас очень много смонтированных ресурсов - это должно существенно улучшить работу через такую символическую ссылку. Правда при этом будет утеряна некоторая информация, специфическая работа с loop устройствами станет менее удобной и, кроме того, невозможным станет использование параметра user .

ПАРАМЕТРЫ

Полный набор параметров, который будет использован при работе команды mount в первую очередь включает параметры, извлекаемые из таблицы файла /etc/fstab для определенной файловой системы, затем добавляются параметры, которые задаются аргументом -o и, наконец, если они указаны, добавляются параметры -r или -w .

Параметры, которые можно использовать с командой mount : -V Выводит информацию о версии программы. -h Выводит подсказку. -v Подробно информирует о выполняемых действиях. -a Монтирует все файловые системы указанного типа, описания которых содержатся в файле /etc/fstab . -F (Используется совместно с параметром -a .) Позволяет подключать файловые системы на различных устройствах или на серверах NFS параллельно. Это благоприятно сказывается на производительности; также параллельно обслуживаются тайм-ауты NFS. Неудобством является только то, что процессы монтирования происходят в неопределенном порядке. Поэтому параметр -F нельзя применять, например, для одновременного монтирования и /usr и /usr/spool . -f Пытается делать все возможное для выполнения системного вызова; если это невозможно, тогда создаётся видимость успешного выполнения монтирования файловой системы. Этот параметр полезен в сочетании с -v , чтобы отследить попытки, предпринимаемые командой mount . С помощью параметра -f можно также добавить элементы описаний тех устройств, которые ранее монтировались с параметром -n . -i Не вызывать помощника монтирования /sbin/mount.<filesystem> даже если он существует.

-l К выводу информации добавляет описания файловых систем ext2, ext3 и XFS. Для работы этого параметра, монтирование должно разрешать операцию чтения дискового устройства (т.е. активизирован suid root). Описание файловой системы можно задать для ext2 или ext3 с помощью утилиты e2label (8), а для XFS - используя утилиту xfs_admin (8). или для reiserfs используя reiserfstune (8). -n Монтирует без записи в /etc/mtab . Необходимость в этом возникает когда, например, /etc находится на файловой системе с режимом доступа "только для чтения". -p num В случае применения loop-монтирования с шифрованием, читает ключевую фразу из файлового дескриптора num , а не с терминала. -s Избегая аварийного завершения, допускает даже неподходящие параметры монтирования. При этом параметры, не поддерживаемые файловой системой, будут проигнорированы. Не все файловые системы поддерживают этот параметр. Этот параметр предназначен для поддержки в Linux авто-монтирования при помощи autofs. -r Монтирует файловую систему в режиме "только для чтения". В качестве синонима можно использовать: -o ro . -w Монтирует файловую систему в режиме "чтения/запись". Это является режимом по умолчанию. В качестве синонима можно использовать: -o rw . -L label Монтирует раздел (специальное устройство), который имеет метку label . Начиная с ядра Linux 2.1.116 требует наличие файла /proc/partitions -U uuid Монтирует раздел, указываемый uuid - уникальным и универсальным идентификатором (Universally Unique IDentifier) системы UUCP (Unix-Unix CoPy - система взаимодействия между Unix-машинами, включающая пересылку файлов, дистанционный запуск заданий, эмуляцию терминала). Предполагается, что UUID уникален не только в рамках локальной системы, но и среди всех UUID, которые созданы на других системах в прошлом и будущем. Некоторые блочно-специальные устройства монтируются подобным образом. Как и предыдущий параметр, требует наличия файла /proc/partitions (начиная с ядра Linux 2.1.116). -t vfstype Аргумент следующий за -t указывает тип файловой системы. В настоящее время поддерживаются следующие типы: adfs , affs , autofs , coda , coherent , cramfs , devpts , efs , ext , ext2 , ext3 , hfs , hpfs , iso9660 , jfs , minix , msdos , ncpfs , nfs , ntfs , proc , qnx4 , ramfs , reiserfs , romfs , smbfs , sysv , tmpfs , udf , ufs , umsdos , usbfs , vfat , xenix , xfs , xiafs . Следует отметить, что coherent , sysv и xenix являются равноценными и, что xenix и coherent когда-нибудь будут удалены. Поэтому взамен лучше использовать sysv . Начиная с ядра 2.1.21 типы ext и xiafs не существуют. Ранее, тип файловой системы usbfs был известен как usbdevfs .

Для большинства типов файловых систем всё, что делает программа mount - выполнение простого системного вызова mount (2) без уточнения типа файловой системы в запросе. Однако, для некоторых типов файловых систем (подобных nfs, smbfs, ncpfs) добавление специального кода является необходимым. Для nfs - специальный код является встроенным, а smbfs и ncpfs проходят специфичную процедуру монтирования. Реализацией возможности удовлетворить все типы файловых систем через унифицированный способ монтирования, является использование (при наличии) программы-помощника /sbin/mount.TYPE при вызове с типом TYPE . Так, различные версии программы smbmount используют различные соглашения о правилах вызова, поэтому /sbin/mount.smbfs может быть сценарием оболочки, который и реализует особенность необходимого вызова.

Если не используется параметр -t или, если определение типа указано как auto , то будет предпринята попытка установить тип файловой системы автоматически. Если команда mount была собрана с библиотекой blkid, поиск предположительного типа файловой системы будет осуществляться этой библиотекой. Иначе, команда mount попытается установить тип, исследуя суперблок; если и в этом случае попытка авто-определения закончится неудачей, для монтирования будет использована информация из файла /etc/filesystems , или, если он не существует, файла /proc/filesystems . Все типы файловых систем, перечисленные в этих файлах, будут перепробованы, за исключением тех, которые отмечены как "nodev" (т.е., devpts , proc и nfs ). Если файл /etc/filesystems заканчивается строкой с одиночным символом '*', при монтировании будет дополнительно использован и файл /proc/filesystems .

Тип auto удобен для облегченного монтирования дискет (floppy) и других съемных носителей. Создание и использование файла /etc/filesystems может быть полезным для того, чтобы изменить очередность в распознавании типа файловой системы (т.е., проверить, например, сначала как vfat, а потом msdos или ext3, а потом ext2) или в случае использования автозагрузки определённого модуля ядра.

Внимание: при автоматическом распознавании типа файловой системы используется эвристический метод, который основан на поиске определенных `магических последовательностей'. Из-за этого не исключена вероятность ошибок, которые могут привести к фатальным последствиям. Вывод: если вы точно знаете тип файловой системы, лучше не разрешать командe mount распознавать его самостоятельно.

Более чем один тип файловой системы может быть задан списком, где в качестве разделителя типов должна использоваться запятая. Список типов файловых систем может начинаться с no . В этом случае, на указанные в списке типы не будет распространяться указанное действие. (Эта возможность очень удобна в сочетании с параметром -a .)

Например, команда: mount -a -t nomsdos,ext монтирует все файловые системы кроме указанных типов msdos и ext . -O Используется в сочетании с параметром -a , для исключения монтирования некоторых файловых систем из общего списка, который предполагается -a . Этот параметр похож на параметр -t только, в этом случае, исключение происходит в контексте параметра -a и связанного с ней файла /etc/fstab .

Например, команда: mount -a -O no_netdev монтирует все файловые системы за исключением тех, которые имеют параметр _netdev в строках монтирования файла /etc/fstab .

В этом заключается основное отличие -O от -t , для которой требуется точное указание типа, а ключевое слово no , предваряющее один из параметров, не распространяется на остальные.

Параметры -t и -O обладают эффектом дополнять действия друг друга; это означает, что команда mount -a -t ext2 -O _netdev монтирует все файловые системы ext2 с параметром _netdev , за исключением всех файловых систем, для которых не задан один из двух параметров, или ext2 , или _netdev .

-o Параметр -o указывает список параметров, разделенных запятыми. Некоторые из этих параметров полезны, когда они представлены в файле /etc/fstab . Ниже приведены параметры, которые пригодны для любой монтируемой файловой системы (однако, не каждая файловая система соблюдает их - например, параметр sync сегодня работает только для ext2, ext3 и ufs): async Все операции ввода/вывода (I/O) файловой системы будут выполняться асинхронно. atime Для каждого обращения обновляет время доступа в дескрипторе файла, что принято по умолчанию. auto Может монтироваться с параметром -a . defaults Использует параметры, принятые по умолчанию: rw , suid , dev , exec , auto , nouser и async . dev Различает файловые системы символьно-специальных и блочно-специальных устройств. exec Разрешает исполнение двоичных файлов.

group Позволяет обычному пользователю (т.е., не суперпользователю) монтировать файловую систему если он является членом одной из групп, которой принадлежит устройство. Этот параметр сопровождается таким же действием, как и параметры nosuid и nodev (если не будет перекрыт последующими параметрами в строке, как например, group,dev,suid ). mand Позволяет принудительно заблокировать данную файловую систему. Детальную информацию см. fcntl (2). _netdev Файловая система, находящаяся на устройстве, которому требуется сетевой доступ (используется для предотвращения попыток системы монтировать эту файловую систему пока доступна сеть). noatime Для заданной файловой системы не обновляет поле дескриптора, содержащее время доступа (например, для быстрого доступа к спулу новостей с целью увеличения скорости работы серверов новостей). noauto Разрешает монтирование лишь по прямому указанию (т.е., параметр -a не монтирует эту файловую систему). nodev Не различает файловые системы символьно-специальных и блочно-специальных устройств. noexec Запрещает исполнение любых двоичных файлов смонтированной файловой системы. (До недавнего времени можно было управлять любыми двоичными данными на смонтированной файловой системе, так или иначе используя команду /lib/ld*.so /mnt/binary. Однако начиная с версии Linux 2.4.25 / 2.6.0. это уже не представляется возможным.) nomand Не позволяет принудительно блокировать данную файловую систему. nosuid Запрещает использование бит полномочий SUID (Set-User-IDentifier - установка идентификатора владельца) или SGID (Set-Group-IDentifier - установка идентификатора группы). (На первый взгляд это кажется безопасно, но фактически представляет опасность, в случае, если вы инсталлировали suidperl(1).) owner Позволяет обычному пользователю (т.е., не суперпользователю) монтировать файловую систему, если он является владельцем устройства. Этот параметр сопровождается таким же действием, как и параметры nosuid и nodev (если не будет перекрыт последующими параметрами в строке, как например, owner,dev,suid ). nouser Запрещает обычному пользователю (т.е., не-root) монтировать файловую систему , что принято по умолчанию. remount Пробует перемонтировать уже смонтированную файловую систему. Это может быть необходимо, когда требуется поменять флаги режима доступа. Например, файловая система с режимом "только для чтения" может быть преобразована и после перемонтирования допускает режим "чтение/запись". Это действие не изменяет устройство или точку монтирования. ro Монтирует файловую систему "только для чтения". rw Монтирует файловую систему в режиме доступа "чтение/запись". suid Разрешает действовать битам полномочий SUID и SGID. sync Все операции ввода/вывода (I/O) будут выполняться синхронно. dirsync Все каталоги обновляются в пределах файловой системы с целью синхронизации информации. Это происходит при следующих системных вызовах: creat, link, unlink, symlink, mkdir, rmdir, mknod и rename. user Разрешает обычному пользователю монтировать файловую систему. Имя монтирующего пользователя сохраняется в файле /etc/mtab так, что он может размонтировать файловую систему позже. Этот параметр подразумевает автоматическую активацию параметров noexec , nosuid и nodev (если только далее в строке они не перекрываются последовательностью параметров user,exec,dev,suid ). users Разрешает любому пользователю монтировать и размонтировать файловую систему. Этот параметр подразумевает автоматическую активацию параметров noexec , nosuid и nodev (если только далее в строке они не перекрываются последовательностью параметров, например, users,exec,dev,suid ). --bind Выполняет дополнительное монтирование поддерева каталогов еще в одну точку (после этого содержимое становится доступным из обоих точек). См. пример выше. --move Перемещает поддерево в некоторое иное место. См. пример выше.

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

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

7.1. Монтирование локальных файловых систем

7.1.1. Создание точки монтирования с помощью утилиты mkdir

В данном примере демонстрируется методика создания новой точки монтирования с помощью утилиты mkdir .

7.1.2. Утилита mount

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

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

7.1.3. Файл /etc/filesystems

На самом деле использование параметра -t ext2 утилиты mount для явного указания типа файловой системы не всегда является необходимым. Утилита mount имеет возможность автоматической идентификации типов множества файловых систем.

В случае монтирования файловой системы без явного указания ее типа утилита mount в первую очередь попытается идентифицировать файловую систему как одну из файловых систем, перечисленных в файле /etc/filesystems . При этом утилита mount будет пропускать строки с директивой nodev .

7.1.4. Файл /proc/filesystems

В том случае, если файла /etc/filesystems не существует или данный файл заканчивается строкой с одним символом *, утилита mount будет читать файл /proc/filesystems .

7.1.5. Утилита umount

Вы можете отмонтировать файловую систему с помощью утилиты umount .

7.2. Вывод списка смонтированных файловых систем

Для вывода списка смонтированных файловых систем следует использовать команду mount . Также можно прочитать содержимое файлов /proc/mounts и /etc/mtab .

7.2.1. Утилита mount

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

7.2.2. Файл /proc/mounts

Ядро ОС предоставляет информацию о смонтированных файловых системах посредством файла /proc/mounts , причем данный файл не хранится на жестком диске. При чтении информации из файла /proc/mounts осуществляется чтение информации, переданной непосредственно ядром ОС.

7.2.3. Файл /etc/mtab

Содержимое файла /etc/mtab не обновляется средствами ядра ОС, а поддерживается в актуальном состоянии средствами утилиты mount . Не редактируйте файл /etc/mtab вручную.

7.2.4. Утилита df

Более удобный для пользователя способ получения списка смонтированных файловых систем заключается в использовании утилиты df . Утилита df (название расшифровывается как diskfree - свободное пространство диска) имеет полезную дополнительную возможность, заключающуюся в выводе данных об объеме свободного пространства в каждой из смонтированных файловых систем, расположенных в разделах жестких дисков. Как и большинство утилит из состава Linux, утилита df поддерживает параметр -h , предназначенный для активации режима вывода данных в формате, облегчающем чтение.

7.2.5. Команда df -h

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

7.2.6. Утилита du

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

Хотя утилита du и может осуществлять рекурсивный обход дерева директорий с последующим выводом информации о каждой из директорий, параметр -s позволит вам получить обобщенную информацию о размере родительской директории. Этот параметр чаще всего используется вместе с параметром -h . Поэтому команда du -sh по отношению к точке монтирования позволит получить информацию обо всем пространстве раздела диска, использованном файловой системой.

7.3. Процесс монтирования файловой системы от начала до конца

В приведенном ниже примере показана полная последовательность действий, начинающаяся с определения имени файла устройства жесткого диска (/dev/sdb) и заканчивающаяся монтированием созданной в разделе этого жесткого диска файловой системы в директорию /mnt .

7.4. Монтирование файловых систем на постоянной основе

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

7.4.1. Файл /etc/fstab

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

Ниже приведен пример файла /etc/fstab .

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

7.4.2. Команда mount /точка_монтирования

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

7.5. Безопасное монтирование файловых систем

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

7.5.1. Параметр ro

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

7.5.2. Параметр noexec

Параметр noexec позволяет предотвратить исполнение бинарных файлов и сценариев, расположенных в смонтированной файловой системе.

7.5.3. Параметр nosuid

Параметр nosuid позволяет игнорировать биты setuid , установленные для бинарных файлов из смонтированной файловой системы.

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

Но пользователи не смогут воспользоваться привилегиями, обусловленными наличием битов setuid .

7.5.4. Параметр noacl

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

Описания других параметров монтирования файловых систем доступны на странице руководства для утилиты mount .

7.6. Монтирование удаленных файловых систем

7.6.1. Файловая система SMB/CIFS

Соединение с сервером Samba (или компьютером, работающим под управлением ОС производства компании Microsoft) также может осуществляться с помощью утилиты mount.

В данном примере показана методика соединения с сервером, имеющим IP-адрес 10.0.0.42 , для доступа к разделяемому ресурсу с именем data2 .

Для корректного соединения с использованием описанного протокола необходимо установить дополнительные программные компоненты с помощью команды yum install cifs-client .

7.6.2. Файловая система NFS

Серверы Unix обычно используют протокол NFS (расшифровывается как Network File System - сетевая файловая система) для предоставления доступа к директориям по сети. Настройка сервера NFS будет обсуждаться позднее. Соединение же с сервером NFS со стороны клиента осуществляется также с помощью утилиты mount и очень похоже на соединение с локальным дисковым хранилищем.

Данная команда демонстрирует методику соединения с сервером NFS с именем server42 , который предоставляет доступ к директории /srv/data . Точка монтирования (путь к которой приведен в конце строки команды) должна существовать.

В том случае, если сервер с именем server42 имеет IP-адрес 10.0.0.42 , вы также можете использовать запись:

7.6.2. Специфичные для NFS параметры монтирования

bg : в случае неудачи при монтировании файловой системы повторять попытки в фоновом режиме.

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

soft : прекратить процесс монтирования файловой системы после X неудачных попыток.

hard : (используется по умолчанию) продолжать предпринимать попытки монтирования файловой системы после неудач.

Комбинация параметров soft+bg позволяет осуществить наиболее быструю загрузку клиентской системы в случае неполадок с сервером NFS.

retrans=X : Попытаться соединиться с сервером X раз (по протоколу UDP).

tcp : Принудительно использовать протокол TCP (используется по умолчанию и всегда поддерживается).

udp : Принудительно использовать протокол UDP (не всегда поддерживается).

7.7. Практическое задание: монтирование файловых систем

1. Смонтируйте файловую систему, созданную в рамках малого раздела размером в 200 МБ, в точку монтирования /home/project22.

2. Смонтируйте файловую систему, созданную в рамках большого первичного раздела размером в 400 МБ, в точку монтирования /mnt, после чего скопируйте некоторые системные файлы в эту директорию (рекомендуется скопировать все содержимое директории /etc). После этого отмонтируйте файловую систему и повторно смонтируйте ее в точку монтирования /srv/nfs/salesnumbers в режиме только для чтения. Где оказались скопированные вами ранее файлы?

3. Проверьте корректность своих выполненных действий с помощью утилит fdisk , df и mount . Также изучите содержимое файлов /etc/mtab и /proc/mounts .

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

5. Что случится, если вы смонтируете файловую систему в директорию, в которой уже содержатся файлы?

6. Что случится, если вы смонтируете две файловых системы в одну и ту же точку монтирования?

7 (дополнительное задание). Дайте пояснения относительно различий между данными утилитами: find, locate, updatedb, makewhatis, whereis, apropos, which и type.

8 (дополнительное задание). Выполните проверку файловой системы, созданной в разделе, который смонтирован в директорию /srv/nfs/salesnumbers.

7.8. Процедура корректного выполнения практического задания: монтирование файловых систем

1. Смонтируйте файловую систему, созданную в рамках малого раздела размером в 200 МБ, в точку монтирования /home/project22.

2. Смонтируйте файловую систему, созданную в рамках большого первичного раздела размером в 400 МБ, в точку монтирования /mnt, после чего скопируйте некоторые системные файлы в эту директорию (рекомендуется скопировать все содержимое директории /etc). После этого отмонтируйте файловую систему и повторно смонтируйте ее в точку монтирования /srv/nfs/salesnumbers в режиме только для чтения. Где оказались скопированные вами ранее файлы?

Теперь вы можете обнаружить скопированные ранее файлы в директории /srv/nfs/salenumbers .

Но физически эти файлы все также хранятся в рамках файловой системы ext3 на разделе жесткого диска, представленном файлом устройства /dev/sdb1

3. Проверьте корректность своих выполненных действий с помощью утилит fdisk , df и mount . Также изучите содержимое файлов /etc/mtab и /proc/mounts .

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

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

Добавьте следующие строки в файл /etc/fstab

5. Что случится, если вы смонтируете файловую систему в директорию, в которой уже содержатся файлы?

Уже имеющиеся файлы будут скрыты до момента отмонтирования файловой системы, к примеру, с помощью утилиты umount .

6. Что случится, если вы смонтируете две файловых системы в одну и ту же точку монтирования?

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

7 (дополнительное задание). Дайте пояснения относительно различий между данными утилитами: find, locate, updatedb, makewhatis, whereis, apropos, which и type.

8 (дополнительное задание). Выполните проверку файловой системы, созданной в разделе, который смонтирован в директорию /srv/nfs/salesnumbers.

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

По понятным причинам это был не идеальный механизм.

/etc/mtab таким образом, популярно стало символической ссылкой на /proc/mounts , позволяя программам, которые зашифровали это имя, продолжать чтение таблицы монтирования из этого файла, что программы, которые монтировали и размонтировали файловые системы, больше не должны явно делать что-либо сами, чтобы оставаться в курсе. (Однако некоторые из них все равно будут, если /etc/mtab окажется, что это обычный файл с возможностью записи. И есть несколько угловых случаев, когда нормализованная информация, в mounts которой отсутствуют все неядерные данные, не совсем то, что нужно; хотя они не перевешивают общие проблемы с /etc/mtab .)

Каждый процесс может в настоящее время имеет свой индивидуальный вид , что установлен, и есть , как следствие теперь отдельные mounts файлы для каждого процесса в PROCFS, собственная таблица каждого процесса является доступным для него через self символическую ссылку , как self/mounts и /proc/mounts является также теперь совместимостью механизм. (Интересно, что ни текущий процесс, mounts ни формат mounts не документированы в текущем документе Linux, хотя подобный mountinfo псевдорегулярный файл есть.)

SunOS / Solaris имеет аналогичный механизм. /etc/mnttab Файл на самом деле является одним файлом файловой системы, и в дополнение к чтению таблицы, с помощью дескриптора открытого файла в этот файл, с read() системным вызовом, можно наблюдать за изменениями монтажа точки с poll() и получить различные дополнительные фрагменты информации с ioctl() .

В HP-UX /etc/mnttab аналогично имя файла, но начиная с версии 11 это все еще был обычный файл, содержимое которого совместно поддерживалось программами системной утилиты.

AIX не экспортирует читабельную текстовую таблицу, которую должны анализировать программы, и не существует эквивалентного файла. Точно так же BSD имеют полнофункциональные системные вызовы getfsstat() во FreeBSD и OpenBSD для программ, которые получают таблицу монтирования из ядра в машиночитаемой форме, не распределяя ее через читаемую человеком промежуточную форму.

Оба /etc/mtab и /etc/fstab содержат данные о смонтированных томах, например:

/etc/mtab

/etc/fstab

В чем разница между файлами?

2 ответа

/etc/fstab - список файловых систем, которые должны быть установлены во время загрузки. Если вы хотите, чтобы ваш раздел Windows или файлового хранилища был установлен после загрузки вашего компьютера, вы помещаете соответствующую запись в /etc/fstab .

/etc/mtab - это список файловых систем в настоящее время . Если у вас установлен диск, но не установлен, он не будет отображаться в файле /etc/mtab . Как только вы установите его, он появится там.

Обратите также внимание, что с systemd (к которому Ubuntu переключается начиная с выпуска 15.04) можно объявить файловые системы, которые необходимо установить при загрузке через *.mount . См. учебник Джеймса Огуи по теме.

Для получения дополнительной информации прочитайте mount .

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

Цитаты из руководства mount

/etc/fstab , /etc/mtab и /proc/mounts файлы

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

Программы mount и umount сохранить список файловых систем, находящихся в данный момент, в файле /etc/mtab .

Когда файловая система proc монтируется (например, /proc ), файлы /etc/mtab и /proc/mounts имеют очень похожее содержимое. У первого есть несколько больше информации, например, варианты монтирования, но не обязательно обновлены.

mount -a

mount -a [-t type] [-O optlist]

(обычно заданный в bootscript) приводит к тому, что все файловые системы, упомянутые в fstab (соответствующего типа и /или имеющие или не имеющие правильных параметров), монтируются, как указано, за исключением тех, чья строка содержит ключевое слово noauto. Добавление опции -F приведет к созданию вилки монтирования, так что файловые системы будут установлены одновременно.

Корневая файловая система специфична для каждой машины (обычно она хранится на локальном диске, хотя это мог бы быть ramdisk или сетевой диск) и содержит файлы, которые являются необходимыми для загрузки системы. Содержимого корневой файловой системы достаточно для загрузки в однопользовательском режиме. Именно эта файловая система используется при загрузке до тех пор, пока не будут смонтированы другие файловые системы. Она также содержит инструментальные средства для ремонта поврежденной системы и для восстановления потерянных файлов из резервных копий.

Файловая система /usr содержит все команды, библиотеки, man-страницы, исходные тексты и другие неизменяемые файлы, необходимые для нормальной работы системы. Никакие файлы в /usr не должны быть специфическими для любой конкретной машины, и при этом они не должны измениться при нормальном использовании. Это позволяет файлам быть разделенными по сети, что может быть практично, так как это сохраняет дисковое пространство (могут легко иметься сотни мегабайт в /usr) и упрощает администрирование (только машина, на которой хранится /usr, должна быть изменена при модификации прикладной программы, а не каждая машина отдельно). Даже если файловая система находится на локальном диске, она может быть установлена только для чтения, что уменьшит возможность искажения в случае отказа.

Файловая система /var содержит файлы, которые изменяются в ходе работы системы. Например, там лежат каталоги буферов для почты, новостей, печати и т.п., файлы протоколов, форматированных man-страниц и временные файлы.

Файловая система /home содержит все домашние каталоги пользователей системы, то есть, все реальные данные системы. Отделение пользовательских каталогов от системы упрощает резервирование данных. Если пользователей много, эта файловая система может быть разделена на несколько (например, /home/students и /home/teacher).

Хотя различные части выше были названы файловыми системами, это не значит, что они фактически находятся на отдельных дисках. Они могут храниться на одном диске, если речь идето небольшом сервере или личном однопользовательском компьютере. Дерево каталогов может быть также разделено по-другому, в зависимости от того, насколько большие диски использованы, и как распределено место на них для различных целей, тем не менее, важно, чтобы все стандартные имена работали; даже если, скажем, /var и /usr фактически на том же самом разделе, имена /usr/lib/libc.a и /var/log/messages должны работать, например, перемещая файлы из /var в /usr/var, и делая /var ссылкой на /usr/var.

Структура файловой системы в Unix группирует файлы по их назначению, то есть, все команды находятся в одном месте, все файлы данных в другом, документация в третьем и так далее. Альтернативный вариант группировал файлы согласно программе, которой они принадлежат, то есть, все Emacs-файлы были бы в одном каталоге, весь TeX в другом, и так далее. Проблема с последним подходом состоит в том, что это делает трудным совместно использовать файлы (каталог программ часто содержит статические, общие, изменяющиеся и личные файлы), и иногда даже находить файлы, например, man-страницы в огромном числе мест, благодаря чему поиск их программой просмотра сильно осложняется.

Корневая файловая система

Файловая система root должна быть небольших размеров, так как она содержит важные файлы и команды. Чем меньше объем файловой системы и чем реже она подлежит изменениям, тем меньше вероятность ее повреждения. Если система root повреждена, то обычно это означает, что начальная загрузка компьютера невозможна (кроме отдельных методов, например при помощи дискет).

Ниже приведено описание основных каталогов верхнего уровня.

Читайте также: