Как в Linux проверить диск на битые секторы

20.03.2021

Важнейшей составляющей компьютера выступает жесткий диск. Именно на нем хранятся файлы операционной системы и прочая важная информация. Единица хранения на жестком диске - сектор или блок. Именно в него записывается определенный объем данных, обычно это 512 или 1024 байт. Со временем на диске появляются битые секторы, которые перестают работать, но файловая система продолжает пытаться записать в них информацию. Записать информацию в такие секторы крайне сложно, поэтому пользователь может их потерять. Причем этот недостаток свойственен жестким дискам HDD, а твердотельные накопители SSD лишены этих недостатков. В них есть специальный контроллер, который перемещает данные из битых секторов в рабочие. В этой статье расскажем о том, как проверить диск на битые секторы в Linux. 

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

Для поиска битых секторов на жестком диске в операционной системе Linux подходит программа под названием badblocks. Если вам надо проверить корневой или домашний раздел диска, то лучше загрузится в LiveCD, чтобы файловая система не была смонтирована. Если необходимо посмотреть, какие разделы есть на диске можно воспользоваться командой fdisk:

$ sudo fdisk -l /dev/sda1

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

Пользуясь графическим интерфейсом, можно воспользоваться Gparted - специальная утилита. Пользователю достаточно выбрать нужный диск в выпадающем списке. 

 

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

В конкретном примере рассмотрим, как проверить раздел /dev/sda2 с файловой системой XFS. Для этого используется команда badblocks. Синтаксис у неё довольно простой:

$ sudo badblocks -vn /dev/sda2 -o ~/bad_sectors.txt 

Вам могут потребоваться следующие опции программы:

  • -e - дает возможность установить количество битых блоков, после достижения которого дальше продолжать тест не надо;
  • -f - по умолчанию утилита пропускает тест с помощью чтения/записи если файловая система смонтирована чтобы её не повредить, эта опция позволяет всё таки выполнять эти тесты даже для смонтированных систем;
  • -o - записать обнаруженные битые блоки в указанный файл;
  • -p - количество проверок, по умолчанию только одна;
  • -s - показывает прогресс сканирования раздела;
  • -v - максимально подробный режим;
  • -i - позволяет передать список ранее найденных битых секторов, чтобы не проверять их снова;
  • -n - использовать безопасный тест чтения и записи, во время этого теста данные не стираются;
  • -w - позволяет выполнить тест с помощью записи, на каждый блок записывается определённая последовательность байт, что стирает данные, которые хранились там раньше.

С целью проведения обычной проверки используйте такую команду:

$ sudo badblocks -v /dev/sda2 -o ~/bad_sectors.txt

Эту команду можно выполнять на диске с операционной системой, ничего страшного не будет - она не способна навредить. Допускается выполнять на смонтированной файловой системе, хотя этого лучше не делать Если файловая система размонтирована, рекомендуем сделать тест с записью с помощью опции -n:

$ sudo badblocks -vn /dev/sda2 -o ~/bad_sectors.txt

После окончания проверки системе необходимо сообщить информацию о битых секторах, чтобы она туда не обращалась. Для этого можно использовать утилиту fsck и опцию -l:

$ fsck -l ~/bad_sectors.txt /dev/sda1

В случае использования файловой система семейства Ext для поиска битых блоков и автоматической регистрации их в файловой системе используйте команду e2fsck:

$ sudo e2fsck -cfpv /dev/sda1

При помощи параметр  легко искать битые блоки и добавлять их в список, -f - проверяет файловую систему, -p - восстанавливает повреждённые данные, а -v выводит всё подробно.

Тепеь вы знаете, как проверять жесткий диск и находить битые секторы.