22
июль
2022
Как проверить жесткий диск на битые секторы или bad'ы - плохие блоки в Linux
15:01

Как проверить жесткий диск на битые секторы или bad'ы - плохие блоки в Linux

22 июль 2022 15:01
  1. Плохими секторами называются участки диска, с которых нельзя произвести чтение либо записать на них информацию, либо скорость доступа значительно (на несколько порядков) ниже чем у остальных секторов.

Важность мониторинга числа плохих секторов

Своевременное обнаружение "полетевших" секторов позволяет спасти большую часть информации с носителя. Обычно выход из строя любого носителя начинается постепенно - вначале появляются одиночные BAD-блоки, затем их число растёт. Появление BAD'ов связана с физическим повреждением устройства (например, от сильного сотрясения ноутбука с HDD диском), либо износом ячеек устройства хранения (более характерно для SSD диска), либо грубым нарушением условий эксплуатации (отключение питания во время работы). При росте числа BAD блоков необходима немедленная замена неисправного диска на новый, с переносом операционной системы и информации из "домашних" каталогов пользователей.

Как узнать число плохих секторов в Linux

Вначале, выведем список доступных дисков и разделов на :

lsblk

Находим в списке своё устройство (например, sdb):

user@linux ~ $ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 37,3G 0 disk
sdb 8:16 0 119,2G 0 disk
├─sdb1 8:17 0 32,3G 0 part
├─sdb2 8:18 0 4,9G 0 part
├─sdb3 8:19 0 1K 0 part
└─sdb5 8:21 0 82,1G 0 part /
sdc 8:32 0 465,8G 0 disk
└─sdc1 8:33 0 391,2G 0 part
sdd 8:48 1 250M 0 disk
├─sdd1 8:49 1 250M 0 part /media/vladimir/7E2B-BE10
└─sdd4 8:52 1 39,5M 0 part
sr0 11:0 1 1024M 0 rom

В данном случае я взял маленькую флешку объёмом 256 Мбайт. - /dev/sdd

Решение: Проверка диска на BAD-блоки утилитой "badblocks"

Сканирование диска на bad-блоки:

sudo badblocks -sv /dev/sdd

где ключ "s" служит для отображения процента выполнения.
параметр "v" - для вывода на stdout подробной информации после окончания работы.

Если ошибок нет, будет выведено сообщение:

Без ключа -v
Checking for bad blocks (read-only test): done

С ключом -v
Pass completed, 0 bad blocks found. (0/0/0 errors)

На сильно поврежденных дисках имеет смысл прервать выполнение после обнаружения определенного числа повреждений. Например, если число bad-блоков больше 20, прерываем тест:

Команда - прекращать тестирование после 20 ошибок:

sudo badblocks -se 20  /dev/sdd

Если точно известен физический размер сектора, например, 512 байт, можно уточнить его в параметрах команды. Тогда, будет выведено число именно секторов размером 512 байт, а не блоков.

sudo badblocks -sve 20 /dev/sdd -b 512

Размер физического сектора можно узнать с помощью команды fsidk -l

 fdisk -l 

Отличие: в первом случае проверены блоки (по умолчанию 1024 байт), в последнем - сектора (512 байт).
Число их отличается в разы.

Таким образом, мы можем узнать число плохих блоков на устройстве с помощью командной строки и утилиты "badblocks".

Исправление BAD-блоков при помощи команды e2fsck -c

Дополнение от 01.08.2023
Обычно требуется не только обнаружение, но и исправление BAD-блоков.
Команда e2fsck -c «имя_тома» вызывает команду badblocks при использовании ключа -c в режиме проверки (check).
При этом всей найденные плохие блоки обрабатываются e2fsck, помечаются как "плохие" (на них будет нельзя записывать информацию). Данная команда работает подобно Windows-команде chkdsk c: /f /r /x, но в Linux для файловой системы типа Ext4:

sudo e2fsck -c /dev/sda1

где sda1 - имя тома (см. вывод lsblk).

Быстрое получение информации о числе bad-блоков с помощью Gnome disks

При использовании жесткого диска с поддержкой SMART, быстрее вывести число плохих блоков при помощи графической утилиты gnome-disks

В утилите gnome-desks выводится точное число bad блоков.

1) Устанавливаем программу gnome-disks:

sudo apt-get install gnome-disk-utility

2) Затем запускаем программу в меню "Пуск" - "Стандартные" - "Диски":
или из командной строки:

gnome-disks

3) Выбираем диск.

4) Число плохих блоков выводится в окне:
diagnostics

5) Если нужна детальная диагностика - переходим в меню с 3 точками (ещё),
выбираем пункт меню "Данные самодиагностики и SMART"

6) Растягиваем окно на весь экран и ищем пункт "Неисправные секторы"
out_of_work

Дополнение: утилита GSmartControl для чтения информации S.M.A.R.T.

Для Linux существует утилита для просмотра данных самодиагностики жестких дисков, под названием "GSmartControl".

sudo apt install gsmartcontrol

Запуск с помощью меню "Пуск" - "Системные" - "GSmartControl" или командой:

gsmartcontrol-root

Внешний вид окон программы "GSmartControl":

gsmartcontrol1

gsmartcontrol2

Информация о BAD-блоках доступна на закладке "Attributes":

  • Параметр "Offline Unrecoverable"

Количество блоков, приближающихся к состоянию "bad-block", данные из которых перемещены в резервную область жесткого диска:

  • Параметр "Reallocated Sector Count".

Очевидно, что у хорошего диска оба числа "Offline Unrecoverable" и "Reallocated Sector Count" должны быть нулями.

Примечание: высокие значения параметра "Seek Error Rate" (несколько тысяч) говорят о серьёзных проблемах с позиционированием магнитных головок жесткого диска, как правило встречаются у старых "винчестеров". Такие жесткие диски требуют замены из-за проблем с механикой. Ненулевое значение "Raw Read Error Rate" говорит о проблемах с поверхностью диска.

На закладке "Self-Tests" доступна короткая проверка (самотестирование). На HDD длительность тестирования около 2 мин, на SSD - около 40 секунд.

gsmartcontrol3

По окончанию проверки программа делает вывод о пригодности диска. Сообщение "Test result: completed without error" означает что электроника (и механика в случае HDD) исправны:

selftest

Домашняя страница GSmartControl:
https://gsmartcontrol.shaduri.dev/

Вывод диагностики S.M.A.R.T. с помощью командной строки

Если установить gsmartcontrol не представляется возможным, во многих дистрибутивах присутствует утилита командной строки "smartctl", которая тестирует диск и может выводить данные S.M.A.R.T.

Использование:

sudo smartctl --test=short /dev/sda

После запуска быстрой проверки диска, нужно подождать 2 минуты (тест производится в фоновом режиме).
Через 120 секунд нужно выполнить вторую команду:

sudo smartctl -H /dev/sda

Вывод команды: PASSED - здоровый диск, FAILED - диск неисправен.

Если нужно, получаем всю информацию о здоровье диска:

sudo smartctl -a /dev/sda | less

Переход к следующему экрану - клавиша пробел.

В результатах вывода, диагностические параметры, перечисленные ниже, должны быть нулями:
1 "Raw_read_error_rate"
5 "Reallocated_sector_ct"
196 "Reallocated_event_count"
197 "Current_pending_sector"
198 "Offline_uncorrectable"
232 "Available_Reservd_Space"

Результат короткой проверки в случае хорошего диска:
Status: "Competed without error"



Похожие публикации