Проверка диска на битые секторы в Linux. Ремонт файловой системы в убунту Проверка диска на битые сектора linux

Неисправный жёсткий диск - одно из самых неприятных явлений в работе компьютера. Мало того что мы легко можем потерять очень много важной информации и файлов, так и замена HDD неслабо бьёт по бюджету. Прибавим к этому потраченное время и нервы, которые, как известно, не восстанавливаются. Чтобы не дать проблеме застать нас врасплох и заранее диагностировать её, стоит знать, как проверить жёсткий диск на ошибки в ОС Ubuntu. Программных средств, предоставляющих такие услуги, предостаточно.

Как в Ubuntu протестировать жесткий диск на ошибки.

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

Открываем терминал и вводим:

Эта команда отображает информацию о всех HDD, которые используются системой.

После этого вводим:

sudo badblocks -sv /dev/sda

Команда служит уже для поиска повреждённых секторов. Вместо /dev/sda вводим имя своего накопителя. Ключи -s и -v служат для того, чтобы отображать в правильном порядке ход проверки блоков (s) и чтобы выдавать отчёт обо всех действиях (v).

Нажатием клавиш Ctrl + C мы останавливаем проверку жёсткого диска.

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

Для того чтобы размонтировать файловую систему, вводим:

Для проверки и исправления ошибок:

sudo fsck -f -c /dev/sda

  • «-f» делает процесс принудительным, то есть проводит его, даже если HDD помечен как работоспособный;
  • «-c» находит и помечает бэд-блоки;
  • «-y» - дополнительный вводимый аргумент, который сразу же отвечает Yes на все вопросы системы. Вместо него можно ввести «-p», он проведёт проверку в автоматическом режиме.

Программы

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

GParted как раз для тех, кому текстовый интерфейс не по душе. Утилита выполняет большое количество задач, связанных с работой HDD на Убунту. В их число входит и проверка диска на ошибки.

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

sudo apt-get install gparted

  1. Открываем приложение. На главном экране сразу же выводятся все носители. Если какой-то из них помечен восклицательным знаком, значит, с ним уже что-то не так.
  2. Щёлкаем по тому диску, который хотим проверить.
  3. Жмём на кнопку «Раздел», расположенную сверху.
  4. Выбираем «Проверка на ошибки».

Программа отсканирует диск. В зависимости от его объёма процесс может идти дольше или меньше. После сканирования мы будем оповещены о его результатах.

Это уже более сложная утилита, которая выполняет более серьёзную проверку HDD по различным параметрам. Как следствие, управлять ей тоже сложнее. Графический интерфейс в Smartmontools не предусмотрен.

Качаем программу:

aptitude install smartmontools

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

ls -l /dev | grep -E ‘sd|hd’

Вбиваем команду для выведения подробной информации о носителе. Стоит посмотреть на параметр ATA. Дело в том, что при замене родного диска, лучше ставить устройство с тем же либо большим ATA. Так можно максимально раскрыть его возможности. А также посмотрите и запомните параметры SMART.

smartctl –info /dev/sde

Запускаем проверку. Если SMART поддерживается, то добавляем «-s». Если он не поддерживается или уже включён, то этот аргумент можно убрать.

smartctl -s on -a /dev/sde

После этого смотрим информацию под READ SMART DATA. Результат может принимать два значения: PASSED или FAILED. Если выпало последнее, можно начинать делать резервные копии и искать замену винчестеру.

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

Safecopy

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

Устанавливаем Safecopy:

sudo apt install safecopy

Переносим файлы из одной директории в другую. Выбрать можно любую другую. В данном случае мы переносим данные с диска sda в папку home.

sudo safecopy /dev/sda /home/

Бэд-блоки

У некоторых могут возникнуть вопросы: «что такое эти битые блоки и откуда они, вообще, взялись на моём HDD, если я его ни разу не трогал?» Bad blocks, или бэд-секторы - разделы HDD, которые больше не читаются. Во всяком случае так они по объективным причинам были помечены файловой системой. И скорее всего, с диском в этих местах действительно что-то не так. «Бэды» встречаются как на старых винчестерах, так и на самых современных, поскольку работают они практически по тем же самым технологиям.

Появляются же сбойные секторы по разным причинам.

  • Прерывание записи из-за отключения питания. Вся информация, поступающая на жёсткий диск, разбивается в виде единиц и нулей на самые разные его части. Сбить этот процесс - значит сильно запутать винчестер.
  • Некачественная сборка. Тут и говорить нечего. У дешёвого китайского устройства полететь может что угодно.

Теперь вы знаете, как сканировать HDD на ошибки. Проверка диска как на Ubuntu, так и на других системах довольно важная операция, которую стоит проводить хотя бы раз в год.

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

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

