Автоматическое монтирование внешних накопителей в Linux

Представьте себе такую ситуацию. Вы подключили к системе внешний USB-накопитель или SSD и используете его в качестве дополнительного носителя информации. Это распространенный вариант использования, особенно если вы установили медиа-сервер на Raspberry Pi или любой другой Linux-системе.

В Linux, чтобы начать использовать внешний диск, обычно нужно нажать на опцию mount в проводнике файлов или использовать команду mount.

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

Хорошо, что вы можете решить эту проблему, обеспечив автоматическое монтирование внешнего диска.

В этом руководстве мы рассмотрим два популярных метода автоматического монтирования дисков в Linux:

  • Настройка файла fstab для начального монтирования.
  • Использование udev и autofs для более динамичных настроек

Давайте рассмотрим их по очереди.

Метод 1: автоматическое монтирование с помощью µµ0µµ при запуске

Если вы хотите, чтобы внешний диск автоматически монтировался при каждом запуске системы, вы можете настроить его с помощью fstab (Таблица файловых систем).

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

Шаги к автомонтированию через fstab:

  1. Сначала подключите USB-накопитель и выполните следующую команду, чтобы определить имя устройства и UUID:
    sudo blkid

    Найдите строку, соответствующую вашему внешнему накопителю. Например:
    /dev/sdb2: UUID="12ab345cd-1234-4166-8539-ff4ff3ff2ff1" TYPE="ntfs"

  2. Отредактируйте файл /etc/fstab в удобном для вас текстовом редакторе (вам понадобятся права суперпользователя):
    sudo nano /etc/fstab

    Добавьте следующую строку в конец файла:
    UUID=12ab345cd-1234-4166-8539-ff4ff3ff2ff1 /media/hdd auto defaults,nofail,x-systemd.automount 0 2

    Замените UUID на UUID вашего диска и настройте точку монтирования (/media/hdd) в соответствии с вашими требованиями.
  3. Перезагрузите systemd, чтобы применить изменения:
    sudo systemctl daemon-reload

    Затем перезагрузите систему, и диск должен автоматически смонтироваться в указанном месте.

    Этот же метод можно использовать, если вы используете систему с двойной загрузкой и хотите автоматически подключить раздел(ы) Windows.

Метод 2: автоматическое монтирование с помощью правил Udev и µµ2µµ

Если вы хотите, чтобы внешний диск монтировался только при подключении, правила udev и autofs обеспечивают динамический подход.

Этот метод больше подходит, если вы часто меняете USB-накопители местами или предпочитаете, чтобы они не монтировались при запуске.

Шаги по автоматическому монтированию с помощью udev и autofs:

  1. Создайте новый файл правил в каталоге /etc/udev/rules.d/:
    sudo nano /etc/udev/rules.d/usb_auto_mount.rules

    Добавьте следующее содержимое:
    ACTION=="add", KERNEL=="sd*", ENV{DEVTYPE}=="partition", ENV{ID_BUS}=="usb", \
        SYMLINK+="usbdisks/%k", MODE:="0660", \
        RUN+="/bin/ln -sf /media/hdd/%k /media/usb-sticks/%k"
    ACTION=="remove", KERNEL=="sd*", ENV{DEVTYPE}=="partition", ENV{ID_BUS}=="usb", \
        RUN+="/bin/rm /media/usb-sticks/%k"

    Разбивка:
    • ACTION=="add": Это правило срабатывает при добавлении нового устройства (например, USB).
    • KERNEL=="sd": Сопоставляет устройства, имя ядра которых начинается с «sd» (типично для дисков).
    • ENV{DEVTYPE}=="partition": Обеспечивает поиск только устройств с разделами.
    • ENV{ID_BUS}=="usb": Ограничивает это правило USB-устройствами.
    • <strong>SYMLINK+="usbdisks/%k"</strong>: Создает символическую ссылку в /dev/usbdisks/ для устройства. %k – это место для имени устройства, назначенного ядром.
    • MODE:="0660": Устанавливает разрешения на чтение и запись для пользователя и группы (но не для других).
    • <strong>RUN+="/bin/ln -sf /media/hdd/%k /media/usb-sticks/%k"</strong>: Создает символическую ссылку в /media/usb-sticks/, указывающую на /media/hdd/%k, где будет смонтирован диск.
    • ACTION=="remove": Это правило срабатывает при отключении USB-накопителя.
    • RUN+="/bin/rm /media/usb-sticks/%k": Удаляет символическую ссылку при отключении накопителя.
  2. После сохранения файла перезагрузите правила udev, чтобы применить изменения:
    sudo udevadm control --reload-rules
  3. Отредактируйте файл auto.master, чтобы указать autofs на монтирование USB-накопителя:
    sudo nano /etc/auto.master

    Добавьте следующую строку:
    /media/hdd /etc/auto_mount.usb --timeout=60

Затем создайте соответствующий файл automount map:

sudo nano /etc/auto_mount.usb

Добавьте это содержимое:

#!/bin/bash
fstype=$(/sbin/blkid -o value -s TYPE /dev/usbdisks/$)
if [ "${fstype}" = "vfat" ] ; then
  echo "-fstype=ntfs,sync,uid=0,gid=plugdev,umask=007 :/dev/usbdisks/${key}"
  exit 0
fi
exit 1

Разбивка:

  • <strong>fstype=$(/sbin/blkid -o value -s TYPE /dev/usbdisks/$)</strong>: Эта команда определяет тип файловой системы (например, FAT32, NTFS) USB-накопителя с помощью команды blkid.
  • <strong>if [ "${fstype}" = "ntfs" ]</strong>: Проверяет, является ли файловая система ntfs распространенным типом файловой системы, используемым Windows.
  • echo "-fstype=ntfs,sync,uid=0,gid=plugdev,umask=007 :/dev/usbdisks/${key}": Монтирует накопитель с определенными параметрами: <strong>fstype=vfat</strong>: Монтировать его как vfat файловую систему.
  • sync: Обеспечивает немедленную запись данных на диск, а не их кэширование.uid=0,gid=plugdev: Устанавливает владельца на root (uid 0) и группу на plugdev (обычная группа для USB-устройств).
  • umask=007: Устанавливает разрешения для файлов и каталогов таким образом, чтобы доступ к ним имели только владелец и группа.

Сохранить и выйти из файла.

Теперь диск будет автоматически монтироваться в /media/hdd/ при подключении и размонтироваться через 60 секунд бездействия.

Советы по автоматическому монтированию внешних накопителей

  • Используйте UUID: При использовании fstab всегда отдавайте предпочтение UUID, а не идентификаторам /dev/sdX, поскольку они остаются неизменными при перезагрузке.
  • Проверьте поддержку файловой системы: Убедитесь, что ваша система поддерживает файловую систему вашего USB-накопителя (например, установите ntfs-3g для дисков NTFS).
  • Тестируйте изменения: Всегда проверяйте изменения конфигурации после их настройки, чтобы убедиться, что накопитель монтируется правильно. Использование journalctl поможет диагностировать любые проблемы.

Заключение

Автоматическое монтирование дисков может значительно упростить ваш рабочий процесс. В этом я убедился на личном опыте.

Несколько дней назад, настраивая внешний диск как часть моего DIY NAS (Network Attached Storage) на Raspberry Pi, я столкнулся с досадной проблемой.

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

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

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

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

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

Зарубин Иван Эксперт по Linux и Windows

Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.

Похожие статьи

Комментарии (0)

Опубликовать