Как исправить битые сектора в 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 fdisk -l

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

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

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

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

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

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

sudo fsck -f /dev/sdb1

Записки администратора

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

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

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

Creative Commons License

Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .

Об авторе

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

Reparar HDD en Ubuntu

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

В то время как в Linux у нас есть очень эффективные инструменты и довольно мощный для этого типа задач, это превосходно, так как мы не собираемся ломать голову, глядя среди многих, которые существуют для Windows, и большинство из них основаны на том же методе.

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

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

Теперь внутри dи инструменты, которые мы будем использовать, эти плохие блоки, этот мощный инструмент поможет нам найти те сектора, в которых произошел сбой или которые больше не подходят для хранения информации, и попытаться восстановить их.

Индекс

  • 1 Использование плохих блоков для ремонта жесткого диска.
  • 2 Как изолировать сбойные сектора жесткого диска?

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

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

sudo fdisk -l

Как только это будет сделано, мы увидим точку монтирования нашего диска. важно, чтобы диск, который мы собираемся анализировать и восстанавливать с помощью плохих блоков, не использовался, так что это диск, на котором в настоящее время установлена ​​ваша система, я рекомендую вам использовать Live CD / USB вашей системы.

Точка монтирования уже определена переходим к выполнению badblocks с терминала, в моем случае диск, который я собираюсь ремонтировать, монтируется в / dev / sdb

sudo badblocks -s -v -n -f /dev/sdb

где мы указываем на следующие:

  • -s. Он показывает нам процесс сканирования диска, показывая нам уже проверенные сектора.
  • -в. Он указывает используемый режим записи.
  • -n. Это переводит нас в неразрушающий режим, это означает, что поврежденные сектора будут восстановлены, а информация на жестком диске не будет повреждена или удалена.
  • -f. Это исправит поврежденные сектора.

В моем случае это диск, на который уже была сделана резервная копия информации, поэтому у меня нет проблем с данными, поэтому все данные будут перезаписаны, блок за блоком, я выполняю следующее:

sudo badblocks -wvs /dev/sdb
  • – в: Режим записи (деструктивный).
  • -s. Он показывает нам процесс сканирования диска, показывая нам уже проверенные сектора.
  • -в. Он указывает используемый режим записи.

Нам просто нужно набраться терпения, так как в зависимости от повреждения и размера диска это может занять от часов до дней. Поэтому я рекомендую вам оставить компьютер и подготовиться к марафону хорошей серии, если ваш диск сильно поврежден.

Как изолировать сбойные сектора жесткого диска?

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

Этот инструмент это хорошее дополнение для плохих блоков, и я также рекомендую использовать его для анализа и профилактического обслуживания, так как при периодическом использовании этого инструмента мы будем иметь диск в хорошем состоянии на долгое время.

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

sudo fsck -cfvr /dev/sda

Где мы указываем следующее:

  •  -c. Проверить блоки на диске.
  • -f. Проведите проверку принудительно, даже если все в порядке.
  • -v. Показать дополнительную информацию.
  • -r. Интерактивный режим. Ждите нашего ответа.

Точно так же мы должны ждать и быть терпеливыми.

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

Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

Вы можете быть заинтересованы

There are terminal utilities available in Linux which can help you to manage hard disk bad sectors. You can scan and mark them as unusable as well using these utilities.

Bad sectors or bad blocks are damaged portion of your mechanical hard disk drive which can not be used at all for data storing purposes. However, the operating system still can write to those sectors unless you specifically mark them as ‘bad’ or unusable. Also if you have data stored in those areas of the hard drive, it is very difficult to recover those as well.

Although, the latest computer storage technology such as SSD, etc almost eliminates this problem. However, there is still a huge number of hard disk drives in use today which is aging and might slowly start having bad sectors. 

Hence, you should periodically scan your hard drive (especially aging ones) for bad sectors if you feel your system is slowing down, or, disk IO is increasing. In Linux (Ubuntu, Fedora, and other distributions), you can easily do this via below terminal commands. 

How to Manage Disk Bad Sectors in Linux

It is better to run below commands when your disk is not mounted with the operating system. Hence I would suggest, you try this using LIVE operating system boot from a USB stick. You can create a LIVE USB using this guide with any Linux operating system of your choice (recommended: Ubuntu).

