Red Hat System Administration I 8.2

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

Задачи

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

Монтирование файловых систем вручную

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

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

  • с помощью имени файла устройства в каталоге /dev, содержащем файловую систему;

  • с помощью UUID (универсального уникального идентификатора), записанного в файловой системе.

Процедура монтирования устройства относительно проста. Необходимо идентифицировать монтируемое устройство, убедиться в наличии точки монтирования и смонтировать в нее устройство.

Идентификация блочного устройства

Запоминающие устройства с поддержкой горячего подключения (жесткий диск (HDD) или твердотельный накопитель (SSD) в контейнере сервера, USB-накопитель) могут каждый раз подключаться к разным портам в системе.

Используйте команду lsblk для отображения сведений об указанном блочном устройстве или всех доступных устройствах.

[root@host ~]# lsblk
NAME                      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
vda                       253:0    0   12G  0 disk
├─vda1                    253:1    0    1G  0 part /boot
├─vda2                    253:2    0    1G  0 part [SWAP]
└─vda3                    253:3    0   11G  0 part /
vdb                       253:16   0   64G  0 disk
└─vdb1                    253:17   0   64G  0 part

Если вы знаете, что только что добавили запоминающее устройство на 64 ГБ с одним разделом, то по предыдущему выводу можно догадаться, что /dev/vdb1 — это раздел, который необходимо смонтировать.

Монтирование по имени блочного устройства

В следующем примере файловая система монтируется в раздел /dev/vdb1, каталог /mnt/data.

[root@host ~]# mount /dev/vdb1 /mnt/data

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

Используйте каталог /mnt или (что еще лучше) создайте в каталоге /mnt подкаталог и используйте его в качестве временной точки монтирования, если у вас нет веских причин монтировать файловую систему в определенное место в иерархии файловой системы.

Важно

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

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

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

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

Команда lsblk -fp отображает полный путь к устройству, идентификаторы UUID и точки монтирования, а также тип файловой системы в разделе. Если файловая система не смонтирована, поле точки монтирования будет пустым.

[root@host ~]# lsblk -fp
NAME        FSTYPE LABEL UUID                                 MOUNTPOINT
/dev/vda                                                      
├─/dev/vda1 xfs          23ea8803-a396-494a-8e95-1538a53b821c /boot
├─/dev/vda2 swap         cdf61ded-534c-4bd6-b458-cab18b1a72ea [SWAP]
└─/dev/vda3 xfs          44330f15-2f9d-4745-ae2e-20844f22762d /
/dev/vdb
└─/dev/vdb1 xfs          46f543fd-78c9-4526-a857-244811be2d88

Смонтируйте файловую систему по ее UUID.

[root@host ~]# mount UUID="46f543fd-78c9-4526-a857-244811be2d88" /mnt/data

Автоматическое монтирование съемных запоминающих устройств

Если вы вошли в систему и используете графическую среду рабочего стола, она будет автоматически монтировать все подключаемые съемные носители.

Съемное запоминающее устройство монтируется в каталог /run/media/USERNAME/LABEL, где USERNAME — это имя пользователя, вошедшего в графическую среду, а LABEL — идентификатор (часто это имя, данное файловой системе при создании, если оно доступно).

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

Размонтирование файловых систем

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

Предупреждение

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

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

[root@host ~]# umount /mnt/data

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

В примере ниже команда umount завершается ошибкой, поскольку файловая система используется (командная оболочка использует /mnt/data в качестве текущего рабочего каталога).

[root@host ~]# cd /mnt/data
[root@host data]# umount /mnt/data
umount: /mnt/data: target is busy.

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

[root@host data]# lsof /mnt/data
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
bash    1593 root  cwd    DIR 253,17        6  128 /mnt/data
lsof    2532 root  cwd    DIR 253,17       19  128 /mnt/data
lsof    2533 root  cwd    DIR 253,17       19  128 /mnt/data

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

[root@host data]# cd
[root@host ~]# umount /mnt/data

Примечание

Часто файловые системы не удается размонтировать из-за того, что оболочка Bash использует точку монтирования или подкаталог в качестве текущего рабочего каталога. Чтобы решить эту проблему, используйте команду cd для выхода из файловой системы.

Ссылки

Man-страницы lsblk(8), mount(8), umount(8) и lsof(8)