Необязательный диск задерживает загрузку: 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 2UUID здесь учебный: копировать его буквально нельзя. 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 и разберите типичные сбои сервиса — от занятого порта до переполненного диска.
