Проверка и восстановление дисков в Linux

Я не претендую на истину в последней инстанции. 🙂 Надо понимать, что все эти манипуляции можно проделать, если Вы хотите проверить свой домашний диск или диск списанный на работе после 2-4 лет эксплуатации на предмет дальнейшего использования.

Использовать диски с подозрениями на проблемы с поверхностью для хранения важных данных нельзя!

Дано:
Диски большого объема (2Тб и более) б.у.
Есть подозрения на bad-блоки на этих дисках или на иные проблемы.
Надо проверить и подтвердить или опровергнуть данное утверждение, а так же понять можно ли использовать эти диски в дальнейшем для домашней эксплуатации или хранения не сильно важных данных.

Отступление: bad-блоки могут быть физические, когда поверхность диска не читается из-за повреждений и soft bad blocks.

Soft bad block может появится под нагрузкой, при резком перепаде напряжения, программном сбое. Такие блоки можно устранить. Чем мы и займемся.

Для тестирования будем использовать Ubuntu Linux.

В компьютере установлен SSD для запуска системы и RAID1 из двух дисков для хранения данных. Данные на RAID зашифрованы.

Диск для тестирования объемом 4Тб подключен через Sata.

Лечим soft bad блоки в Linux

Для начала найдем диск в системе:

Команда: ~$ lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 99,4M 1 loop /snap/core/11993
loop1 7:1 0 4K 1 loop /snap/bare/5
loop2 7:2 0 140K 1 loop /snap/gtk2-common-themes/13
loop3 7:3 0 55,5M 1 loop /snap/core18/2284
loop4 7:4 0 42,6M 1 loop /snap/leafpad/91
loop5 7:5 0 110,5M 1 loop /snap/core/12603
loop6 7:6 0 43,4M 1 loop /snap/snapd/14549
loop7 7:7 0 55,5M 1 loop /snap/core18/2253
loop8 7:8 0 43,3M 1 loop /snap/snapd/14295
loop9 7:9 0 65,2M 1 loop /snap/gtk-common-themes/1519
sda 8:0 0 223,6G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 513M 0 part /boot/efi
└─sda3 8:3 0 223,1G 0 part /
sdb 8:16 0 931,5G 0 disk
└─sdb1 8:17 0 931,5G 0 part
└─md0 9:0 0 931,4G 0 raid1
└─luks-de6e48cd-9eac-4313-af08-1600a4d675ae 253:0 0 931,4G 0 crypt /media/ru12/e3895716-9a8f-44bb-b07c-7fcce81a2d2c1
sdc 8:32 0 931,5G 0 disk
└─md0 9:0 0 931,4G 0 raid1
└─luks-de6e48cd-9eac-4313-af08-1600a4d675ae 253:0 0 931,4G 0 crypt /media/ru12/e3895716-9a8f-44bb-b07c-7fcce81a2d2c1
sdd 8:48 0 3,6T 0 disk
└─sdd1 8:49 0 3,6T 0 part

Что мы видим: sda — система, sdb, sdc — члены RAID1, диск, который надо проверить — sdd.

Почему важно удостовериться какой именно диск надо проверять.
Мы будем делать низкоуровневое форматирование на следующем шаге, что может привести к потери данных, при выборе не того диска.
Форматирование мы будем делать с привилегиями уровня root, и программе все равно, используется диск в данный момент или нет.

Следующий шаг: делаем низкоуровневое форматирование диска.
В реальности мы записываем в каждый кластер диска ноль.
Программа dd будет писать 0 в кластер пока не запишет.

ВАЖНО: Если dd вылетает с ошибкой (может просто завершиться намного раньше, чем планировалось), значит диск отформатировать невозможно. Это означает, что при попытке записать 0 в кластер произошла неустранимая ошибка и запись невозможна. При этом кластер не помечен как сбойный. Надо проверить статус SMART диска (как это сделать ниже). Скорее всего диск использовать нельзя. Он «осыпается» bad blocks на ходу.

~$ sudo dd if=/dev/zero of=/dev/sdd

ВАЖНО: программа dd не выводит данных о прогрессе выполнения процесса. Это нормальный режим ее работы.

Чтобы посмотреть сколько осталось и сколько уже сделано, надо запустить другую команду в другом терминальном окне:

~$ sudo progress -w

[ 1778] dd /dev/sdd
18.9% (704.5 GiB / 3.6 TiB) 32.6 MiB/s remaining 1 day 2:23:41

После выполнения низкоуровнего форматирования надо проверить статус SMART диска, чтобы понять есть на нем сбойные кластеры или нет.

проверка smart жесткого диска в Linux

~$ sudo smartctl -s on -a /dev/sdd

SMART выдает много параметров, но нас в данном случае интересует:

198 Offline_Uncorrectable 0x0010 100 100 000 Old_age Offline — 0

В последней строке должно стоять 0.

Это значит, что сбойных кластеров на диске не обнаружено и им можно пользоваться.

 

Возможно Вам будет полезная статья Создание новых разделов на диске, где раньше был RAID в Linux