У меня есть жесткий диск, на котором, похоже, возникла какая-то аппаратная проблема в журнале. Это предотвращает загрузку диска. Запуск mount -r -t ext4 /dev/sda5 /mnt/root
результатов в следующем ядре извергается:
[ 1420.671055] ata1.00: exception Emask 0x0 SAct 0x1000000 SErr 0x0 action 0x0
[ 1420.673862] ata1.00: irq_stat 0x40000008
[ 1420.676600] ata1.00: failed command: READ FPDMA QUEUED
[ 1420.679326] ata1.00: cmd 60/40:c0:a8:9d:0a/00:00:08:00:00/40 tag 24 ncq 32768 in
[ 1420.679326] res 41/40:40:e1:9d:0a/00:00:08:00:00/00 Emask 0x409 (media error) <F>
[ 1420.685014] ata1.00: status: { DRDY ERR }
[ 1420.687858] ata1.00: error: { UNC }
[ 1420.761064] ata1.00: configured for UDMA/133
[ 1420.763863] sd 0:0:0:0: >[sda] Unhandled sense code
[ 1420.766653] sd 0:0:0:0: >[sda]
[ 1420.769364] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[ 1420.772104] sd 0:0:0:0: >[sda]
[ 1420.774780] Sense Key : Medium Error [current] [descriptor]
[ 1420.777491] Descriptor sense data with sense descriptors (in hex):
[ 1420.780249] 72 03 11 04 00 00 00 0c 00 0a 80 00 00 00 00 00
[ 1420.783175] 08 0a 9d e1
[ 1420.785972] sd 0:0:0:0: >[sda]
[ 1420.788730] Add. Sense: Unrecovered read error - auto reallocate failed
[ 1420.791545] sd 0:0:0:0: >[sda] CDB:
[ 1420.794331] Read(10): 28 00 08 0a 9d a8 00 00 40 00
[ 1420.797242] end_request: I/O error, dev sda, sector 134913505
[ 1420.800072] ata1: EH complete
[ 1420.800077] JBD2: Failed to read block at offset 2748
[ 1420.812529] JBD2: recovery failed
[ 1420.815275] EXT4-fs (sda5): error loading journal
Я едва понимаю, что это значит, но это похоже на аппаратную проблему, препятствующую загрузке журнала. Есть ли способ обойти это? Можно ли, например, переместить журнал в другое смещение, оставив остальную часть диска в основном нетронутой? Я не собираюсь продолжать использовать диск; Я просто хочу смонтировать его, чтобы скопировать несколько важных файлов.
hard-disk
data-recovery
ext4
JSB ձոգչ
источник
источник
fsck
в файловую систему?Ответы:
Чтобы смонтировать его только для чтения, без повторного воспроизведения журнала, чтобы вы могли получить доступ к своим файлам (вы, вероятно, потеряете некоторые изменения, которые еще не были зафиксированы в обычном fs):
mount -o ro,noload
...источник
Посмотрите на вывод
smartctl -a /dev/sda
. Если проблема не в кабеле, возможно, диск умирает. Если у вас нет последней резервной копии, попробуйте скопировать содержимое блочного устройства (без монтирования), используя dd_rescue или dd с соответствующими параметрами.После этого вы можете попробовать
hdparm --write-sector
(всегда смешно эти «ОЧЕНЬ ОПАСНЫЕ» варианты ...).Другим вариантом является создание устройства DM, которое обходит дефектные сектора. Это не восстанавливает их содержимое, конечно. Вы должны преобразовать смещение sda (134913505) в смещение sda5 (узнать номер первого сектора sda5 и вычесть его). Давайте предположим, что смещение sda5 равно 12345. Вы создаете блочное устройство, сектор которого 12345 не отображается на sda5, а где-то еще (например, устройство петли). Определение устройства (для dmsetup create) выглядит так:
Вам не повезет настолько, что есть только один дефектный сектор. Вы можете отобразить столько, сколько хотите (в результате устройство DM поставляет нули для этих секторов, но доступно для записи), но вычисление смещений в loop0 может стать забавным. Другим вариантом может быть использование виртуального устройства того же размера для переназначения и использование либо тонкой инициализации, либо моментального снимка (с небольшим размером фрагмента, например, 1 сектор) нулевого целевого устройства.
Редактировать 1
Конечно, устройство цикла не должно указывать на файл на том же диске (sda).
источник
--write-sector
это далеко от "опасного". На самом деле, это действительно идеальный вариант для использования в случаях , когда некоторые коррумпированные одиночные сектора мешают вам получать непрерывное изображение сырьевого сектора (dd
будет выручать с «Ошибкой устройством ввода / вывода», некоторые винчестеры даже требует , чтобы отключить питание машины ( !) чтобы получить признание ОС снова). Тем не менее, вы должны знать о сценариях оболочки, если вы хотите использовать--write-sector
для диапазонов секторов .Вы можете загрузиться в режиме восстановления, в котором ФС будет монтироваться только для чтения, и скопировать ваши вещи.
источник