Содержание

Проверка состояния жестких дисков в Linux

Тремя наиболее популярными инструментами для сканирования дисков в Linux являются badblocks, fsck и GSmartControl.

Получить список всех HDD подключенных в систему можно например с помощью команды:

fdisk -l

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

Если необходимо посмотреть какие устройства и куда смонтированы, то это можно сделать с помощью команды:

mount

Также можно получить краткий вывод списка подключенных HDD с указанием их разделов, размеров, и точек монтирования при помощи команды:

lsblk

Проверка состояние диска с помощью fsck

Команда fsck (от англ. File System Consistency Check) используется для проверки и восстановления файловых систем в Unix-подобных ОС, таких как Linux, macOS и FreeBSD. Утилита считывает метаданные файловой системы и сравнивает их с реальными данными на диске. Если fsck обнаруживает какие-либо ошибки, утилита предлагает методы их решения.

Утилита fsck по умолчанию входит в состав дистрибутивов Linux. Для её использования не требуется никаких специальных шагов или процедуры установки.

Важно! Перед запуском утилиты следует размонтировать диск. Запуск fsck на смонтированном диск приведет к повреждению данных.

Базовый синтаксис:

fsck <options> <filesystem>

здесь:

Наиболее часто применяемые параметры:

Список параметров:

Более подробную информацию об утилите fsck можно найти на ее справочной странице:

man fsck

Использование fsck с графическим интерфейсом

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

Соответственно если GParted не установлена в системе, то сначала необходимо её установить:

sudo apt-get install gparted

Затем следует открыть GParted и в правом верхнем углу окна программы выбрать диск, который необходимо проверить. Далее в окне программы нажмите на соответствующем разделе диска ПКМ и выберите «Проверить».

Сканирование с помощью badblocks

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

Синтаксис:

$ sudo badblocks [параметры] /dev/имя_раздела_диска

где:

Некоторые параметры:

Важно: перед использованием badblocks рекомендуется размонтировать диск.

По умолчанию утилита выполняет сканирование диска без вывода какой-либо информации на экран. Чтобы получить данные о результате работы badblocks, используйте с командой опцию -v

Пример использования:

sudo badblocks -v -n /dev/sda2 -o ~/bad_sectors.txt

Используя полученный в результате файл (т.е. ~/bad_sectors.txt) мы при помощи программы e2fsck можем пометить сбойные блоки и они в дальнейшем будут игнорироваться системой:

e2fsck -l ~/bad_sectors.txt /dev/sda2
ВНИМАНИЕ! Данная операция должна проводиться на размонтированной файловой системе, либо в режиме read-only! Проверенное устройство и устройство на котором будут помечаться сбойные блоки должно быть одно и тоже! .

Оценка состояния и работоспособности дисков с помощью GSmartControl

GSmartControl — это инструмент с графическим интерфейсом (GUI), предназначенный для мониторинга и управления жесткими дисками и твердотельными накопителями (SSD). Эта утилита проверяет состояние дисков и сканирует их для поиска поврежденных секторов. Инструмент работает при помощи технологии SMART (Self-Monitoring, Analysis and Reporting). Она используется для получения информации о состоянии дисков, их температуре и количестве часов работы.

Больше информации по применению здесь: Gsmartcontrol

Проверка диска при помощи программы dd

Диск может быть проверен на ошибки при помощи программы dd.

Следующая команда просто выполняет поблочное чтение диска, ничего плохого не случится:

dd if=/dev/ada0 of=/dev/null bs=512 status=progress

При встрече первого бэд-блока программа завершится с ошибкой:

dd: /dev/ada0: Input/output error MiB) transferred 395.000s, 8111 kB/s
 6266577+0 records in
 6266577+0 records out
 3208487424 bytes transferred in 404.157958 secs (7938697 bytes/sec)

Чтобы сканирование при встрече бэд-блока продолжалось (таким образом выясним сколько всего бэд-блоков на диске):

dd if=/dev/ada0 of=/dev/null bs=8M status=progress conv=noerror

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

dd if=/dev/ada0 of=/dev/null bs=8M conv=noerror | & tee /tmp/log.txt 

.