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

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

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

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

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

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

Или если вы предпочитаете использовать графический интерфейс, это можно сделать с помощью утилиты 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:

Читайте также:  Аутентификация linux active directory

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

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

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

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

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

Выводы

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

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Похожие записи

Оцените статью

Об авторе

Основатель и администратор сайта losst.ru, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux, интересуюсь всем, что связано с информационными технологиями и современной наукой.

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

Если ты настолько туп что не понимаешь что такое бэд блоки, то какого хрена ты вообще тут пишешь Ответить

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

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

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

Читайте также:  Arch linux wifi usb

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

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

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

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

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

Источник

Восстановление сбойных секторов SATA дисков в линукс

Восстановление сбойных секторов HDD и SATA дисков в Linux.

Предыстория: давно искал аналоги HDD Regenerator, Victoria, MHDD для линукс, и ничего не находил. Натолкнулся на hdrecover 0.5, но реального восстановления сбойных секторов не произошло. HDrecover час шел до сбойного сектора, аттемпил с разных мест, угрожал, что убьёт данные, я соглашался на data destory, но сбойные сектора не восстанавливал.

И вот упершись рогом, решительно взялся за линукс. Уже лет 20 где-то и как-то восстановление происходит, но в линуксе никак. С жестким диском повезло, на нём была куча сбойных секторов. 250GB Seagate 5400rpm из ноубука. Так как было время для экспериментов, HDD Regenerator на старом компе через IDE бодро восстанавливал сектора, а hdrecover — нет.

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

Как-раз мне на этом жестком диске попался сектор, который иногда поддавался attemp pounce — то есть автор hdrecover на каких-то моделях жестких дисков может быть увидел эффект, когда можно добиться восстановления данных из сбойного сектора путём попыток чтения этого сектора сразу после чтения далеко и близко расположенных мест диска. Физически головка движется с края диска не так позиционируясь, как если бы она передвинулась с соседней дорожки.. В итоге у меня: сектор иногда читался, но 100% не восстанавливался.

Теперь вводные: Мне НЕ нужно было восстанавливать данные. Мне нужно было восстановить только сбойные секторы с потерей информации. Если же вам нужно восстановить максимум информации: Копируйте всё на другой несбойный диск: ddrescue, dd sync,noerror и после этого с нормального диска восстанавливайте через R-Studio Recovery. Если диск сыпется, то все эксперименты с восстановлением секторов и попыток запуска десятков «лучших программ восстановления данных» приводят только к ещё большей потере данных.

Читайте также:  Открыть ком порт linux

Так как мне не нужны были attemp pounce сектора, которые бы то читались, то не читались, из программы была убрана эта функциональность множественных попыток чтения, так как толку от этого не было, это сильно занимало время восстановления, и далее при использовании программ восстановления данных сильно бы их замедляло. Так даже лучше — при первой ошибке чтения перезаписываем сектор, а диск там уж сам что-то сделает: перепишет или remap. Как именно remap в линуксе сделать, я ещё не понял. Да и практики мало (чем remap в victoria отличается, то же непонятно, чаще не восстанавливает никак сектора)

hdrecover, записывая в устройство сектор, не восстанавливал данные. Попробовав dd if=/dev/zero of=/dev/sdX count=1 seek=XXX, увидел, что сектор XXX восстановился. Добавив 2-й попыткой восстановления команду dd уже в саму программу hdrecover, был получен положительный результат.

Восстановление секторов конкретного жесткого диска было успешным и на старом компьютере с IDE — SATA контроллере (не AHCI), и на переходнике USB 3.0-SATA.

Оставляйте комментарии по результатам своего восстановления.

Что ещё можно добавить в программу для функциональности: первичное быстрое чтение всего диска скачками для выявления большой сбойной области сразу.

Для чего может быть нужно множественное восстановление сбойных секторов: когда надоело смотреть лог и давать команду dd восстанавливая вручную, когда невозможно достать жесткий диск и провести процедуру на старом SATA контроллере через HDD Regenerator, когда данные не сильно нужны (восстановится — нормально, прогоним chkdsk или fsck, не восстановится — переустановим систему). Ну а сама программа hdrecover может использоваться для тестирования жестких дисков сразу с режимом восстановления.

P.S. Если диск сильно цыкает — то скорее всего он не может спозиционироваться на дорожку, и hdrecover вряд ли поможет.

P.S.S. для новичков в линукс: вывод хвоста сислога в отдельном окне: tail -f /var/log/syslog — и там видны результаты подключения USB устройств, ошибок дисков и номера сбойных секторов.

Исходные тексты и скомпилированная на 64 бит программа:

Файл [download url=»http://agansk.ru/tech/wp-content/uploads/2019/04/hdrecover-0.5-dd.tar.gz»]

3 thoughts on “ Восстановление сбойных секторов SATA дисков в линукс ”

Если сбойные сектора не восстанавливаются, то для работы на таком диске можно сделать такое:
глянуть, что где: fdisk -l
глянуть mount, если надо отмонтировать нужный диск: umount /dev/sdb1
проверим на сбойные сектора: badblocks -s /dev/sdb1 > /home/user/sdb1_badblocks
Выполним команду для игнорирования сбойных секторов, что бы исключить их от использования в ОС:
e2fsck -l /home/user/sdb1_badblocks /dev/sdb1 Сам не пробовал, если у меня сбойные сектора не восстанавливаются — диск идёт с пометкой сбойный, максимум: для хранения неважной информации..

Если сбойных секторов очень много, не сотни, а десятки тысяч, можно изменить в тексте hdrecover.cpp команду перезаписи на count=16 или больше, для ускорения процесса

whdd для командной строки удалось скомпилять в ubuntu 16.04 (apt install dialog libncurses5-dev libncursesw5-dev). И на debian 8 и на убунту выбор ata или posix приводил к ошибке сегментирования.
hddsuperclone для графического экрана не копирует смонтированный диск..

Источник

Оцените статью
Adblock
detector