Назад | Перейти на главную страницу

Как восстановить сервер Ubuntu с частичной постоянной потерей данных?

У меня есть сервер Ubuntu, корневой раздел которого находится в рейде 0, если на одном жестком диске были потеряны / битые сектора данных. Потеря данных влияет только на 1-2% от общего объема данных в этом корневом разделе, однако сервер либо не загружается правильно и только запускает BusyBox, либо загружается, но очень медленно и показывает множество ошибок, например end_request: critical target error, dev sda, sector xxxxxxxx.

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

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

Однако я знаю, что, например, все в /etc/ И в /home/совершенно нормально. Итак, мой вопрос: как лучше всего восстановить сервер Ubuntu после такой потери данных?
Моя идея состояла бы в том, чтобы использовать один из сломанных клонов dd и перезаписать файлы ядра Linux, а также что еще потребуется с установочного DVD сервера той же версии Ubuntu Server. Или установить новый сервер Ubuntu той же версии и скопировать правильные файлы конфигурации старого раздела обратно в новую систему. Однако я не уверен, что лучше, какие именно данные понадобятся в любом случае и есть ли инструменты для таких задач. Так что любые подсказки будут оценены.

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

Теперь вам нужно сделать необработанные образы дисков. Если это не чистый программный RAID, например, mdadm, Я бы не рекомендовал использовать для него ту же систему - если это настоящий аппаратный RAID или даже «поддельный» RAID, но не управляемый ОС, я боюсь, что загрузка заставит сам RAID-контроллер попытаться записать в диски и повредить их еще больше.

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

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

Если это mdadm raid, вы можете напрямую работать с изображениями, сделав их петлевыми устройствами и mdadm --assemble- обвиняя их, как если бы они были настоящими драйверами. Затем смонтируйте раздел в режиме только для чтения и попытайтесь cp все что ты можешь.

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

Если это аппаратный RAID, настоящий или поддельный, лучше всего покупать диски, идентичные вышедшим из строя, dd образы к нему, поместите их обратно на пораженную машину (чтобы RAID-контроллер собрал их как обычно) и загрузитесь с компакт-диска Linux. Затем смонтируйте раздел в режиме только для чтения и попробуйте cp данные на заведомо исправный диск или в сеть (NFS и т. д.).

Вам нужно будет сделать что-то вроде этого:

  1. Клонируйте все содержимое диска на рабочий диск. Использовать клонезиллаили Norton Ghost, если у вас есть лицензия. Это может занять много времени, но очень важно.
  2. Проверьте целостность базы данных диспетчера пакетов.
  3. Проверяем целостность самих пакетов, например, debsums.
  4. Принудительно переустановите сломанные.

Это исправит саму систему, но оставит файлы конфигурации (например, / etc) и другие данные. Нет простого способа исправить это. Вам придется делать это по принципу "файл в файл".