Когда на моём Proxmox Backup Server перестало открываться хранилище, я столкнулся сразу с двумя проблемами: неактивным RAID6 на HDD и ошибками файловой системы на системном SSD.
Ниже я разберу, как проверял диски, собирал существующий массив и возвращал доступ к резервным копиям. По ходу объясню команды, которые пришлось использовать: без понимания их назначения в такой ситуации легко начать исправлять совсем не тот диск.
Результат у этой истории промежуточный. Доступ к каталогам резервных копий я получил, журнал ext4 восстановил, но спустя некоторое время системный том снова начал выдавать ошибки. Поэтому это разбор диагностики и частичного восстановления, а не история о полностью починенном сервере.
Сервер назывался
Для начала я разделил четыре понятия, которые постоянно встречались в выводе команд:
Ещё в системе использовался LVM. Он представлял системный раздел как логический том
На момент проверки диски распределялись так:
Начал с просмотра конфигурации:
Команда
В
Я проверил группы LVM, таблицу монтирования и исходное состояние массива.
На этом этапе стало понятно, что нужно разбираться с Linux MD. Создание нового пула ZFS или форматирование дисков к моей задаче отношения не имели.
Для начала запросил сведения о массиве, затем прочитал метаданные дисков:
У этих команд разные задачи.
Метаданные можно представить как служебную запись на диске: к какому массиву он относится, какую позицию занимал и с какими параметрами работал.
В исходном состоянии mdadm обнаружил пять устройств, но массив оставался неактивным.
Я сопоставил UUID массива, роли дисков, счётчики событий и контрольные суммы. На доступных участниках UUID совпадал:
В проверенных суперблоках были
Всего в конфигурации предусматривалось шесть участников. Я обнаружил роли 0, 1, 2, 3 и 5; позиция 4 отсутствовала.
Я сопоставил метаданные доступных участников. Одинаковые параметры позволили перейти к сборке существующего массива.
Запись
Моей первой задачей было посмотреть, сохранилось ли содержимое хранилища. Поэтому существующий неактивный массив я остановил и собрал в режиме только для чтения:
Здесь
Эту последовательность я использовал для своего неактивного массива после проверки участников. Останавливать работающий массив с подключёнными файловыми системами ради повторения примера не нужно.
В ответ я получил:
В состоянии массива появились
Она означала: предусмотрено шесть участников, доступны пять, одна позиция отсутствует. Массив запустился, но остался деградированным. Полный состав я не восстановил.
Я получил доступ к существующему RAID6 на пяти дисках из шести, без применения --force.
На
Для первого просмотра я использовал отдельный каталог:
Монтирование подключает файловую систему к каталогу Linux. В моём случае содержимое массива становилось доступно через
Параметр
На экране появились:
Я увидел структуру прежнего datastore. Это подтвердило доступ к данным на уровне файловой системы.
Каталог
Наличие каталогов стало хорошим промежуточным результатом. Но утверждать, что любая копия успешно восстановится, я на этом основании не мог: полную проверку и тестовое восстановление ещё предстояло выполнить.
В файле
Я нашёл существующее описание datastore и проверил настройки mdadm.
В исходном
В
Я также заметил исходный параметр
В консоль стали сыпаться сообщения:
В моей конфигурации
Журнал файловой системы помогает сохранять согласованность её служебных данных при изменениях и сбоях. Сообщение
Я зафиксировал ошибки ext4 на системном устройстве dm-1.
Для проверки корневого тома я перешёл в минимальную среду initramfs. Она позволила работать с томом отдельно от установленной системы.
Сначала активировал группу LVM и проверил, что том не смонтирован:
У системного ext4 был UUID:
Перед проверкой я активировал группу pbs и проверил состояние монтирования тома.
Исправление через e2fsck я выполнял на размонтированном ext4. Запускать его на используемом корневом томе нельзя. Для XFS на /dev/md127 эта программа тоже не подходит.
Первый проход сделал без записи:
Параметр
Я получил предупреждения о счётчиках свободных блоков и inode, а также о состоянии orphan-файла. Программа отдельно указала, что восстановление журнала пропущено из-за проверки без записи. Поэтому один только выведенный код завершения я не стал воспринимать как подтверждение исправности.
Затем выполнил проверку с автоматическим исправлением тех ошибок, которые e2fsck может исправить без дополнительного решения администратора:
Команда
Первый запуск сообщил
Я восстановил журнал ext4 и получил код завершения 1.
Повторил ту же проверку на всё ещё размонтированном томе:
На этот раз результат был 0, без новых сообщений об исправлениях. Это подтверждало успешную проверку в тот момент, но не объясняло причину первоначального сбоя.
При повторной проверке я получил код 0, после чего продолжил диагностику из chroot.
После проверки ext4 я смонтировал корень в режиме
Если объяснять коротко, chroot позволил мне запускать программы установленной системы так, будто её смонтированный каталог является корнем. Отдельную копию данных эта операция не создаёт.
Для SSD, который в тот момент определялся как
В выводе были:
Я прочитал SMART ADATA SU650: пороговая оценка была PASSED.
В журнале не было зарегистрированных ошибок, прежний короткий тест завершился успешно.
Новый длительный тест я не запускал. Последующие ошибки I/O показали, почему нельзя делать вывод о полной исправности накопителя только по слову PASSED. Неисправность самого SSD, соединения, питания или контроллера я на этом этапе не локализовал.
Я просмотрел список сохранённых сеансов системного журнала:
Здесь
Запрос выбранного сеанса из chroot возвращал
Заодно я восстановил пароль root. После выхода из chroot и размонтирования временных подключений смонтировал системный том для записи, подключил /dev и /proc и выполнил:
Получил
Пароль root был изменён. На фотографии также видны последующие операции монтирования и размонтирования ext4.
В работающей системе я проверил тома, массив и службы:
Корень отображался как ext4 с параметрами
Для обеих служб я получил
Я подтвердил доступность томов, рабочий сетевой интерфейс и активность двух служб PBS.
Параметр
Массив при этом оставался в составе 5/6. Успешный вход в веб-интерфейс, полную проверку резервных копий и тестовое восстановление я ещё не подтвердил.
Через некоторое время ошибки ext4 появились снова. К сообщениям о прерванном журнале добавились:
После временного восстановления работы я снова получил ошибки журнала и записи ext4.
Сообщения шли прямо в консоль. Ctrl+C не помогал, потому что я останавливал команду в оболочке, а вывод ядра продолжался независимо от неё.
Освободить строку ввода удалось сочетанием Alt+SysRq+0. На экране появились
Так я уменьшил вывод сообщений ядра в консоль. Файловую систему это не исправляло — только давало возможность продолжить ввод команд.
Дальше ситуация стала серьёзнее. При попытке получить журнал команда dmesg уже не запускалась:
Аналогичная ошибка возникла для
Консоль стала доступна для ввода, но программы с системного тома начали завершаться с Input/output error.
Сохранённый журнал dmesg и успешную остановку служб я не получил. После этого считать сервер исправным было уже нельзя: проблема затрагивала чтение системных программ.
На этом этапе я рассмотрел переустановку системы на исправный SSD. Возник практический вопрос: смогу ли подключить старые резервные копии, если не сохраню настройки из /etc?
Для моей схемы потеря этих настроек сама по себе не означает потерю данных массива. Метаданные MD находятся на HDD, а содержимое datastore — на XFS. Но настройки системы придётся восстановить или создать заново.
Дальнейший порядок я наметил такой: сохранить то, что ещё читается с системного накопителя, разобраться с его подключением и состоянием, установить PBS на исправный накопитель, собрать существующий RAID и подключить прежнюю XFS. При установке систему нужно направить именно на системный диск, сохранив HDD массива. Для защиты от ошибки выбора я рассматривал их отключение на время установки при выключенном сервере.
Перед добавлением datastore я отдельно проверил бы через findmnt, что по нужному пути действительно подключён массив. Пустой каталог на системном SSD и каталог со смонтированной XFS могут называться одинаково, но это разное хранилище.
После подключения остались бы проверка прав доступа, клиентских подключений, резервных копий и пробное восстановление. При смене сертификата PBS потребовалось бы обновить доверие к серверу на клиентах.
Отдельно я должен сохранить ключи расшифрования, если резервные копии зашифрованы. Они обычно находятся на стороне клиента. Новая установка PBS не создаст ключ, которым можно расшифровать прежние копии.
До самой переустановки в этом цикле работ я не дошёл. Замену SSD, восстановление шестого участника RAID и проверку всех резервных копий тоже не выполнил.
Доступ к существующему RAID6 и каталогам резервных копий я вернул. Журнал системного ext4 восстановил, пароль root изменил и на некоторое время получил работающие службы PBS. Но повторные ошибки ext4 и I/O оставили восстановление сервера незавершённым.
Для меня главным оказалось разделение уровней: физические диски, массив, файловая система и настройки PBS. Оно помогло не перепутать неисправность системного тома с состоянием хранилища резервных копий.
После этой истории я считаю восстановление завершённым только тогда, когда система работает стабильно, состав массива понятен, данные проверены и выполнено тестовое восстановление. Доступные каталоги, active у службы и один успешный fsck — полезные промежуточные результаты, но каждого из них по отдельности недостаточно.
Ниже я разберу, как проверял диски, собирал существующий массив и возвращал доступ к резервным копиям. По ходу объясню команды, которые пришлось использовать: без понимания их назначения в такой ситуации легко начать исправлять совсем не тот диск.
Результат у этой истории промежуточный. Доступ к каталогам резервных копий я получил, журнал ext4 восстановил, но спустя некоторое время системный том снова начал выдавать ошибки. Поэтому это разбор диагностики и частичного восстановления, а не история о полностью починенном сервере.
Что у меня было установлено
Сервер назывался
pbs2. Система PBS находилась на SSD ADATA SU650 объёмом 240 GB, а резервные копии — на отдельном программном RAID6 с файловой системой XFS.Для начала я разделил четыре понятия, которые постоянно встречались в выводе команд:
- Диск — физический накопитель, например SSD или HDD.
- MD RAID — массив, собранный Linux из нескольких дисков. У меня он представлялся одним устройством
/dev/md127. Управлять им позволяетmdadm. - Файловая система — организация файлов на устройстве. На системном томе у меня была ext4, на массиве — XFS.
- Datastore PBS — каталог с данными резервных копий, который зарегистрирован в настройках PBS. Мой datastore назывался
Local_pbs2и использовал путь/mnt/Local_Storage.
Ещё в системе использовался LVM. Он представлял системный раздел как логический том
/dev/mapper/pbs-root. Именно этот том позднее фигурировал в ошибках ext4.На момент проверки диски распределялись так:
| Устройство | Что я обнаружил |
|---|---|
| /dev/sdg | Системный SSD ADATA SU650. На sdg3 находилась группа LVM pbs с томами pbs-root и pbs-swap. |
| /dev/sdb, /dev/sdc, /dev/sdd, /dev/sde, /dev/sdf | Пять HDD примерно по 12 TB с метаданными существующего RAID6. |
| /dev/sda | Отдельный HDD с разделами и старой группой LVM pve. Его участие в восстанавливаемом массиве я не подтвердил. |
Сначала я выяснил, где находятся система и резервные копии
Начал с просмотра конфигурации:
Код:
pvs -o pv_name,vg_name
zpool import
cat /etc/fstab
cat /proc/mdstat
Команда
pvs показала две группы: pve на /dev/sda3 и pbs на /dev/sdg3. Доступных для импорта пулов ZFS не оказалось.В
/etc/fstab я нашёл запись XFS-хранилища, а в /proc/mdstat — массив md127 в состоянии inactive. То есть устройства были обнаружены, но массив ещё не работал как доступное хранилище.Я проверил группы LVM, таблицу монтирования и исходное состояние массива.
На этом этапе стало понятно, что нужно разбираться с Linux MD. Создание нового пула ZFS или форматирование дисков к моей задаче отношения не имели.
Как я проверил участников RAID6
Для начала запросил сведения о массиве, затем прочитал метаданные дисков:
Код:
mdadm --detail /dev/md127
mdadm --examine /dev/sd[a-f]
У этих команд разные задачи.
--detail показывает сведения о самом массиве, а --examine читает метаданные на его предполагаемых участниках.Метаданные можно представить как служебную запись на диске: к какому массиву он относится, какую позицию занимал и с какими параметрами работал.
В исходном состоянии mdadm обнаружил пять устройств, но массив оставался неактивным.
Я сопоставил UUID массива, роли дисков, счётчики событий и контрольные суммы. На доступных участниках UUID совпадал:
Код:
106f8678:4b7f3a20:7a35992a:2ecb82f6
В проверенных суперблоках были
Events=2, состояние clean и корректные контрольные суммы. Массив имел имя pbs2:1, метаданные версии 1.2 и блоки по 256 KiB.Всего в конфигурации предусматривалось шесть участников. Я обнаружил роли 0, 1, 2, 3 и 5; позиция 4 отсутствовала.
Я сопоставил метаданные доступных участников. Одинаковые параметры позволили перейти к сборке существующего массива.
Запись
AAAAAA в суперблоках я не стал принимать за доказательство того, что сейчас доступны все шесть дисков: она отражала сохранённое состояние. Фактически у меня было пять участников.Почему первую сборку я сделал только для чтения
Моей первой задачей было посмотреть, сохранилось ли содержимое хранилища. Поэтому существующий неактивный массив я остановил и собрал в режиме только для чтения:
Код:
mdadm --stop /dev/md127
mdadm --assemble --readonly --run /dev/md127 /dev/sd[b-f]
cat /proc/mdstat
lsblk -o NAME,SIZE,FSTYPE,UUID,RO /dev/md127
Здесь
/dev/sd[b-f] означало пять уже проверенных дисков: sdb, sdc, sdd, sde и sdf.--assembleсобирает существующий массив по его метаданным.--readonlyзадаёт режим только для чтения.--runв этом случае позволил запустить массив в неполном составе.
Эту последовательность я использовал для своего неактивного массива после проверки участников. Останавливать работающий массив с подключёнными файловыми системами ради повторения примера не нужно.
В ответ я получил:
Код:
mdadm: /dev/md127 has been started with 5 drives (out of 6).
В состоянии массива появились
active (read-only) и следующая отметка:
Код:
[6/5] [UUUU_U]
Она означала: предусмотрено шесть участников, доступны пять, одна позиция отсутствует. Массив запустился, но остался деградированным. Полный состав я не восстановил.
Я получил доступ к существующему RAID6 на пяти дисках из шести, без применения --force.
Как я увидел каталоги резервных копий
На
/dev/md127 определилась файловая система XFS. Её UUID был:
Код:
f7f2d40c-9d57-4e28-8bc5-45893a7e2ee4
Для первого просмотра я использовал отдельный каталог:
Код:
mkdir -p /mnt/pbs-recovery
mount -t xfs -o ro,norecovery /dev/md127 /mnt/pbs-recovery
findmnt /mnt/pbs-recovery
ls -la /mnt/pbs-recovery
Монтирование подключает файловую систему к каталогу Linux. В моём случае содержимое массива становилось доступно через
/mnt/pbs-recovery.Параметр
ro запрещал запись, а norecovery отключал восстановление журнала XFS при монтировании. Такой режим подошёл для первоначального осмотра. При незавершённых операциях часть файлов в нём может быть недоступна, поэтому сам по себе просмотр каталогов не заменяет проверку целостности.На экране появились:
Код:
.chunks
vm
ct
.gc-status
.lock
Я увидел структуру прежнего datastore. Это подтвердило доступ к данным на уровне файловой системы.
Каталог
.chunks содержит блоки данных резервных копий. Название с точкой не делает его ненужной служебной папкой: удалять его для «очистки места» нельзя.Наличие каталогов стало хорошим промежуточным результатом. Но утверждать, что любая копия успешно восстановится, я на этом основании не мог: полную проверку и тестовое восстановление ещё предстояло выполнить.
Какие настройки хранилища я проверил
В файле
/etc/proxmox-backup/datastore.cfg находилось описание Local_pbs2 с путём /mnt/Local_Storage. Там же были расписание GC на 8:00 и параметры проверки данных.Я нашёл существующее описание datastore и проверил настройки mdadm.
В исходном
/etc/mdadm/mdadm.conf строки ARRAY не было. При последующей проверке я уже подтвердил такую запись:
Код:
ARRAY /dev/md127 metadata=1.2 UUID=106f8678:4b7f3a20:7a35992a:2ecb82f6
В
/etc/fstab хранилище было указано по UUID файловой системы. Для себя я разделил назначение этих настроек: mdadm отвечает за сборку массива, fstab — за подключение файловой системы к каталогу, а PBS — за использование этого каталога как datastore.Я также заметил исходный параметр
noatime в fstab. Позже в фактических параметрах рабочего монтирования отображался relatime. Саму работу GC в рамках этой диагностики я не проверял.Затем обнаружилась отдельная проблема на системном SSD
В консоль стали сыпаться сообщения:
Код:
EXT4-fs error (device dm-1):
ext4_journal_check_start: Detected aborted journal
В моей конфигурации
dm-1 соответствовал системному тому pbs-root. На массиве резервных копий была XFS, поэтому переносить выводы об этой ошибке ext4 на RAID6 было бы неправильно.Журнал файловой системы помогает сохранять согласованность её служебных данных при изменениях и сбоях. Сообщение
Detected aborted journal означало, что нормальная работа журнала была прервана. Это требовало отдельной проверки системного тома.Я зафиксировал ошибки ext4 на системном устройстве dm-1.
Как я проверил ext4 вне работающей системы
Для проверки корневого тома я перешёл в минимальную среду initramfs. Она позволила работать с томом отдельно от установленной системы.
Сначала активировал группу LVM и проверил, что том не смонтирован:
Код:
lvm vgchange -ay pbs
cat /proc/mounts
blkid /dev/mapper/pbs-root
У системного ext4 был UUID:
Код:
15324885-d39c-4652-814f-da50ba95ccef
Перед проверкой я активировал группу pbs и проверил состояние монтирования тома.
Исправление через e2fsck я выполнял на размонтированном ext4. Запускать его на используемом корневом томе нельзя. Для XFS на /dev/md127 эта программа тоже не подходит.
Первый проход сделал без записи:
Код:
e2fsck -f -n /dev/mapper/pbs-root
Параметр
-f запускает проверку даже для файловой системы, которая выглядит чистой, а -n открывает её только для чтения и отказывается от исправлений.Я получил предупреждения о счётчиках свободных блоков и inode, а также о состоянии orphan-файла. Программа отдельно указала, что восстановление журнала пропущено из-за проверки без записи. Поэтому один только выведенный код завершения я не стал воспринимать как подтверждение исправности.
Затем выполнил проверку с автоматическим исправлением тех ошибок, которые e2fsck может исправить без дополнительного решения администратора:
Код:
e2fsck -f -p /dev/mapper/pbs-root
echo $?
Команда
echo $? показывает код завершения предыдущей команды. Проверять его нужно сразу после нужной операции.Первый запуск сообщил
recovering journal и завершился с кодом 1. Для e2fsck это означает, что ошибки файловой системы были исправлены.Я восстановил журнал ext4 и получил код завершения 1.
Повторил ту же проверку на всё ещё размонтированном томе:
Код:
e2fsck -f -p /dev/mapper/pbs-root
echo $?
На этот раз результат был 0, без новых сообщений об исправлениях. Это подтверждало успешную проверку в тот момент, но не объясняло причину первоначального сбоя.
При повторной проверке я получил код 0, после чего продолжил диагностику из chroot.
Что показал SMART системного SSD
После проверки ext4 я смонтировал корень в режиме
ro,noload, подключил каталоги устройств и процессов и вошёл в chroot.Если объяснять коротко, chroot позволил мне запускать программы установленной системы так, будто её смонтированный каталог является корнем. Отдельную копию данных эта операция не создаёт.
Для SSD, который в тот момент определялся как
/dev/sdg, выполнил:
Код:
smartctl -H -A /dev/sdg
smartctl -l error -l selftest /dev/sdg
В выводе были:
- общая оценка
PASSED; - ноль переназначенных секторов;
- 13 834 часа работы и 39 включений;
- температура 28 °C;
No Errors Loggedв журнале ошибок;- прежний короткий тест, завершившийся без ошибки на отметке 13 830 часов.
Я прочитал SMART ADATA SU650: пороговая оценка была PASSED.
В журнале не было зарегистрированных ошибок, прежний короткий тест завершился успешно.
Новый длительный тест я не запускал. Последующие ошибки I/O показали, почему нельзя делать вывод о полной исправности накопителя только по слову PASSED. Неисправность самого SSD, соединения, питания или контроллера я на этом этапе не локализовал.
Системные журналы и восстановление пароля root
Я просмотрел список сохранённых сеансов системного журнала:
Код:
journalctl --list-boots --no-pager | tail -n 5
Здесь
tail -n 5 только выводит последние пять строк и завершается. Это не постоянное наблюдение за журналом, как с параметром -f.Запрос выбранного сеанса из chroot возвращал
No entries. Я не стал трактовать это как отсутствие ошибок во всей системе. В доступных записях нашлись отказы SMTP-соединения у Postfix, а в dmesg — предупреждение GPT, относящееся в контексте вывода к /dev/sda. Таблицу разделов я не исправлял. Также встретились сообщения графического драйвера и bond0; их причины остались отдельной задачей.Заодно я восстановил пароль root. После выхода из chroot и размонтирования временных подключений смонтировал системный том для записи, подключил /dev и /proc и выполнил:
Код:
chroot /root /usr/bin/passwd root
Получил
password updated successfully. Затем выполнил sync и размонтировал временные подключения и сам том.Пароль root был изменён. На фотографии также видны последующие операции монтирования и размонтирования ext4.
На какое-то время PBS снова заработал
В работающей системе я проверил тома, массив и службы:
Код:
findmnt -no SOURCE,FSTYPE,OPTIONS /
findmnt /mnt/Local_Storage
cat /proc/mdstat
systemctl is-active proxmox-backup proxmox-backup-proxy
Корень отображался как ext4 с параметрами
rw,relatime,errors=remount-ro. Хранилище на /dev/md127 было подключено как XFS в режиме rw,relatime.Для обеих служб я получил
active. Интерфейс bond0 имел адрес 172.16.2.211/24 и состояние UP/LOWER_UP.Я подтвердил доступность томов, рабочий сетевой интерфейс и активность двух служб PBS.
Параметр
errors=remount-ro описывает поведение при ошибке: перемонтировать файловую систему только для чтения. Его присутствие рядом с rw не означает, что том уже находится в режиме ro.Массив при этом оставался в составе 5/6. Успешный вход в веб-интерфейс, полную проверку резервных копий и тестовое восстановление я ещё не подтвердил.
Почему я не стал считать восстановление завершённым
Через некоторое время ошибки ext4 появились снова. К сообщениям о прерванном журнале добавились:
Код:
ext4_do_writepages: jbd2_start
err -30
После временного восстановления работы я снова получил ошибки журнала и записи ext4.
Сообщения шли прямо в консоль. Ctrl+C не помогал, потому что я останавливал команду в оболочке, а вывод ядра продолжался независимо от неё.
Освободить строку ввода удалось сочетанием Alt+SysRq+0. На экране появились
Changing Loglevel и Loglevel set to 0. Затем я выполнил:
Код:
echo 1 > /proc/sys/kernel/printk
Так я уменьшил вывод сообщений ядра в консоль. Файловую систему это не исправляло — только давало возможность продолжить ввод команд.
Дальше ситуация стала серьёзнее. При попытке получить журнал команда dmesg уже не запускалась:
Код:
/usr/bin/dmesg: Input/output error
Аналогичная ошибка возникла для
/usr/bin/realpath. Попытка остановить службы PBS через systemctl тоже не завершилась успешно: ошибка чтения появилась при запуске /usr/bin/systemd-tty-ask-password-agent.Консоль стала доступна для ввода, но программы с системного тома начали завершаться с Input/output error.
Сохранённый журнал dmesg и успешную остановку служб я не получил. После этого считать сервер исправным было уже нельзя: проблема затрагивала чтение системных программ.
Можно ли сохранить старое хранилище после чистой установки PBS
На этом этапе я рассмотрел переустановку системы на исправный SSD. Возник практический вопрос: смогу ли подключить старые резервные копии, если не сохраню настройки из /etc?
Для моей схемы потеря этих настроек сама по себе не означает потерю данных массива. Метаданные MD находятся на HDD, а содержимое datastore — на XFS. Но настройки системы придётся восстановить или создать заново.
| Файл или каталог | Для чего он потребуется |
|---|---|
| /etc/proxmox-backup/ | Описание datastore, пользователи, права, токены, задания и другие настройки PBS. |
| /etc/mdadm/mdadm.conf | Настройки сборки существующего массива. |
| /etc/fstab | Подключение файловой системы к нужному каталогу. |
| /etc/network/interfaces | Адреса, bond и другие настройки сети. |
Дальнейший порядок я наметил такой: сохранить то, что ещё читается с системного накопителя, разобраться с его подключением и состоянием, установить PBS на исправный накопитель, собрать существующий RAID и подключить прежнюю XFS. При установке систему нужно направить именно на системный диск, сохранив HDD массива. Для защиты от ошибки выбора я рассматривал их отключение на время установки при выключенном сервере.
Перед добавлением datastore я отдельно проверил бы через findmnt, что по нужному пути действительно подключён массив. Пустой каталог на системном SSD и каталог со смонтированной XFS могут называться одинаково, но это разное хранилище.
После подключения остались бы проверка прав доступа, клиентских подключений, резервных копий и пробное восстановление. При смене сертификата PBS потребовалось бы обновить доверие к серверу на клиентах.
Отдельно я должен сохранить ключи расшифрования, если резервные копии зашифрованы. Они обычно находятся на стороне клиента. Новая установка PBS не создаст ключ, которым можно расшифровать прежние копии.
До самой переустановки в этом цикле работ я не дошёл. Замену SSD, восстановление шестого участника RAID и проверку всех резервных копий тоже не выполнил.
Что я вынес из этой диагностики
Доступ к существующему RAID6 и каталогам резервных копий я вернул. Журнал системного ext4 восстановил, пароль root изменил и на некоторое время получил работающие службы PBS. Но повторные ошибки ext4 и I/O оставили восстановление сервера незавершённым.
Для меня главным оказалось разделение уровней: физические диски, массив, файловая система и настройки PBS. Оно помогло не перепутать неисправность системного тома с состоянием хранилища резервных копий.
После этой истории я считаю восстановление завершённым только тогда, когда система работает стабильно, состав массива понятен, данные проверены и выполнено тестовое восстановление. Доступные каталоги, active у службы и один успешный fsck — полезные промежуточные результаты, но каждого из них по отдельности недостаточно.