После завершения этого раздела вы сможете обращаться к содержимому файловых систем, добавляя их в иерархию файловых систем и удаляя из нее.
Для доступа к файловой системе на съемном запоминающем устройстве необходимо смонтировать ее вручную. Команда mount позволяет пользователю root вручную смонтировать файловую систему. Первый аргумент команды mount указывает монтируемую файловую систему. Второй аргумент указывает каталог, который должен использоваться в качестве точки монтирования в иерархии файловой системы.
root
Есть два распространенных способа указать в команде mount файловую систему на разделе диска:
с помощью имени файла устройства в каталоге /dev, содержащем файловую систему;
/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
[root@host ~]#
lsblk
Если вы знаете, что только что добавили запоминающее устройство на 64 ГБ с одним разделом, то по предыдущему выводу можно догадаться, что /dev/vdb1 — это раздел, который необходимо смонтировать.
/dev/vdb1
Монтирование по имени блочного устройства
В следующем примере файловая система монтируется в раздел /dev/vdb1, каталог /mnt/data.
/mnt/data
[root@host ~]# mount /dev/vdb1 /mnt/data
mount /dev/vdb1 /mnt/data
Чтобы можно было смонтировать файловую систему, целевой каталог должен уже существовать. Каталог /mnt существует по умолчанию и предназначен для использования в качестве временной точки монтирования.
/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
lsblk -fp
Смонтируйте файловую систему по ее UUID.
[root@host ~]# mount UUID="46f543fd-78c9-4526-a857-244811be2d88" /mnt/data
mount UUID="46f543fd-78c9-4526-a857-244811be2d88" /mnt/data
Если вы вошли в систему и используете графическую среду рабочего стола, она будет автоматически монтировать все подключаемые съемные носители.
Съемное запоминающее устройство монтируется в каталог /run/media/USERNAME/LABEL, где USERNAME — это имя пользователя, вошедшего в графическую среду, а LABEL — идентификатор (часто это имя, данное файловой системе при создании, если оно доступно).
/run/media/USERNAME/LABEL
USERNAME
LABEL
Прежде чем удалять устройство, необходимо размонтировать его вручную.
Процедуры завершения работы и перезагрузки автоматически размонтируют все файловые системы. В рамках этого процесса все данные файловой системы, кэшированные в памяти, сбрасываются на запоминающее устройство, что предотвращает повреждение данных файловой системы.
Данные файловой системы часто кэшируются в памяти. Поэтому, чтобы избежать повреждения данных на диске, важно размонтировать съемные диски перед их отключением. Процедура размонтирования синхронизирует данные перед освобождением диска, обеспечивая целостность данных.
Чтобы размонтировать файловую систему, необходимо указать точку монтирования в качестве аргумента команды umount.
[root@host ~]# umount /mnt/data
umount /mnt/data
Размонтирование невозможно, если смонтированная файловая система используется. Для успешного выполнения команды umount все процессы должны перестать обращаться к данным в точке монтирования.
В примере ниже команда umount завершается ошибкой, поскольку файловая система используется (командная оболочка использует /mnt/data в качестве текущего рабочего каталога).
[root@host ~]# cd /mnt/data [root@host data]# umount /mnt/data umount: /mnt/data: target is busy.
cd /mnt/data
[root@host data]#
Команда 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
lsof /mnt/data
После выявления процессов можно принять соответствующие меры, например дождаться завершения процесса либо отправить ему сигнал SIGTERM или SIGKILL. В этом случае достаточно изменить текущий рабочий каталог на каталог вне точки монтирования.
SIGTERM
SIGKILL
[root@host data]# cd [root@host ~]# umount /mnt/data
cd
Часто файловые системы не удается размонтировать из-за того, что оболочка Bash использует точку монтирования или подкаталог в качестве текущего рабочего каталога. Чтобы решить эту проблему, используйте команду cd для выхода из файловой системы.
Man-страницы lsblk(8), mount(8), umount(8) и lsof(8)
mount
umount
lsof