Необязательный диск задерживает загрузку: UUID и nofail в fstab

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

Установить стабильную идентичность

lsblk -f
findmnt --fstab -o SOURCE,TARGET,FSTYPE,OPTIONS
blkid /dev/sdb1

Имена /dev/sdb1 могут меняться при другом порядке обнаружения устройств. Для fstab обычно используют UUID файловой системы. Сверьте UUID с реальным томом, размером и назначением. Если диск клонировали поблочно, возможны одинаковые UUID: одну лишь строку идентификатора нельзя считать достаточной проверкой устройства.

Описать необязательность явно

UUID=11111111-2222-3333-4444-555555555555 /srv/archive ext4 defaults,nofail,x-systemd.device-timeout=10s 0 2

UUID здесь учебный: копировать его буквально нельзя. nofail указывает, что отсутствие подключения не должно делать загрузку зависящего target обязательной неудачей. x-systemd.device-timeout ограничивает ожидание устройства в сценарии генерации mounts через systemd. Это не настройка времени выполнения всей операции mount и не срок ожидания каждого обращения к диску.

Поля fstab описаны в справке. Для корневого раздела, обязательной базы или каталога состояния такая политика требует другого решения. Нельзя добавлять nofail ко всем строкам, чтобы убрать красные сообщения загрузки.

Проверить синтаксис до перезапуска

findmnt --verify --verbose
systemctl daemon-reload
systemctl status srv-archive.mount

Проверка findmnt помогает найти ошибки записи, но не воспроизводит будущую загрузку с отсутствующим диском. daemon-reload нужен systemd после изменения fstab. Имя mount-unit зависит от экранирования пути; для /srv/archive получается srv-archive.mount. Если путь сложнее, используйте systemd-escape --path --suffix=mount.

Не проверяйте конфигурацию через слепой mount -a на занятом сервере: команда затрагивает все подходящие записи таблицы. Для испытания выберите конкретный том и согласованное окно. Сохраните прежнюю строку и возможность доступа через консоль, если тестируете поведение загрузки.

Защитить задание от записи не туда

Когда диск отсутствует, /srv/archive может остаться обычным каталогом на корневой файловой системе. Архиватор не должен заполнить её своими результатами. Для его systemd-службы задайте RequiresMountsFor=/srv/archive и протестируйте запуск с подключённым и отсутствующим устройством. Проверка существования каталога недостаточна.

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

Посмотрите программу Linux и Bash для DevOps-инженеров. Работа с дисками, systemd и журналами поможет отработать такие зависимости на учебном сервере и проверять отказ ресурса до реального обслуживания.

Ещё по теме

Продолжить на практике

  • Linux и Bash для DevOps-инженеров ↗

    Linux для работы с серверами: процессы, права, systemd, сеть, диски и логи. Автоматизируйте повседневные задачи на Bash и разберите типичные сбои сервиса — от занятого порта до переполненного диска.