However, you can still run these commands in your installed Linux distribution but you should not scan or mark the mounted “/” root filesystem.

Scan for Bad Sectors

As a first step, identify the disk partition which you want to scan for bad sectors. If you have GParted installed, it is easy to find out. Otherwise, you can run below command (lsblk – List block devices) to view your disk partitions. 

sudo lsblk -o name,mountpoint,label,size,uuid

If you are running above command via LIVE USB, make sure you can identify your HDD and USB stick. Typically HDD should be defined as /dev/sda.

Then you can run badblocks command as below with the verbose (-v) switch. And save the output to a text file for further investigation. This is just a verification whether you have bad sectors in the hard drive or not. 

sudo badblocks -v /dev/sda1 > ~/bad_sectors.txt

Repair Bad Sectors

For ext2, ext3, and ext4 file systems, you can use e2fsck utility to check and repair bad sectors. In the terminal run below command with admin privilege to check and repair. 

sudo e2fsck -cfpv /dev/sda1

Make sure to replace sda1 with the proper device identifier. The parameters “c” searches for bad blocks and add it to a list, “f” does a check on the file system. The “p” parameter repairs anything if possible and “v” is the verbose mode which gives you the terminal output of the command progress.

You can also specify the bad_sectors.txt file created in the earlier steps as well to force e2fsck to repair those in the file only via the below command.

sudo e2fsck -l bad_sectors.txt /dev/sda1

For other file systems (such as FAT32), you can use fsck.

sudo fsck -l bad_sectors.txt /dev/sda1

However, the above command execution might take several hours to run depending on your disk partition size and health of your disk. So be ready before you start the command. Try not to terminate the command via CTRL+C or CTRL+Z while it is in progress. 

I hope this tutorial helped you to identify issues in your hard drive and mark them as bad to prevent further data loss. Remember that even if you mark the sectors as ‘bad’, the disk is still physically damaged already. It is merely a software fix to mark those tracks as bad to tell the operating system not to access. If your hard disk started having bad sectors, in the long run, it would become worse. Hence is it recommended that you should start backing up your data and replace your hard drive with a new one or go for the latest SSD drives.

In the olden days you used to have to take a note of the badblocks that were written on the drive and enter those in the defect list before formatting the drive, because hard disk surfaces were never “perfect”, manufacturer’s got wise to this because people buying disks would look at the defect table printed on the disk and buy the ones with the least amount of defects…

Now scroll forward 20 or so years and hard disk manufacturers hide the fact a brand new disk has bad blocks with the firmware, when you buy a brand new disk it will have in all probability bad blocks already, the firmware will detect newly grown badblocks and maps them out from a set of spare cylinders it has, but this only happens when a write operation occurs on that sector and the ECC algorithm detects bit failure, only then will it map the block out. So getting back to the point you can force a drive to map out the badblocks by simply using DD, ie/ [edit: following example was edited to prevent accidental drive destruction: removed wildcard character, replaced with X].

WARNING: DO NOT BLINDLY USE THE dd COMMAND BELOW IF YOU DO NOT KNOW WHAT IT DOES.

dd if=/dev/zero of=/dev/sdX bs=1M 

obviously alter the of=target to reflect the drive you want to zero
this is the quickest way to re-map a drives defects, its also the quickest way to totally trash your Linux setup by getting the target drive wrong, so check, double check then check again, before you press the enter key. You can increase the size of the blocksize in the dd command to optimize read/writes and perhaps make things go quicker, but there are diminishing returns after a point. I find anything between 1M and 8M works best for me

You can get DD to just write one sector, the bad one… to get it remapped, so you don’t have to backup your drive, but that’s a whole different kettle of fish and Russian roulette if you don’t know exactly what you’re doing …..

This command WILL destroy everything on your hard drive including any partitions. But it will force the drive to map out any bad sectors it may have.

It is perfectly ok for a disk to have bad sectors as long as they aren’t on the boot sector, if they are then the drive is useless, if you notice a few months later that your drive has developed more bad sectors then it’s time to start shopping for a replacement.

I’ve revived hundreds of drives like this and they’ve lived on for many years afterwards, a bad sector isn’t necessarily the death knell for the drive.

Добавить комментарий