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

Восстановление сбойных секторов 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. Если диск сыпется, то все эксперименты с восстановлением секторов и попыток запуска десятков «лучших программ восстановления данных» приводят только к ещё большей потере данных.

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

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

Читайте также:  Linux build kernel driver

Восстановление секторов конкретного жесткого диска было успешным и на старом компьютере с 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 для графического экрана не копирует смонтированный диск..

Источник

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

Для хранения и обработки информации на рабочей станции используются носители HDD либо SSD. Владельцы записывают на них фото, видео, любимые книги, игры и т.д. Но что делать, если диск выдает ошибки или, хуже того, не читается операционной системой? Статья расскажет о том, как проверить жесткий диск на битые секторы в ОС семейства Linux. В качестве примера возьмем Ubuntu 18.04.3.

Что такое битый сектор?

Для начала разберёмся, что это за проблема – битый сектор. Сектор представляет собой микроэлемент на носителе, который отвечает за операции чтения/записи. Понятие «битый» применятся к элементу в том случае, если он перестал реагировать на запросы операционной системы.

Читайте также:  Включить суперпользователя linux mint

Различают два типа повреждений: физическое и логическое. В первом случае подразумевается, что сектор вышел из строя из-за механических поломок или физических повреждений: например, его повредила головка носителя, жесткий упал на твердую поверхность, в него попала влага и т.д.

К логическим повреждениям относят сектора, которые ОС не читает. При обращении к ним возникает ошибка, поэтому они отмечаются как битые. Хорошая новость в том, что логические ошибки исправляются.

Зачем нужна проверка диска?

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

Программы для проверки диска

Расскажем про некоторые программы для Linux-систем.

Badblocks

Битые сектора в английском языке называют badblocks, отсюда и название утилиты. Она интегрирована в любой релиз Linux. Перед ее запуском определимся с количеством HDD, доступных в ОС. Наберем в терминале:

sudo fdisk -l

Информация представлена в виде списка с подробным описанием каждого раздела.

fdisk

Теперь запустим приложение для исправления ошибок.

sudo badblocks -v /dev/sda1 > badsectors.txt

Синтаксис расшифровывается следующим образом:

  • Badblocks -v. Утилита после операции выдает подробную информацию.
  • /dev/sda1 – раздел, приложение проверяет.
  • badsectors.txt – файл, в который утилита отправляет результат проверки. Имя придумывается произвольное.

Если при проверке найдены битые сектора, то воспользуемся утилитой в зависимости от типа файловой системы. В большинстве случаев для домашней ОС семейства Linux использует файловую структуру Ext. Для нее подходит приложение e2fsck. Если же ОС использует другой тип, то воспользуемся альтернативой – fsck.

По умолчанию оба варианта интегрированы в ОС.

Вводим в терминале команду:

sudo e2fsck -l badsectors.txt /dev/sda1

sudo fsck -l badsectors.txt /dev/sda1

Ключ -I означает, что утилита собирает сведения о поврежденных секторах из файла badsectors.txt, а после пробует исправить их.

SMARTMONTOOLS

Второй способ проверки жесткого диска – приложение Smartmontools. Оно работает со встроенной микропрограммой на жестких дисках под названием S.M.A.R.T, которая во время старта компьютера автоматически проверяет носитель на наличие ошибок и проблем.

Программа не входит в состав стандартного программного обеспечения, поэтому проинсталлируем ее:

sudo apt-get install smartmontools

После инсталляции запускаем приложение с правами администратора:

sudo smartctl -H /dev/sda1

ПО возьмет результаты проверки из S.M.A.R.T и отобразит в терминале для пользователя.

Если необходимо использовать дополнительные функции программы, то используем ключ man:

man smartctl

Например, для отображения подробной информации о жестком диске используем ключ –a или –all.

Gparted

Третий метод проверки – программа для разбивки носителя под названием Gparted. Для ее инсталляции вводим:

sudo apt-get install gparted

Установка займет максимум две минуты.

Важно! Запускаем ПО с правами администратора для получения доступа к расширенному функционалу.

Gparted

Проверка диска

Нажимаем правой кнопкой мыши на логическом томе, выбираем раздел «Проверка» (Check). В нижней строке появится информация о запланированной операции.

Читайте также:  Drivers touchpad asus linux

Подтверждение в Gparted

Выполнение операций в программе

Нажимаем иконку, которая отмечена синей стрелкой на изображении выше, чтобы выполнить проверку. Процесс может занять несколько часов.

Важно! Проверка и другие аналогичные действия выполняются только на неактивном логическом томе.

Если битые сектора возникают на системном диске, то используем загрузочную флэшку для запуска Live Ubuntu. В результате создается виртуальный жесткий диск с ОС Ubuntu.

Заключение

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

Источник

Исправление битых секторов средствами Linux

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

Для запуска проверки нужно загрузиться с Live CD Linux.
Или же осуществить проверку из виртуальной машины, как предложено в этой заметке. При отсутствии двух компьютеров, это позволяет продолжить работу с основной системой во время проверки. А проверка может занять не один час, в зависимости от объема и состояния сбойного диска.

Расскажу немного подробнее про этот метод:
Для загрузки Live-CD я использовал Hyper-V.
Хочу отметить что нам даже не придется устанавливать ОС для проверки диска, что не только делает этот вариант удобным, но и быстрым.

Настройка виртуальной машины.

Если вы не хотите грузится из виртуальной машины или вы сами знаете как это сделать, то смело переходите к следующему разделу

1) Заходим в «Управление дисками» и переключаем состояние проверяемого диска на «Вне сети»;
2) Скачиваем любой дистрибутив Linux. Например Ubuntu;
3) Создаем сетевой коммутатор(необходим для создания машины);
4) Открываем «Диспетчер Hyper-V»->Действие->Создать->Новая машина;В процессе создания машины нужно будет указать ранее созданные коммутатор(шаг «настройка сети») и скачанный образ Ubuntu(шаг «Параметры установки»)
5) Перейти в параметры машины->Контроллер 0 IDE->
Добавить Жесткий диск->Физический жесткий диск;
Для того что бы последний пункт был активен, диск должен быть переведен в статус «Вне сети»6) Запустить виртуальную машину кнопкой «Пуск»;
7) При загрузке с указанного образа выбрать
«Запустить Ubuntu без установки»;
8) После загрузки графической оболочки Live CD открываем терминал.

Проверка и «лечение» диска

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

Для запуска сканирования на бэдблоки используем команду:

sudo badblocks -s /dev/sdb1 > /badblocks.txt

Ключ -s позволит вместо полотна текста видеть прогресс сканирования диска в процентах. А для того что бы не записывать найденные сбойные сектора руками, перенаправляем их в текстовый файл.

Следующая команда запускает утилиту, которая пометит на диске сектора(взяв их из нашего файла), которые системе не нужно использовать:

sudo e2fsck -l /badblocks.txt /dev/sdb1

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

Источник

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