Важно! Запуск и выполнение FSCK на смонтированной файловой системе может привести к повреждению данных, поэтому используйте данный материал на свой страх и риск. Автор не несет ответственности за любой ущерб, который вы можете причинить.

Для того, чтобы обезопасить себя необходимо:

  • Перейти в однопользовательский режим (Single user mode) и размонтировать файловую систему
  • Загрузить компьютер в режиме восстановления с помощью установочного компакт-диска

Итак, необходимо проверить диски и исправить ошибки файловой системы, приступим.

1) Single user mode

Измените уровень инициализации и размонтируйте файловую систему:

# init 1
# umount /home

Выполните поиск подключенных разделов:

# fsck /dev/sda1

2) Режим восстановления с установочного компакт-диска

Вставьте установочный компакт-диск в дисковод и перезагрузите систему:

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

# linux rescue nomount

Директива NOMOUNT запретит монтирование, так что вы сможете безопасно использовать FSCK.

После этого запустите FSCK для раздела с ошибками:

# fsck -yvf /dev/sda1

LVM (Logical Volume Manager)

Ситуация с LVM (Logical Volume Manager) разделами немного сложнее. Для запуска FSCK для LVM разделов сначала необходимо найти PV (Physical Vollume) , VG (Volume Group) , LV (Logical Extension) и активировать их, для этого выполните последовательно следующие команды:

# lvm pvscan
# lvm vgscan
# lvm lvchange -ay VolGroup00
# lvm lvscan

# fsck -yfv /dev/VolGroup00/LogVol00

По факту выполнения FSCK вернет результат в виде кода, данный код — это уникальный номер, представляющей сумму следующих значений:

0 - Без ошибок (No errors);
1 - Исправлены ошибки файловой системы (Filesystem errors corrected);
2 - Система должна быть перезагружена (System should be rebooted);
4 - Ошибки файловой системы оставили без изменений (Filesystem errors left uncorrected);
8 - Эксплуатационная ошибка (Operational error);
16 - Ошибки при использовании или синтаксические ошибки (Usage or syntax error);
32 - Fsck отменен по запросу пользователя (Fsck canceled by user request);
128 - Ошибка общей библиотеки (Shared-library error).

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

Чтобы избежать таких проблем можно использовать smartmontools. Это программный пакет для управления и мониторинга устройств хранения данных с помощью технологии Self-Monitoring Analysis and Reporting Technology или просто SMART.

Большинство современных ATA / SATA, SCSI / SAS накопителей информации предоставляют интерфейс SMART. Цель SMART - мониторинг надежности жесткого диска, для выявления различных ошибок и своевременного реагирования на их появление. Smartmontools состоит из двух утилит - smartctl и smartd. Вместе они представляют мощную систему мониторинга и предупреждения о возможных поломках HDD в Linux. Дальше будет подробно рассмотрена проверка жесткого диска linux.

Пакет smartmontools есть в официальных репозиториях большинства дистрибутивов Linux, поэтому установка сводится к выполнению одной команды. В Debian и основанных на нем системах выполните:

aptitude install smartmontools

А для Red Hat:

yum install smartmontools

Теперь можно переходить к диагностике жесткого диска linux.

Проверка жесткого диска в smartctl

Сначала узнайте какие жесткие диски подключены к вашей системе:

ls -l /dev | grep -E "sd|hd"

В выводе будет что-то подобное:

Здесь - sdx - имя устройства HDD подключенного к компьютеру.

Для отображения информации о конкретном жестком диске (модель устройства, S/N, версия прошивки, версия ATA, доступность интерфейса SMART) Запустите smartctl с опцией info и именем жесткого диска. Например, для /dev/sda:

smartctl --info /dev/sda

Хотя вы можете и не обратить внимание на версию ATA, это один из самых важных факторов при поиске замены устройству. Каждая новая версия ATA совместима с предыдущими. Например, старые устройства ATA-1 и ATA-2 прекрасно будут работать на ATA-6 и ATA-7 интерфейсах, но не наоборот. Когда версии ATA устройства и интерфейса не совпадают, возможности оборудования не будут полностью раскрыты. В данном случае для замены лучше всего выбрать жесткий диск ATA-7.

Запустить проверку жесткого диска ubuntu можно командой:

smartctl -s on -a /dev/sda

Здесь опция -s включает флаг SMART на указном устройстве. Вы можете его убрать если поддержка SMART уже включена. Информация о диске разделена на несколько разделов, В разделе READ SMART DATA находится общая информация о здоровье жесткого диска.

START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment rest result: PASSED

Этот тест может быть пройден (PASSED ) или нет (FAILED ). В последнем случае сбой неизбежен, начинайте резервное копирование данных с этого диска.

