5

У меня есть 3 жестких диска, в следующих параграфах с именами /dev /sda, /dev /sdb и /dev /sdc сначала появились новейшие. Примечание: /dev /sdc имеет один основной раздел /dev /sdc1, один расширенный раздел /dev /sd2 и 3 логических раздела /dev /sdc5, /dev /sdc6 и /dev /sda7.

Я создал деградированное устройство RAID 5 /dev /md0 с /dev /sda5 и /dev /sdb5 (планировалось добавить /dev /sdc5 к RAID, чтобы перевести его в нормальное состояние), затем использовал /dev /md0 в качестве единственного pv LVM и создал lv с файловой системой ext4 /dev /mapper /vg0-lv0.

К сожалению, при изучении и игре с LVM я запускаю dd if=/dev/zero of=/dev/sdc1 bs=64M count=10 после удаления /dev /sdc1. Таким образом, на самом деле нули были записаны в /dev /sdc2, а поврежденная часть таблицы разделов хранится в /dev /sdc2 и в начальной части /dev /sdc5.

Когда я понял это, я сразу же сделал образ /dev /sdc через dd, например: dd if=/dev/sdc of=/mount-point-of-vg0-lv0/sdc.img .

Несколько дней спустя у меня наконец-то есть время попытаться восстановить данные в /dev /sdc, фактически только в /dev /sdc7, так как это единственный раздел без резервного копирования. Я запустил testdisk с файлом образа sdc.img, воспользовался функцией быстрого поиска, чтобы перестроить таблицу разделов, потеряв ее в /dev /loop0. /dev /loop0p7 (который является образом /dev /sdc7) вернулся и был смонтирован, и все файлы выглядят нормально. Затем я запустил find /mount-point-of-loop0p7 -type f -exec md5sum {} \; > sdc7_img.md5sum для создания списка контрольных сумм MD5 для всех файлов в /dev /loop0p7.

При работе с физическим /dev /sdc устройством быстрый поиск testdisk не находит все разделы, а Deep Search делает это. Затем я построил список контрольных сумм MD5 sdc7.md5sum для всех файлов на физическом /dev /sdc7 с помощью аналогичной команды. При сравнении с sdc7_image.md5sum я обнаружил, что 4 файла отличаются. После сравнения их вручную я заметил, что каждый файл имеет разницу только в 1 байт. И поскольку в одном файле указано имя CRC32, я могу подтвердить, что файл из физического /dev /sdc7 является правильным.

Итак, мой вопрос: почему произошла эта странная вещь? Я уже запустил fsck.ext4 -c -c /dev/mapper/vg0-lv0 чтобы убедиться, что у него нет плохих блоков. Разница в 4 байта в данных объемом 1,2 ТБ составляет такой небольшой процент, но это не позволяет мне уверенно сохранять данные в /dev /mapper /vg0-lv0 в будущем.

Обновление: я должен отметить, что все операции были выполнены в последней версии ArchLinux, работающей в VirtualBox 4.1.16, которая работает в Windows 7. /dev /sda, /dev /sdb и /dev /sdc связаны с физическими жесткими дисками, через VBoxManage internalcommands createrawvmdk . VirtualBox только сообщил об ошибке VERR_ACCESS_DENIED при сделанных md5sums для физического / DEV /sdc7, после форума физического диска с помощью diskpart из Win7, никаких дальнейших ошибок не подняли.

1 ответ1

0

Есть пара вещей, которые могли бы случиться. Во-первых, вы не упомянули о размонтировании sdc7 перед созданием образа диска, так что, возможно, данные записывались в то время. Я догадываюсь, что это не так, иначе вы бы не спросили. Я не могу винить вашу реакцию «во-первых, образ диска», это довольно хорошая реакция. Хотя я отмечаю, что до перезагрузки у ядра все еще была таблица разделов в памяти, проверьте /proc/partitions .

Первое, что нужно проверить, это ошибки памяти. Вы можете иметь плохую оперативную память. Ваши данные, без сомнения, прошли через ОЗУ несколько раз. Я предполагаю, что у вас нет памяти ECC, которая, вероятно, поймает это.

Жесткие диски также имеют ошибки. Просматривая спецификации для нескольких жестких дисков случайных потребителей, они говорят, что 1 на 100 Тбит. Вы скопировали 1,2 ТБ как минимум несколько раз (чтение из источника, чтение из места назначения), так что это что-то вроде 19 Тбит чтения. Наличие небольшой ошибки в этом правдоподобно. (К сожалению, они не дают частоту ошибок при записи в спецификации).

Была ли какая-то рифма или причина за однобайтовыми искажениями? cmp -l может сказать вам байты, которые меняются. Например, если бы на странице всегда было одинаковое смещение (размер вашей страницы, вероятно, 4 КБ), и всегда один и тот же бит, это почти убедительно указывало бы на дефектную оперативную память. Даже если бы он всегда всегда был одним и тем же битом или одним и тем же смещением, это было бы довольно убедительно (а у вас был CRC32 для всех четырех файлов или только один?)

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