Монтирование — это подключение диска, раздела, каталога или файла в корневую систему Linux.

Как уже сказано было выше, в ОС «Линукс» имеется общая корневая система. Именно к ней подключаются все устройства и ресурсы, которыми пользуется владелец ПК. Если углубиться в эту сферу более подробно, Windows выполняет процедуры аналогично, но все процесс скрыты от пользователя.

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

1. Описание утилиты.

Mount — утилита командной строки в UNIX-подобных операционных системах. Применяется для монтирования файловых систем.

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

Например, вы хотите примонтировать флешку. Вы даете системе команду подключить ее в папку /run/media/имя_пользователя/UUID_флешки/. Система определяет файловую систему устройства, а затем, используя драйвера ядра подключает ее к указанной папке. Дальше вам остается работать с той папкой, как с любой другой. Больше ни о чем думать не нужно. Когда надумаете извлечь флешку, ее нужно отмонтировать.

2. Общий синтаксис.

Для монтирования в CentOS 7 используется команда mount.

Рассмотрим ее параметры:

# mount /файл_устройства /папка_назначения

Или расширенный вариант:

# mount опции -t файловая_система -o опции_монтирования /файл_устройства /папка_назначения

Опции задают различные дополнительные особенности работы утилиты. Опция -t необязательна, но она позволяет задать файловую систему, которая будет использована и иногда это очень полезно. С помощью опции -o вы можете задать различные параметры монтирования, например, монтировать только для чтения и так далее. Последних два параметра — это файл устройства, например, /dev/sda1 и папка назначения, например, /mnt.

Перед тем как перейти к рассмотрению примеров работы утилитой, давайте рассмотрим ее основные опции:

  • -V — вывести версию утилиты;
  • -h — вывести справку;
  • -v — подробный режим;
  • -a, —all — примонтировать все устройства, описанные в fstab;
  • -F, —fork — создавать отдельный экземпляр mount для каждого отдельного раздела;
  • -f, —fake — не выполнять никаких действий, а только посмотреть что собирается делать утилита;
  • -n, —no-mtab — не записывать данные о монтировании в /etc/mtab;
  • -l, —show-labels — добавить метку диска к точке монтирования;
  • -c — использовать только абсолютные пути;
  • -r, —read-only — монтировать раздел только для чтения;
  • -w, —rw — монтировать для чтения и записи;
  • -L, —label — монтировать раздел по метке;
  • -U, —uuid — монтировать раздел по UUID;
  • -T, —fstab — использовать альтернативный fstab;
  • -B, —bind — монтировать локальную папку;
  • -R, —rbind — перемонтировать локальную папку.

Вывод списка смонтированных файловых систем(ФС)

При выполнении без аргументов команда mount выведет все подключенные в данный момент ФС:

$ mount

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

имя_устройства on директория type тип_файловой_системы (опции)

Для отображения только ФС определенного типа используется опция -t. Например, так можно отобразить только разделы ext4:

$mount -t ext4

Монтирование файловой системы

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

mount [опции…] имя_устройства директория

После подключения точка монтирования становится корневой директорией смонтированной ФС. Например, смонтировать жесткий диск /dev/sdb1 в директорию /mnt/media можно следующим образом:

$ sudo mount /dev/sdb1 /mnt/media

Обычно при монтировании устройства с распространенной ФС, например, ext4 или xfs, команда mount автоматически определяет ее тип. Однако, некоторые ФС не распознаются. Их тип нужно указывать в явном виде. Для этого используется опция -t:

mount -t тип имя_устройства директория

Чтобы указать дополнительные опции монтирования, используется флаг -o:

mount -o опции_монтирования имя_устройства директория

Можно указать несколько опций, разделенных запятыми (после запятых не должно быть пробелов). Ниже предоставлены основные опции команды

-V — вывести версию утилиты;
-h — вывести справку;
-v — подробный режим;
-a, —all — примонтировать все устройства, описанные в fstab;
-F, —fork — создавать отдельный экземпляр mount для каждого отдельного раздела;
-f, —fake — не выполнять никаких действий, а только посмотреть что собирается делать утилита;
-n, —no-mtab — не записывать данные о монтировании в /etc/mtab;
-l, —show-labels — добавить метку диска к точке монтирования;
-c — использовать только абсолютные пути;
-r, —read-only — монтировать раздел только для чтения;
-w, —rw — монтировать для чтения и записи;
-L, —label — монтировать раздел по метке;
-U, —uuid — монтировать раздел по UUID;
-T, —fstab — использовать альтернативный fstab;
-B, —bind — монтировать локальную папку;
-R, —rbind — перемонтировать локальную папку.

Полный список опций можно получить, выполнив команду man mount.

Монтирование разделов с помощью mount

Монтирование разделов с помощью mount выполняется очень просто. Фактически в большинстве случаев будет достаточно упрощенной версии команды. Например, смонтируем раздел /dev/sdb6 в папку /mnt:

sudo mount /dev/sdb6 /mnt/

В большинстве случаев вы будете вынуждены выполнять команду mount с правами суперпользователя, если обратное не указано в fstab (опция монтирования users). Вы можете посмотреть информацию о процессе монтирования добавив опцию -v:

sudo mount -v /dev/sdb6 /mnt/

Если нужно, вы можете указать файловую систему с помощью опции -t:

sudo mount -v -t ext4 /dev/sdb6 /mnt

Если необходимо примонтировать файловую систему только для чтения, то вы можете использовать опцию -r или опцию монтирования -o ro, результат будет одинаковым:

sudo mount -t ext4 -r /dev/sdb6 /mnt
$ sudo mount -t ext4 -o ro /dev/sdb6 /mnt

Вы можете использовать и другие опции чтобы выполнить монтирование разделов linux, например, указать, что на этом разделе нельзя выполнять программы:

sudo mount -t ext4 -o noexec /dev/sdb6 /mnt

Обратите внимание, что вы не можете использовать опции uid, gid, fmask для файловых систем ext. Они поддерживаются только в FAT, vFAT, exFAT.

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

sudo mount —uuid=»b386d309-05c1-42c8-8364-8d37270b69e0″ /mnt

Посмотреть uuid для ваших разделов можно с помощью команды:

sudu blkid

Точно так же вы можете использовать метки. Команда монтирования диска linux будет выглядеть так:

sudo mount —label=»home» /mnt/

Вы можете примонтировать одну папку в другую, для этого используйте опцию —bind

sudo mount —bind /mnt/ /media/

Возможно, не только монтирование разделов linux, но и монтирование файлов, если они содержат файловую систему, например, образов дисков. Монтирование образа диска linux работает точно так же:

sudo mount ~/file.iso /mnt

Посмотреть список всех примонтированных устройств можно просто выполнив mount без параметров:

mount

4. Список смонтированного.

Посмотреть список всех примонтированных устройств можно просто выполнив mount без параметров:

# mount

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

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

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

Монтирование USB-накопителя/жесткого диска

В большинстве современных дистрибутивов Linux, например, Ubuntu, USB-накопители автоматически монтируются при подключении, но иногда может потребоваться ручное монтирование устройства. Чтобы смонтировать USB-накопитель, выполните следующие действия.

Создайте точку монтирования

sudo mkdir -p /media/usb

Если USB-накопитель использует устройство /dev/sdd1, его можно смонтировать в директорию /media/usb следующей командой:

sudo mount /dev/sdd1 /media/usb

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

  • fdisk -l
  • ls -l /dev/disk/by-id/usb*
  • dmesg
  • lsblk

Монтирование файлов ISO

Для монтирования файла ISO используется петлевое (loop) устройство — специальное виртуальное устройство, которое позволяет осуществлять доступ к файлу как к блочному устройству.

Сначала нужно создать точку монтирования в любой желаемой директории:

sudo mkdir /media/iso

Смонтируйте файл ISO следующей командой:

sudo mount /path/to/image.iso /mnt/iso -o loop

Не забудьте заменить /path/to/image.iso на путь к вашему файлу ISO.

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

Для монтирования системы NFS требуется установить клиент NFS. Установка клиента NFS в Ubuntu и Debian:

sudo apt install nfs-common

Установка клиента NFS в CentOS и Fedora:

sudo yum install nfs-utils

Создайте директорию, которая будет точкой монтирования удаленной файловой системы:

sudo mkdir /media/nfs

Обычно требуется автоматическое монтирование удаленной директории NFS при загрузке. Для этого нужно изменить файл конфигурации /etc/fstab. Откройте его в любом текстовом редакторе, например:

sudo nano /etc/fstab

Добавьте в файл следующую строку, заменив сервер:/директория на имя или IP-адрес сервера NFS и экспортируемую директорию:

#       

             сервер:/директория    /media/nfs nfs      defaults    0       0

Смонтируйте ресурс NFS следующей командой:

sudo mount /mnt/nfs

или

sudo mount -a

5. Размонтирование разделов.

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

Например:

# sudo umount /mnt

Теперь ваше устройство не смонтировано, но иногда может возникнуть ошибка размонтирования.

Система сообщит, что устройство занято:

umount: /mnt: target is busy.

Проблему можно решить закрыв все программы, которые могут использовать любой файл в этой папке. Какие именно это программы вы можете узнать с помощью команды lsof:

# lsof -w /mnt
# lsof -w /dev/sdb6

Здесь вы видите всю необходимую информацию, чтобы понять что происходит и что с этим делать. Утилита вывела название программы, ее PID, и даже файл, с которым она работает. Вы можете завершить все программы, а потом снова повторить попытку или используйте опцию -l, файловая система будет отключена немедленно, несмотря на то, что она занята:

# sudo umount -l /mnt

Пользовательские пространства имен

В листинге 1 приведена часть кода модуля PAM (pluggable authentication module, подключаемого модуля авторизации), который предоставляет каждому пользователю, кроме root, обособленное пространство имен. Если директория /tmp/priv/USER существует, то она будет смонтирована с помощью bind на директорию /tmp в пользовательском пространстве имен.

Каждому пользователю — свой root

Настройка системы для организации отдельных каталогов root для каждого пользователя

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

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

[spoiler title=»Источники»]

  • https://www.vseprolinux.ru/mount
  • https://hamsterden.ru/mount-umount/
  • https://ITProffi.ru/podklyuchenie-fajlovyh-sistem-komanda-mount-v-linux/
  • https://losst.ru/montirovanie-diska-v-linux
  • https://www.ibm.com/developerworks/ru/library/l-mount-namespaces/index.html
[/spoiler]