Skip to content

Восстановление файловой системы Linux монтированием с сетевого хранилища после отказа жесткого диска

В современных серверных и десктоп-системах отказ жесткого диска может привести к критическим последствиям: система может перейти в режим read-only, не загрузиться, или потерять доступ к важным данным. Однако Linux предоставляет гибкие механизмы восстановления, включая возможность монтирования файловой системы с удалённого (сетевого) хранилища. Это позволяет временно или даже постоянно вывести систему из read-only режима и продолжить её работу.

Почему система переходит в read-only?

Файловая система может быть смонтирована в режиме read-only по нескольким причинам:

  • Обнаружены ошибки файловой системы (например, повреждение метаданных).
  • Сбой оборудования, особенно дискового (например, выход из строя HDD/SSD).
  • Ошибки при монтировании разделов на этапе загрузки.
  • Срабатывание защиты ядра (kernel panic или ошибка I/O).

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

Возможности восстановления

Если локальный диск вышел из строя, но данные были сохранены или доступны на сетевом хранилище (NAS, NFS, iSCSI, SMB и т.д.), можно попытаться загрузить систему, используя сетевую файловую систему. Это позволяет временно заменить поврежденный диск на сетевой ресурс и восстановить работоспособность системы.

Подготовка сетевого хранилища

Для восстановления необходимо, чтобы сетевое хранилище было доступно и содержало актуальную копию файловой системы. Это может быть:

  • NFS-шара с резервной копией корневой ФС.
  • iSCSI-диск, подключённый как блочное устройство.
  • SMB-ресурс, хотя он менее предпочтителен для корневой ФС из-за ограничений.

Доступ к сетевому хранилищу должен быть настроен до попытки монтирования. Это включает:

  • Настройку сетевого интерфейса.
  • Установку необходимых сетевых утилит (например, nfs-utils, open-iscsi).
  • Проверку подключения и доступности ресурса.

Монтирование файловой системы с сетевого хранилища

После загрузки в emergency mode или initramfs, пользователь может вручную выполнить следующие шаги:

  1. Настройка сети:
ip link set eth0 up
dhclient eth0
  1. Подключение сетевого хранилища:

  2. Для NFS:

mount -t nfs server:/exported/root /mnt
  • Для iSCSI:
iscsiadm -m discovery -t st -p <IP>
iscsiadm -m node -T <target> -p <IP> --login
  1. Проверка целостности файловой системы (если возможно):

Если диск доступен частично, можно попытаться выполнить fsck:

fsck /dev/sda1
  1. Монтирование сетевой ФС в /mnt или /sysroot: После подключения сетевого ресурса, его можно использовать как корневую файловую систему:
mount --bind /mnt /sysroot
  1. Переход в новую корневую ФС:

Используется команда chroot, чтобы продолжить работу внутри восстановленной системы:

chroot /sysroot
  1. Перемонтирование в режим read-write:

Если система всё ещё смонтирована как read-only, можно выполнить:

mount -o remount,rw /sysroot

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

Автоматизация загрузки с сетевого хранилища

Для постоянного использования сетевого хранилища вместо локального диска можно настроить:

  • Загрузку через PXE с initrd, который монтирует корневую ФС по NFS.

  • Использование iSCSI boot — загрузка напрямую с удалённого блочного устройства.

Эти методы требуют настройки BIOS/UEFI и сервера загрузки, но позволяют полностью отказаться от локального диска.

Возможные проблемы и их решение

1. Сетевой интерфейс не поднимается

  • Проверьте драйверы сетевой карты в initramfs.
  • Используйте ip link и dhclient для ручной настройки.

2. Недоступность сетевого хранилища

  • Убедитесь, что сервер NFS/iSCSI доступен.
  • Проверьте маршрутизацию и брандмауэр.

3. Отсутствие требуемых пакетов в initramfs

  • Пересоберите initramfs с модулями для NFS, iSCSI, etc.:
dracut --force --add "nfs" /boot/initramfs-$(uname -r).img $(uname -r)

4. Проблемы с chroot

  • Убедитесь, что все необходимые каталоги смонтированы (/dev, /proc, /run, /sys):
mount --bind /dev /sysroot/dev
mount --bind /proc /sysroot/proc
mount --bind /run /sysroot/run
mount --bind /sys /sysroot/sys

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