Следующая вещь которую можно посмотреть, когда нужна диагностика HDD в linux, это таблица SMART атрибутов.

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

  • ID # - ID атрибута, как правило, десятичное число между 1 и 255;
  • ATTRIBUTE_NAME - Название атрибута;
  • FLAG - флаг обработки атрибута;
  • VALUE - это поле представляет нормальное значение для состояния данного атрибута в диапазоне от 1 до 253, 253 - лучшее состояние, 1 - худшее. В зависимости от свойств, начальное значение может быть от 100 до 200;
  • WORST - худшее значение value за все время;
  • THRESH - самое низкое значение value, после перехода за которое нужно сообщить что диск непригоден для эксплуатации;
  • TYPE - тип атрибута, может быть Pre-fail или Old_age. Все атрибуты по умолчанию считаются критическими, то-есть если диск не прошел проверку по одному из атрибутов, то он уже считается не пригодным (FAILED) но атрибуты old_age не критичны;
  • UPDATED - показывает частоту обновления атрибута;
  • WHEN_FAILED - будет установлено в FAILING_NOW если значение атрибута меньше или равно THRESH, или в "-" если выше. В случае FAILING_NOW, лучше как можно скорее выполнить резервное копирование, особенно если тип атрибута Pre-fail.
  • RAW_VALUE - значение, определенное производителем.

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

Настройка smartd и smartctl для диагностики и мониторинга в реальном времени

Диагностика hdd в linux в реальном времени настраивается очень просто. Сначала отредактируйте файл конфигурации smartd - /etc/smartd.conf. Добавьте следующую строку:

nano /etc/smartd.conf

/dev/sda -m [email protected] -M test

  • -m - адрес электронной почты для отправки результатов проверки. Это может быть адрес локального пользователя, суперпользователя или внешний адрес, если настроен сервер для отправки электронной почты;
  • -M - частота отправки писем. once - отправлять только одно сообщение о проблемах с диском. daily - отправлять сообщения каждый день если была обнаружена проблема. diminishing - отправлять сообщения через день если была обнаружена проблема. test - отправлять тестовое сообщение при запуске smartd. exec - выполняет указанную программу в место отправки почты.

Сохраните изменения и перезапустите smartd. Вы должны получить на электронную почту письмо подобного содержания:

Также можно запланировать тесты по своему графику, для этого используйте опцию -s и регулярное выражение типа "T/MM/ДД/ДН/ЧЧ", где:

  • T - тип теста:
  • L - длинный тест;
  • S - короткий тест;
  • C - тест перемещение (ATA);
  • O - оффлайн (тест).

