Главная >> Система >> Проверка диска на битые секторы в Linux

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

Одно из самых важных устройств компьютера - это жесткий диск, именно на нём хранится операционная система и вся ваша информация. Единица хранения информации на жестком диске - сектор или блок. Это одна ячейка в которую записывается определённое количество информации, обычно это 512 или 1024 байт.

Битые сектора, это повреждённые ячейки, которые больше не работают по каким либо причинам. Но файловая система всё ещё может пытаться записать в них данные. Прочитать данные из таких секторов очень сложно, поэтому вы можете их потерять. Новые диски SSD уже не подвержены этой проблеме, потому что там существует специальный контроллер, следящий за работоспособностью ячеек и перемещающий данные из нерабочих в рабочие. Однако традиционные жесткие диски используются всё ещё очень часто. В этой статье мы рассмотрим как проверить диск на битые секторы Linux.

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

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

sudo fdisk -l /dev/sda1

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

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

$ sudo badblocks опции /dev/имя_раздела_диска

Давайте рассмотрим опции программы, которые вам могут понадобится:

  • -e - позволяет указать количество битых блоков, после достижения которого дальше продолжать тест не надо;
  • -f - по умолчанию утилита пропускает тест с помощью чтения/записи если файловая система смонтирована чтобы её не повредить, эта опция позволяет всё таки выполнять эти тесты даже для смонтированных систем;
  • -i - позволяет передать список ранее найденных битых секторов, чтобы не проверять их снова;
  • -n - использовать безопасный тест чтения и записи, во время этого теста данные не стираются;
  • -o - записать обнаруженные битые блоки в указанный файл;
  • -p - количество проверок, по умолчанию только одна;
  • -s - показывать прогресс сканирования раздела;
  • -v - максимально подробный режим;
  • -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, например Ext4, то для поиска битых блоков и автоматической регистрации их в файловой системе можно использовать команду e2fsck. Например:

sudo e2fsck -cfpv /dev/sda1

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

Выводы

В этой статье мы рассмотрели как выполняется проверка диска на битые секторы Linux, чтобы вовремя предусмотреть возможные сбои и не потерять данные. Но на битых секторах проблемы с диском не заканчиваются. Там есть множество параметров стабильности работы, которые можно отслеживать с помощью таблицы SMART. Читайте об этом в статье Проверка диска в Linux.

16 комментариев к “Проверка диска на битые секторы в Linux”

    • Ты будешь очень удивлен, когда узнаешь, что битые сектора еще на стадии производства жестких дисков появляются. Причина этого: несовершенство технологии производство, как бы не парадоксально это звучало. По этой же причине с одной матрицы, на которой выращивают процессора получают как сверхвысокопроизводительные процессора с высокой стоимостью, так и самые дешевые целерончики. Так вот, те битые сектора, которые определяют еще на производстве помечают и заносят в специальный список. который хранится, в зависимости от производителя харда или в специальном разделе, или во флешпамяти или там и там. Наличие заводских бэдов подтверждает график чтения диска. Его можно увидеть прогнав новый диск (из заводской упаковки) какой нибудь утилитой типа Виктории или МХДД. Провалы в графике чтения, который представляет собой логарифмическую кривую это и есть подтверждение наличия заводских сбойных секторов: то есть на этих областях головка харда переходит по указанному адресу. То есть там алгоритм такой: головка доходит до нужного адреса на диске: считывает с него инфу, и если видит что-то подобное: этот блок сбойный, если вы хотите что-то записать, то вместо него работает вооон тот блок, расположенный воооон там.
      э

      Ответить
  1. Уважаемый автор, что-то я не понял про "просто" fsck. У него параметром "-l" не подставляется файл от "badblocks" с перечнем битых секторов, а выполняется совсем другая операция.
    Может подскажете что теперь делать в этом случае? Т. е. например у меня флэшка битая и файловая система там не ext, и в наличии только консоль.

    Ответить
  2. Результат показал Failed. И что умрет в ближайшие сутки. Правда так уже пару недель. Инфу, конечно, скопировал. Есть ли смысл возится с винтом, или можно выбрасывать?

    Ответить
    • А что вам мешает вводить не сам раздел, а диск? /dev/SDxy где x буква (Она обязательна!) и y (Номер раздела.) Если не вводить цифру (у), то система посчитает что вам нужно всё устройство, а не его определённый участок.

      Ответить
  3. Если в линуксе пометить bad сектора они не будет использоваться также и в других системах или только в данной системе? И можно ли такие манипуляции проделывать на диске с важными данными?

    Ответить
    • только в данной системе?
      И можно ли такие манипуляции проделывать на диске с важными данными?
      только в данной.
      важные данные нужно скопировать на исправный диск.
      пс. это ты мне продал ,битый диск,гад?

      Ответить
  4. В Mint можно прямо в утилиту Disks заходить из меню, она там есть по умолчанию, в том числе и в live-дистрибутиве с флешки. Запускаемся с загрузочной флешки Mint, заходим в Disks и смотрим. Если сверху написано количество Bad Blocks, значит они есть. Также в меню программы Disks есть пункт SMART Data & Self-Tests, заходим и смотрим, какие проблемы у диска есть.

    Ответить
  5. Добавить нужно, что диски большого объёма чтобы проверять, нужно увеличивать размер блока. Стандартно 2048, но если попробовать проверять диск на 6 Тб скажем, получите ошибку. Тогда, по вашему примеру: badblocks -v -b 4096 /dev/sda2 -o ~/bad_sectors.txt

    Ответить

Оставьте комментарий