2.7.1.2 Монтирование устройств через systemd
Скачать документ Создание собственных модулей mount
Сетевые и съёмные диски
Примеры монтирования
Окружение
- Версия РЕД ОС: 7.3
- Конфигурация: Рабочая станция
Файл fstab – это текстовый файл, который содержит информацию о различных файловых системах и устройствах хранения информации на компьютере. Это единственный файл, определяющий, как диск и/или раздел будут использоваться и как будут встроены в остальную систему.
Данный файл можно открыть в любом текстовом редакторе, но редактировать его можно только от имени суперпользователя root, т.к. файл является важной, неотъемлемой частью системы, без которого система не загрузится.
Вы можете подробнее ознакомиться с возможностью монтирования новых устройств и файловых систем через systemd, просмотрев наши обучающие видео:
на RuTube — Настраиваем монтирование systemd вместо файла /etc/fstab;
в Яндекс.Дзен — Настраиваем монтирование systemd вместо файла /etc/fstab;
в VK Видео — Настраиваем монтирование systemd вместо файла /etc/fstab.
На наших каналах вы также сможете найти много другой полезной информации.
Для автоматического монтирования разделов при загрузке операционной системы их указывают в файле /etc/fstab, который выглядит следующим образом:
где:
1 — имя раздела (уникальный идентификатор);
2 — точка монтирования;
3 — тип файловой системы;
4 — опции монтирования;
5 — индикатор необходимости резервной копии;
6 — порядок проверки раздела утилитой fsck (0 – отключено).
В файле есть подсказка, что после его заполнения необходимо перезапустить конфигурацию systemd (командой systemctl daemon-reload
). Это означает, что файл на текущий момент является частью системной службы загрузки; systemd обрабатывает этот файл, чтобы создать модули для монтирования устройств.
Для отображения списка смонтированных устройств выполните команду:
mount
В ответе команды выведено довольно много устройств, большинство из них служебные.
С помощью команды systemctl | grep mount
выведите модули mount, используемые в systemd.
Среди выведенных модулей присутствуют файловые системы, которые описаны в файле /etc/fstab.
Для определения физического места расположения устройства выполните (в примере используется boot.mount):
systemctl cat boot.mount
# /run/systemd/generator/boot.mount
# Automatically generated by systemd-fstab-generator
[Unit]
Documentation=man:fstab(5) man:systemd-fstab-generator(8)
SourcePath=/etc/fstab
Requires=systemd-fsck@dev-disk-by\x2duuid-256bd628\x2dc56a\x2d4b53\x2dbc02\x2d601a3f18c4eb.service
After=systemd-fsck@dev-disk-by\x2duuid-256bd628\x2dc56a\x2d4b53\x2dbc02\x2d601a3f18c4eb.service
After=blockdev@dev-disk-by\x2duuid-256bd628\x2dc56a\x2d4b53\x2dbc02\x2d601a3f18c4eb.target
[Mount]
Where=/boot
What=/dev/disk/by-uuid/256bd628-c56a-4b53-bc02-601a3f18c4eb
Type=ext4
Такие модули находятся во временной папке /run, они генерируются во время загрузки. Один из комментариев в файле модуля сообщает о том, что файл сгенерирован автоматически службой systemd-fstab-generator.
Создание собственных модулей mount
Модули mount можно создавать самостоятельно. Далее будет рассмотрен способ создания нового модуля mount вручную.
Собственные модули типа mount следует располагать в каталоге /etc/systemd/system. Существуют специальные правила именования таких файлов: они должны содержать путь к точке монтирования, в которой все слэши (кроме начального) заменяются на дефис. Например, если точка монтирования /home/user/disk1, то имя файла модуля должно иметь следующий вид – home-user-disk1.mount. Если в пути к точке монтирования есть служебные символы, то для генерации имени модуля существует специальная команда:
systemd-escape -p "/home/user/*disk-sata" home-user-\x2adisk\x2dsata
В ответе команды видно, что специальные символы заменяются на набор символов \x2d.
Для создания нового модуля выполните:
nano /etc/systemd/system/home-user-disk1.mount
Модуль в своем описании должен содержать обязательную секцию [Mount]
, в которой указывается устройство и точка монтирования.
Минимальное содержимое модуля выглядит следующим образом:
[Unit]
Description=Новый диск
[Mount]
What=/dev/disk/by-uuid/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Where=/home/user/disk1
[Install]
WantedBy=multi-user.target
Секция [Unit]
содержит строку с описанием службы точки монтирования.
Секция [Install]
задает уровень запуска службы, например multi-user.target (для многопользовательского режима без графики) или graphical.target (для монтирования устройства при графическом входе в систему).
Секция [Mount]
описывает способ монтирования файловой системы.
Здесь параметр What= указывает путь к монтируемому устройству. Самый простой пример – /dev/sda1, но такой подход крайне не рекомендуется, т.к. при добавлении новых устройств имя может изменяться. Рекомендуется монтировать блочные устройства по UUID.
Параметр Where= указывает, куда будет производиться монтирование. Если указанной директории не существует, она будет создана.
Параметр Type= описывает тип файловой системы.
Параметр Options= указывает, какие параметры монтирования следует применить (перечисляются через запятую).
Параметр DirectoryMode= определяет режим доступа к файловой системе, используемый при создании этих каталогов. По умолчанию используется значение 0755.
Параметр TimeoutSec= настраивает время ожидания перед завершением выполнения команды монтирования. Если команда не завершится в течение заданного времени, монтирование будет считаться неудачным.
Т.к. монтировать устройства необходимо по UUID, уточнить его можно с помощью команды:
lsblk -f
После создания и сохранения файла модуля обновите конфигурацию systemd:
systemctl daemon-reload
Далее смонтируйте устройство:
systemctl start home-user-disk1.mount
После этого можно добавить точку монтирования в автозагрузку, для этого выполните команду:
systemctl enable home-user-disk1.mount
Сетевые и съёмные диски
Для подключения сетевых и съемных носителей необходимо использовать модуль автомонтирования.
Обратите внимание, что автомонтирование – не то же самое, что автоматический запуск модуля монтирования при загрузке системы.
Файл такого модуля формируется по тем же правилам, но с другим расширением – .automount. Данный модуль не содержит параметров монтирования и используется только в связке с mount-модулем, его имя формируется по тем же правилам. Например:
[Unit]
Description=Автомонтирование съемного диска
[Automount]
Where=/home/user/disk1
TimeoutIdleSec=900
[Install]
WantedBy=multi-user.target
Основная секция такого модуля – [Automount]
.
Обязательным параметром является Where=, который указывает на точку монтирования, а параметр TimeoutIdleSec настраивает время ожидания простоя в секундах, после которого файловая система будет отмонтирована.
По завершении создания модуля автомонтирования обновите конфигурацию systemd и запустите модуль:
systemctl daemon-reload systemctl start home-user-video.automount
После этого можно добавить точку монтирования в автозагрузку, для этого выполните команду:
systemctl enable home-user-video.automount
Примеры монтирования
Монтирование съемного диска
По аналогии с ранее приведенными действиями сначала будет создан модуль монтирования home-user-disk01:
[Unit]
Description=Монтирование съемного диска /home/user/disk01
[Mount]
What=/dev/disk/by-uuid/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Where=/home/user/disk01
Type=ntfs
Options=defaults
[Install]
WantedBy=multi-user.target
После этого необходимо создать одноименный модуль автомонтирования home-user-disk01.automount:
[Unit]
Description=Монтирование съемного диска /home/user/disk01
[Automount]
Where=/home/user/disk01
TimeoutIdleSec=300
[Install]
WantedBy=multi-user.target
Далее следует обновить конфигурацию systemd и добавить модуль автомонтирования в автозагрузку:
systemctl daemon-reload systemctl enable --now home-user-disk01.automount
Благодаря созданным модулям, указанное устройство будет смонтировано при первом к нему обращении. При неактивности в течение 300 сек (5 мин) устройство будет размонтировано.
Монтирование NFS
Далее будет рассмотрен пример с протоколом сетевого доступа к файловым системам (NFS).
Клиентская часть требует установки дополнительного пакета:
dnf install nfs-common
Для монтирования NFS-ресурса так же необходимо создать два модуля. Первый – модуль монтирования home-user-foto.mount:
[Unit]
Description= Монтирование NFS /home/user/foto
[Mount]
What=192.168.88.33:/media/nfs
Where=/home/user/foto
Type=nfs
Options=_netdev,auto
TimeoutSec=10
[Install]
WantedBy=multi-user.target
Второй – модуль автомонтирования home-user-foto.automount:
[Unit]
Description=Монтирование NFS /home/user/foto
[Automount]
Where=/home/user/foto
TimeoutIdleSec=300
[Install]
WantedBy=multi-user.target
Далее следует обновить конфигурацию systemd и добавить модуль автомонтирования в автозагрузку:
systemctl daemon-reload systemctl enable --now home-user-foto.automount
Дата последнего изменения: 11.09.2024
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.