Остальные символы определяют дату и время теста:

  • ММ - месяц в году;
  • ДД - день месяца;
  • ЧЧ - час дня;
  • ДН - день недели (от 1 - понедельник 7 - воскресенье;
  • MM, ДД и ЧЧ - указываются с двух десятичных цифр.

Точка означает все возможные значения, выражение в скобках (A|B|C) - означает один из трех вариантов, выражение в квадратных скобках означает диапазон (от 1 до 5).

Например, чтобы выполнять полную проверку жесткого диска linux каждый рабочий день в час дня добавьте следующую строку в smartd.conf:

DEVICESCAN -s (L /../../ / 13)

Выводы

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

Источник перевода.

Предполагал ли Линус Тoрвальдс , создавая свое детище, что Linux будет использоваться во встроенных системах, причем не только в дешевых домашних роутерах, но и в таких серьезных телеком решениях как АТС AVAYA?

Недавно пришлось восстанавливать работоспособность АТС AVAYA одного крупного Заказчика. Это шлюз Avaya G650 (шасси) с сервером Avaya S8400 (процессор). Где в качестве системного диска используется носитель CompactFlash объемом 2 ГБ. Который условно можно считать SSD диском с IDE интерфейсом.
И каково же было мое удивление, когда подключив CF накопитель через карт-ридер я увидел знакомую структуру Linux файловой системы. Что, конечно, упрощало процедуру проверки работоспособности CF накопителя.

Как проверить файловую систему Linux диск на наличие ошибок

В операционной системе MicroSoft DOS (о да, я помню версию 5.0, которая помещалась на одной дискете!) была команда проверки дисков CHKDSK . И нечто подобное есть и в Linux.
Чтобы проверить диск Linux на наличие ошибок файловой системы необходимо выяснить имена файловых систем для проверки:

# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda 20G 4.0G 15G 21% / /dev/sdd1 1G 455M 555M 46% /media/Np%blsl3648B4Jjeiedgyy /dev/sdd6 1G 98M 902M 10% /media/10.13-23dd none 246M 0 246M 0% /dev/shm

Для тестируемого накопителя CF — это /dev/sdd1 и /dev/sdd6
Далее необходимо размонтировать тестируемые файловые системы:

#sudo umount /dev/sdd1 #sudo umount /dev/sdd6

#fsck -y /dev/sdd1 #fsck -y /dev/sdd6

Параметр -y будет автоматом на все вопросы отвечать yes, что как правило большинство пользователей и делает.

Результаты работы утилиты проверки файловой системы Lunux FSCK

В моем случае на одном из разделов были ошибки, которые утилита исправила. После чего CF накопитель был возвращен на свое место и работоспособность АТС Avaya была восстановлена.

by Admin

Рассмотрим способы проверки и диагностики hdd в linux системах. Информация о работе HDD поможет проанализировать состояние и в случае необходимости заменить сбойный носитель, тем самым предотвратив крах системы или потерю данных. Дополнительно прикручиваем наблюдение за smart HDD в нашу систему мониторинга zabbix

Получаем список подключенных накопителей в системе

Для определения, что и куда смонтированно, выполним

Посмотреть занятое место на том или ином накопителе

Если есть софт.райд, проверим его следующей командой

root@big:~# cat /proc/mdstat
Personalities:
md1: active raid1 sdb3 sda3
965888832 blocks super 1.2

md0: active raid1 sdb1 sda1
9756544 blocks super 1.2
unused devices:
root@big:~#

какой raid установлен (собран)
md0 - название устройства raid
sda sdb - включенные устройства в данный raid
- состояние дисков в RAID массиве

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

aptitude install hdpparm sysstat smartmontools

Смотрим состояние скорости чтения с накопителя

При помощи iostat (в составе sysstat) анализируем нагрузку на наши HDD

Смотрим вывод данных по всем дискам c интервалом в 10 сек

Можно определить накопитель для анализа, добавив

При помощи данной утилиты определим нагрузку на наши устройства, статистику ввода / вывода и процентную утилизацию.

avg-cpu: %user %nice %system %iowait %steal %idle
0,16 0,00 1,89 23,75 0,00 74,21

Проверка состояния накопителей

Для начала проверим наш HDD на наличие сбойных блоков, в случае необходимости выделим их и пометим для игнорирования.

badblocks /dev/sda3 -sv > /root/badblockSDA3
Checking for bad blocks (read-only test): 27.93% done, 36:12 elapsed. (0/0/0 errors)

/dev/sda3 - имя проверяемого устройства
s - вывод процентной информации
v - включаем подробный режим
> /root/badblockSDA3 - записываем сбойные секторы в файл

Пометка бэд блоков (в дальнейшем помеченные блоки будут игнорироваться системой):

e2fsck -l /root/badblockSDA3 /dev/sda3

Плохие блоки помечены, с диском можно работать.

ВНИМАНИЕ!!! Данная операция должна производиться на размонтированном носителе или в режиме read-only

ВНИМАНИЕ!!! Проверенное устройство и устройство на на котором будут помечаться сбойные блоки должно быть одно и тоже!

Получаем данные S.M.A.R.T о работе HDD

Где /dev/sdX - имя устройства которое необходимо проверить.
Вы получите вывод атрибутов S.M.A.R.T., значение каждого из которых хорошо описаны в wiki

Мониторинг S.M.A.R.T состояния жестких дисков в Zabbix

Для каждого из накопителей проверяем поддержку SMART

root@big:~# smartctl -i /dev/sda |grep SMART
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
root@big:~#

Если поддерживается но не включен, то включаем

smartctl -s on -S on -o on /dev/sda

проверяем статус командой

smartctl -H /dev/sda |grep "test"| cut -f2 -d: |tr -d " "

root@big:/etc/zabbix# smartctl -H /dev/sda |grep "test"| cut -f2 -d: |tr -d " "
PASSED
root@big:/etc/zabbix#

В конфигурационном файле zabbix агента агента включаем параметр проверки smart для диска

UserParameter=HDD_smart.[*],sudo smartctl -H /dev/$1 |grep "test"| cut -f2 -d: |tr -d " "

где HDD_smart - ключ для zabbix элемента

в sudoers добавляем запись

zabbix ALL=NOPASSWD:/usr/sbin/smartctl

рестартуем sudo и zabbix агента.

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

root@big:/etc/zabbix# su - zabbix -s /bin/bash
Каталог отсутствует или недоступен, вход в систему выполняется с HOME=/
zabbix@big:/$ sudo smartctl -H /dev/sda |grep "test"| cut -f2 -d: |tr -d " "
PASSED
zabbix@big:/$

На zabbix сервер создадим zabbix agent (Активный) элемент данных

Имя - произвольное
Тип - Zabbix агент (Активный)
Ключ - HDD_smart. - для первого диска, для второго соответственно ...
Тип - Символ

И через некоторое время наблюдаем данные