Главная » Linux Ubuntu/Mint » Работа с дисками в Linux Ubuntu/Mint » Методы монтирования дисков в Linux

📑 Методы монтирования дисков в Linux

Тем, кто использует Linux в качестве основной операционной системы, необходимо ознакомится с концепцией монтирования дисков. Это связано с файловой системой Linux и тем, как она обрабатывает доступ к диску. Например, Windows обрабатывает диск как независимый блок, назначая букву диска для каждого диска или общего сетевого ресурса. Есть диск C и диск D: они обрабатываются как совершенно разные сущности. Но Linux интегрирует каждый диск и сетевой ресурс в свою файловую систему с помощью процесса, называемого монтированием.

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

Базоваая команда монтирования

Самым простым, базовым методом является использование команды mount:

$ sudo mkdir /mnt/media
$ sudo mount 192.168.68.116:/mnt/storage/media /mnt/media

Сначала мы создаем папку, в которую хотим смонтировать ресурс (диск или сетевую папку, в данном случае это сетевая папка NFS), а затем запускаем команду mount. Обе команды должны выполняться от имени администратора, потому что они настраивают корневую файловую систему Linux. Если у вас на локальном компьютере есть дополнительный HDD или SSD, который мы хотим смонтировать, команда будет выглядеть так:

$ sudo mount /dev/sdb1 /mnt/media

Использование файла /etc/fstab

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

Файл находится в /etc/fstab и выглядит примерно так:

#
# /etc/fstab
# Created by anaconda on Sat Jan 1 03:57:29 2022
#

UUID=... / btrfs subvol=root,compress=zstd:1 0 0
UUID=... /boot ext4 defaults 1 2
UUID=... /boot/efi vfat umask=0077,shortname=winnt 0 2
UUID=... /home btrfs subvol=home,compress=zstd:1 0 0

У вас есть идентификатор UUID диска, место монтирования (/home), тип файловой системы (btrfs, ext4,…) и некоторые параметры монтирования. Мы можем добавить здесь внизу новую строку для нашей сетевой папки NFS. У него нет UUID в качестве идентификатора, но есть локатор ресурса 192.168.68.116:/mnt/storage/media. Точкой монтирования будет /mnt/media, как и раньше, а файловая система — NFS. Здесь мы можем назначить параметры монтирования, поэтому мы будем использовать rw для монтирования для чтения и записи. Вот как будет выглядеть файл /etc/fstab:

#
# /etc/fstab
# Created by anaconda on Sat Jan 1 03:57:29 2022
#

UUID=... / btrfs subvol=root,compress=zstd:1 0 0
UUID=... /boot ext4 defaults 1 2
UUID=... /boot/efi vfat umask=0077,shortname=winnt 0 2
UUID=... /home btrfs subvol=home,compress=zstd:1 0 0
192.168.68.116:/mnt/storage/media /mnt/media nfs rw

Если есть дополнительный HDD или SSD диск отформатированный в формате ext4, файл будет выглядеть примерно так:

#
# /etc/fstab
# Created by anaconda on Sat Jan 1 03:57:29 2022
#

UUID=... / btrfs subvol=root,compress=zstd:1 0 0
UUID=... /boot ext4 defaults 1 2
UUID=... /boot/efi vfat umask=0077,shortname=winnt 0 2
UUID=... /home btrfs subvol=home,compress=zstd:1 0 0
/dev/sdb1 /mnt/media ext4 defaults 1 2

Automount (Автоматическое монтирование, автомонтирование)

И команда mount, и файл fstab будут монтировать диски и оставлять их подключенными до тех пор, пока явно не будет указано размонтировать с помощью команды umount. Но есть другой вид монтирования, который делает это по запросу, то есть он монтирует ресурс, когда это необходимо, а затем после простоя ресурс автоматически размонтируется. Это называется автомонтирование.

Конфигурация автомонтирования выполняется с использованием иерархии файлов конфигурации. Подобно дереву, мы настраиваем корень, а затем настраиваем ветви, подветви. После того, как мы передаем список ресурсов монтирования для автоматического монтирования, система позаботится как о монтировании при доступе, так и о размонтировании при простое. Сначала должна быть установлена программа автомонтирования — autofs. Она есть в стандартных репозиториях всех Linux-систем. Для Linux Ubuntu/Mint:

$ sudo apt install autofs
$ sudo systemctl enable autofs

У Automount есть основной файл конфигурации, расположенный в /etc/auto.master, куда мы помещаем корневые папки наших монтирований:

/mnt /etc/mnt.autofs --timeout=40

