1

Я пытаюсь восстановить разбитый диск объемом 2 ТБ с помощью ddrescue. Он работает уже больше недели, только что подошел к концу и, видимо, не хватило места с этой ошибкой:

ddrescue: write error: No space left on device

Это был пустой диск объемом 2 ТБ, на который я копировал данные, поэтому я предполагаю, что фактическое дисковое пространство варьировалось от одного производителя к другому. Диск не был заполнен, только около 600 ГБ использовалось при его сбое, и было всего 20 ошибок на общую сумму 254 МБ, так что, думаю, у меня есть подавляющее большинство данных, которые были в восстановленном образе диска.

Когда я пытаюсь смонтировать образ с помощью этой команды:

sudo mount -o loop,ro,offset=0 rimage /mnt/resc

это терпит неудачу, и это показывает в dmesg:

[999150.073373] EXT4-fs (loop0): bad geometry: block count 488378646 exceeds size of device (480723271 blocks)

1) Есть ли способ изменить количество блоков изображения, чтобы я мог его смонтировать?

2) Если это так, возможно ли впоследствии уменьшить размер раздела образа диска?

1 ответ1

1

Проблема с дисковым пространством

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

Я настоятельно рекомендую попытаться создать другой образ, избегая проблемы с пространством на этот раз либо с большим жестким диском, либо с помощью ddrescue --sparse .

На самом деле вы можете использовать ddrescue для записи на весь жесткий диск назначения восстановления, пропуская файловую систему. Если жесткий диск назначения восстановления - /dev/sdc , вы должны указать ddrescue записывать на него, а не на rimage . В этом случае жесткий диск назначения восстановления будет вести себя как клон вышедшего из строя жесткого диска за вычетом неисправимых частей.

Изменение размера образа устройства

Если предполагается, что образ ddrescue содержит весь неисправный диск, выполните эту команду, заменив /dev/sdb на путь устройства неисправного диска:

sudo blockdev --getsize64 /dev/sdb

Возьмите выходные данные (например, 500107862016) и измените размер образа восстановления /path/to/rimage с помощью truncate:

truncate -s 500107862016 /path/to/rimage

ПРЕДУПРЕЖДЕНИЕ. Усечение до размера, меньшего, чем размер /path/to/rimage приведет к потере данных.

Обязательно проверьте текущий размер /path/to/rimage с помощью du -b --apparent-size /path/to/image и убедитесь, что возвращаемый размер меньше того, что дал вам blockdev .

Теперь восстановленный образ приобретет полный размер, который может ожидать mount.ext4 .

Изменение размера образа раздела

Если вы выполняли ddrescue на разделе в отказавшем диске, используйте эту команду вместо этого, чтобы получить размер раздела, заменив /dev/sdb1 на путь устройства раздела:

sudo blockdev --getsize64 /dev/sdb1

Затем возьмите выходные данные (например, 500106788864) и измените размер образа /path/to/rimage с помощью truncate:

truncate -s 500106788864 /path/to/rimage

ПРЕДУПРЕЖДЕНИЕ. Усечение до размера, меньшего, чем размер /path/to/rimage приведет к потере данных.

Обязательно проверьте текущий размер /path/to/rimage с помощью du -b --apparent-size /path/to/image и убедитесь, что возвращаемый размер меньше того, что дал вам blockdev .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .