Проверка жесткого диска на битые сектора linux. Проверка диска на битые секторы в Linux

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. - для первого диска, для второго соответственно ...
Тип - Символ

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

Время от времени нужно проверять ваш жесткий диск. Я так полагаю, что ценнее информации на винчестере нет ничего, ну конечно не считая нашей жизни, и будет ой как обидно, когда пропадут ваши семейные фотографии, видеосъемки, нужные рефераты и отчеты по работе, пароли и любые другие важные данные. Как проверить жесткий диск в Linux, а в нашем случае в Убунту, и какие существуют программы для тестирования наших помощников и спасителей — винчестеров? Проверять жесткий диск следует не с установленной на него системы, а с LiveCD/USB. Одной из таких ценных сборок, будет Parted Magic, хотя можно это сделать и с CD/USB Ubuntu. Это полный боекомплект для работы с хардами. Тут вам и GParted, для изменения размеров разделов HDD (аналог Acronis Disc Director), и CloneZilla, для создания точных копий ваших системных дисков или разделов с последующим восстановлением, и GSmartControl — для отчета о состоянии вашего диска и еще много чего. Итак начнем обзор программ для проверки жесткого диска в Ubuntu.

Консольная программа Badblocks .

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

sudo fdisk -l

Чтобы запустить сканирование на наличие битых секторов, достаточно выполнить в Терминале команду:

sudo badblocks -sv /dev/sdb1

где:

/dev/sdb1 — это проверяемый раздел,

-s — выведет информацию о сканировании в процентах, наличии или отсутствии «битых» секторов и т.д.,

-v — выведет подробную информацию о проверке.

Если нужно получить текстовый отчет, тогда нужно выполнить следующую команду:

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

Вместо /dev/sdb1 вы должны указать нужный раздел вашего жесткого диска, а в вашей Домашней директории появится текстовый файлик errors.txt с отчетом. Если бэды все-таки есть, то желательно их пометить, чтобы система не обращалась к ним во время работы с диском. Чтобы пометить bad-секторы, выполните команду:

sudo e2fsck -l errors.txt /dev/sdb1

Ключ -l дает возможность программе использовать файл errors.txt для работы с «битыми» секторами. Но можно избежать двух вышеуказанных команд и выполнить всего навсего одну:

sudo e2fsck -ct /dev/sdb1

Программа e2fsck входит в состав пакета программ E2fsprogs, среди которых есть и badblock, а ключ -c дает возможность использовать утилиту badblock для поиска плохих секторов.

Чтобы проверить файловую систему (ext 2/ext 3/ext 4) выполните следующую команду:

e2fsck -y /dev/раздел вашего диска или диск целиком

Ключ -y сообщает утилите, что нужно отвечать на все вопросы положительно.

Другие часто используемые параметры:

-p,-a автоматически «ремонтировать» файловую систему без лишних вопросов.
-f форсированная (принудительная) проверка. Проверка произойдет в любом случае, даже если файловая система не нуждалась в ней.
-c запускает программу badblocks, чтобы найти и отметить «битые» секторы на диске;
-v будет отображена детальная информация о проверке.

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

Программа Диски.

В Убунту имеется отличная программа Диски , которая выдает информацию по всем подключенным устройствам в системе (жесткие диски, флеш-накопители, CD/DVD приводы и т.д.) Запустив ее, вы сможете узнать данные S.M.A.R.T. по интересующему диску.

Программа GSmartControl

И напоследок хочу порекомендовать программу GSmartControl , которая является графической оболочкой (GUI) для консольной программы — smartctl. Найти ее можно в Центре приложений Убунту, либо установить через Терминал командой:

sudo apt-get install gsmartcontrol

Программа показывает полную информацию по данным S.M.A.R.T. Подробнее по каждому пункту можно узнать .

Ну вот вы и узнали как проверить жесткий диск в linux. Пусть эта информация послужит вам во благо! Удачи!

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

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

Важно! Запуск и выполнение 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).

Пришлось и мне столкнуться с данной проблемой. Мой один товарищ, у которого установлена Убунту на старенький ноутбук ASUS, и который просто не хочет хоть иногда включать мозги, обратился ко мне с такой проблемой. На его ноуте установлена новая Убунту 12.10 и очень часто система просто не хочет грузиться, выбрасывая в черный экран, либо застывая на фиолетовом фоне. А вот в последнее время начало выскакивать такое вот сообщение, что-то типа «Операционная система не смогла загрузиться. Выберите для дальнейших действий нужную клавишу…» И дальше идет описание, что нужно нажать. Я уже точно не помню, какие клавиши предлагает нажать система, но смысл такой, что для автоматического исправления ошибок нажмите такую-то клавишу, для ручной отладки другую, и чтобы игнорировать это сообщение предлагается нажать третью кнопку. Автоматическое исправление ошибок ни к чему не приводило и загрузка операционной системы так и не доходила до логического завершения. Вот и решил я попробовать знаменитую команду fsck .

Для начала нужно загрузиться либо с загрузочной флешки с Ubuntu (Lubuntu, Xubuntu, Kubuntu и т.д.), либо с диска Ubuntu Live CD. Теперь нам нужно узнать, какой именно раздел с Убунту нам нужно просканировать для исправления файловой системы. Запускаем Терминал (Ctrl-Alt-T) и выполняем команду:

sudo fdisk -l

Данная команда покажет нам все диски, флешки, которые примонтированы к системе. Я приведу пример с моим личным компьютером, а не с ноутбуком приятеля. Вот, что вышло у меня:

ubuntu@ubuntu:~$ sudo fdisk -l

Disk /dev/sda: 640.1 GB , 640135028736 bytes
255 heads, 63 sectors/track, 77825 cylinders, total 1250263728 sectors



Disk identifier: 0x0009d6f7


/dev/sda1 * 2048 61442047 30720000 83 Linux
/dev/sda2 61442048 73730031 6143992 82 Linux swap / Solaris
/dev/sda3 73730048 1250263039 588266496 83 Linux

Disk /dev/sdb: 500.1 GB , 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xb9ff6f01

Device Boot Start End Blocks Id System
/dev/sdb1 * 16065 100197404 50090670 83 Linux
/dev/sdb2 105322201 976771071 435724435+ 5 Extended
/dev/sdb3 100197405 105322139 2562367+ 82 Linux swap / Solaris
/dev/sdb5 105322203 832110591 363394194+ 7 HPFS/NTFS/exFAT
/dev/sdb6 832112640 860755218 14321289+ 83 Linux
/dev/sdb7 860758016 862613503 927744 82 Linux swap / Solaris
/dev/sdb8 862615552 976771071 57077760 83 Linux

Partition table entries are not in disk order

Disk /dev/sdc: 8115 MB , 8115978240 bytes
250 heads, 62 sectors/track, 1022 cylinders, total 15851520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xc3072e18

Device Boot Start End Blocks Id System
/dev/sdc1 * 32 15847625 7923797 b W95 FAT32

Как видно из вывода команды sudo fdisk -l , у меня имеются 2 жестких диска (sda)640 Гб и (sdb)500 Гб, а также флешка (sdc)8Гб, с которой я собственно и загружался. Я знаю, что моя основаня система с Убунту 12.04 находится на диске sda, а раздел с операционной системой соответственно называется sda1.

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

sudo fsck -y -f -c /dev/sda1

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

sudo umount /dev/sda1

Ключи и параметры команды fsck:

y - всегда отвечать yes на все вопросы (имеется альтернатива: ключ p - начинает проверку в полностью автоматическом режиме);

f - принудительная проверка файловой системы (даже если файловая система помечена как полностью работоспособная)

c - ищет битые блоки (bad blocks), а после отмечает их соответствующим образом

/dev/sda1 - устройство или раздел, которые нужно проверить. Хотя команда может иметь и другой вид. Например:

sudo fsck -p /dev/sda1

В данном случае добавлен только ключ -p. Вы просто почитайте о всех ключах команды fsck и добавляйте именно нужные вам ключи. Чтобы узнать о всех возможностях программы введите в Терминале:

man fsck

Вот, что выдал Терминал после проверки:

ubuntu@ubuntu:~$ sudo fsck -y -f -c /dev/sda1
fsck from util-linux 2.20.1
e2fsck 1.42.5 (29-Jul-2012)
Checking for bad blocks (read-only test): 0.00% done, 0:00 elapsed. (0/0/0 errdone
/dev/sda1: Updating bad block inode.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information

Если и есть то, с чем вы очень не хотите столкнуться в вашей операционной системе, то это точно неожиданный выход из строя жестких дисков. С помощью резервного копирования и технологии хранения 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. Не забывайте выполнять регулярное сканирование, потом будете себя благодарить. Вы уже делали это раньше? Будете делать? Или используете другие методы? Напишите в комментариях!

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

Софт для Windows