Все записи монтирования в /etc/mnt.autofs будут монтированы в /mnt с таймаутом размонтирования 40 минут. А теперь в /etc/mnt.autofs добавляем:

media -fstype:nfs 192.168.68.116:/mnt/media

Эта конфигурация вместе с auto.master указывает automount монтировать общий ресурс NFS, расположенный по адресу 192.168.68.116:/mnt/storage/media, в подпапку media папки /mnt, то есть в основном в /mnt/media.

Теперь, когда автомонтирование настроено, нам нужно перезапустить службу autofs:

$ sudo systemctl restart autofs

И если мы получим доступ к папке /mnt/media, выполнив простую команду

$ ls /mnt/media

automount сработает и выполнит операцию монтирования за нас. Кроме того, через 40 минут /mnt/media будет автоматически размонтирован.

Монтирование через systemd

Systemd также имеет возможность выполнять как обычное, так и автоматическое монтирование. Это позволяет нам намного лучше определять условия монтирования и создавать сложные деревья зависимостей модулей systemd, которые включают точки монтирования.

Если мы хотим смонтировать /mnt/media, нам нужно создать файл mnt-media.mount в /etc/systemd/system и поместить туда описание монтирования:

[Unit]
Description=Media network share

[Mount]
What=192.168.68.116:/mnt/storage/media
Where=/mnt/media
Type=nfs
Options=rw

[Install]
WantedBy=multi-user.target

Описание монтирования содержит те же знакомые элементы: место монтирования, общий ресурс NFS, тип монтирования и параметры монтирования. Теперь нам просто нужно включить эту службу монтирования systemd:

$ sudo systemctl enable mnt-media.mount
$ sudo systemctl start mnt-media.mount

Теперь, когда точка монтирования определена как служба systemd, если мы добавим еще один файл mnt-media.automount, точка монтирования /mnt/media станет автоматическим, с монтированием по запросу и размонтированием в режиме ожидания, и все это полностью управляется systemd. Вот как должен выглядеть файл mnt-media.automount:

Description=Automount for the Media network share

[Automount]
Where=/mnt/media

[Install]
WantedBy=multi-user.target

Обратите внимание, что в приведенном выше описании нет типа монтирования и другой информации о монтировании, поскольку они уже предоставлены mnt-media.mount. Теперь мы можем включить автомонтирование:

$ sudo systemctl enable mnt-media.automount
$ sudo start mnt-media.automount

Виртуальная файловая система Gnome

Есть еще один довольно своеобразный вариант крепления. Все вышеперечисленные методы монтирования работали напрямую с корневой файловой системой Linux и требовали привилегий root для выполнения. Виртуальная файловая система Gnome или GVFS (есть что-то подобное для KDE) работает полностью в пользовательском пространстве. Его основная команда — gio, которая имеет опции монтирования и размонтирования.

Он используется средой Gnome для обработки томов USB, которые случайно подключаются или извлекаются из системы, оптических дисков и сетевых ресурсов. Например, если вы определяете доступные для обнаружения сетевые ресурсы на сетевом сервере, все они будут отображаться в файлах Gnome в области «Другие местоположения». Например, если вы щелкнете там по общему ресурсу SMB, он будет автоматически смонтирован в GVFS без необходимости вводить пароль администратора.

Место монтирования определяется автоматически по типу монтирования, но все они помещаются в папку /run/user/[UID]/gvfs. Об этой виртуальной файловой системе будет отдельная статья.

Монтирование общих ресурсов SSHFS

Общеизвестно, что SSH это протокол, который позволяет нам подключаться к удаленной машине и выполнять команды, как если бы мы находились перед ней. SSH обычно предварительно устанавливается и предварительно настраивается на типичном дистрибутиве сервера Linux, таком как Fedora Server или Ubuntu Server. Но наряду с SSH появляется секретный компонент, о котором мало кто знает и еще меньше использует: SSHFS, протокол, который позволяет нам подключаться к удаленному компьютеру через SSH и монтировать его файловую систему в локальной папке.

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

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

Более подробно работа с SSHFS описана в статье «Монтирование удаленной папки с помощью sshfs«.

SSHFS также работает в Windows с помощью SSHFS-Win, и да, он работает на мобильных телефонах: в Solid Explorer есть специальная опция для SSHFS, которая называется SFTP. После выполнения вышеуказанных команд SSHFS перейдет к типичному приглашению входа в систему SSH для пользователя домашнего администратора. Мы просто вводим пароль, и папка монтируется в нашу локальную файловую систему.

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

 

При перепечатке просьба вставлять активные ссылки на oslogic.ru
Copyright oslogic.ru © 2024 . All Rights Reserved.