У меня есть сервер 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 и т. д.).
Вам нужно будет сделать что-то вроде этого:
debsums
.Это исправит саму систему, но оставит файлы конфигурации (например, / etc) и другие данные. Нет простого способа исправить это. Вам придется делать это по принципу "файл в файл".