Восстановление ext4 файловой системы с поврежденным журналом

Очень сырой путь был бы (Если он работает вообще),

history | grep ssh
9
24.02.2013, 17:08
3 ответа

Взгляните на вывод smartctl -a /dev/sda. Если это не кабельная проблема затем, диск может умереть. Если у Вас нет недавнего резервного копирования, необходимо попытаться скопировать содержание блочного устройства (не монтируясь) использующий dd_rescue или dd с соответствующими опциями.

После этого можно попробовать hdparm --write-sector (всегда забавный эти опции "VERY DANGEROUS"...).

Другая опция состоит в том, чтобы создать устройство DM, которое обходит поврежденные секторы. Это не восстанавливает их содержание, конечно. Необходимо преобразовать смещение sda (134913505) в смещение sda5 (узнайте количество первого сектора sda5 и вычтите его). Давайте предположим, что смещение sda5 12345. Вы создаете блочное устройство, сектор 12345 которого не отображается на sda5, но где-то в другом месте (например, циклическое устройство). Определение устройства (для dmsetup создают) похоже на это:

0 12345 linear /dev/sda5 0
12345 1 linear /dev/loop0 0
12346 99987653 /dev/sda5 12345

# format:
# logical_start_sector num_sectors linear destination_device start_sector

Вы не будете так удачливы, что существует только один поврежденный сектор. Можно планировать столько, сколько Вы хотите (приводящий к нулям поставки устройства DM для тех секторов, но быть перезаписываемым), но вычисление смещения в loop0 может стать забавой. Другая опция состояла бы в том, чтобы использовать виртуальное устройство того же размера для переотображения и использовать или тонкую резервацию памяти или снимок (с небольшим размером блока, 1 сектором, например) нулевого целевого устройства.

Редактирование 1

Циклическое устройство не должно указывать на файл на том же диске (sda), конечно.

7
27.01.2020, 20:05
  • 1
    Очень положительная сторона. --write-sector FAR от "опасного". На самом деле это - на самом деле идеальная опция использовать каждый раз, когда определенные поврежденные единственные секторы препятствуют тому, чтобы Вы получили непрерывное необработанное изображение сектора (dd выручил бы с "Устройством ошибку ввода-вывода"; некоторые HDD даже потребуют к циклу включения и выключения питания, чтобы машина (!) была распознана ОС снова). Однако необходимо знать о сценариях оболочки, если Вы хотите использовать --write-sector для диапазонов сектора. –  syntaxerror 04.12.2014, 19:32

Можно загрузиться в режиме восстановления, в котором FS будет смонтирован только для чтения, и скопирует материал.

0
27.01.2020, 20:05
  • 1
    я монтируюсь только для чтения. Я исправил командную строку, которая, как показывают выше, сделала это более ясным. –  JSBձոգչ 24.02.2013, 17:09
  • 2
    И действительно ли можно ли получить доступ к диску? номер –  schaiba 24.02.2013, 17:13
  • 3
    , пытающийся смонтировать диск RO (или в R/W, это не имеет никакого значения), результаты по ошибке извергают показанный выше. –  JSBձոգչ 24.02.2013, 17:17
  • 4
    Затем предложение с кабельной подкачкой может пригодиться. И относительно Вашего вопроса, журнал не может быть перемещен путем, Вы хотите. –  schaiba 24.02.2013, 17:19

Для монтирования его только для чтения, не воспроизводя журнал, таким образом, можно получить доступ файлам (Вы, вероятно, потеряете некоторые изменения, которые еще не посвятили себя регулярной фс):

mount -o ro,noload ...

8
27.01.2020, 20:05

Теги

Похожие вопросы