Проверка диска на наличие плохих секторов возникает нежданно и лучше знать как это сделать имея под рукой всё необходимое. Вариантов проверки дисков множество. Расскажу о проверке средствами консоли Linux. Просто и ничего лишнего.
Содержание:
Причины для проверки диска
Основная причина проверки это как правило медленная работа системы или зависание при определенных действиях. Вывести диск из строя могут разные факторы. Вот некоторые из них:
- Время жизни диска не вечна;
- Некорректные выключения системы при пропадании питания;
- Физические удары;
- Запуск холодного диска зимой.
Самое лучшее это периодически проверять диск просто так. На ранней стадии обнаружения гораздо больше шансов сохранить важные данные.
Храните важные данные в двух совершенно разных физически местах. Только такой подход гарантирует вам полную сохранность данных.
Определение диска для проверки
Для того чтобы понять какой диск проверять нам достаточно ввести команду в консоли которая выдаст нам список всех имеющихся дисков в системе.
fdisk -l = вывод части команды = Диск /dev/sda: 232.9 GiB, 250059350016 байт, 488397168 секторов Единицы: секторов по 1 * 512 = 512 байт Размер сектора (логический/физический): 512 байт / 512 байт Размер I/O (минимальный/оптимальный): 512 байт / 512 байт Тип метки диска: dos Идентификатор диска: 0x42ef42ef Устр-во Загрузочный начало Конец Секторы Размер Идентификатор Тип /dev/sda1 * 2048 184322047 184320000 87.9G 7 HPFS/NTFS/exFAT /dev/sda2 184322048 488394751 304072704 145G 7 HPFS/NTFS/exFAT
Мы видим в выводе диск который нам надо проверить. Диск имеет 2 раздела с данными.
Проверка диска на битые секторы
Перед проверкой разделы необходимо отмонтировать. Как правило я загружаю операционную систему на базе Linux c Live образа или использую подготовленный PXE сервер на котором присутствуют и другие программы для проверки жестких дисков.
Можно сразу запустить проверку с исправлением, но мне кажется это неправильно. Гораздо логичней вначале проверить диск и собрать информацию обо всех битых секторах и только после этого принять решение о дальнейшей судьбе диска.
При появлении хотя бы нескольких плохих секторов я больше диск не использую. Пометку плохих секторов с попыткой забрать из них информацию использую только для того чтобы сохранить данные на другой диск.
Создание файла для записи плохих секторов
Создадим файл указав для удобства имя проверяемого раздела.
touch "/root/bad-sda1.list"
Проверка диска утилитой badblocks
Запустим проверку с информацией о ходе процесса с подробным выводом. Чем больше диск тем дольше проверка!
badblocks -sv /dev/sda1 > /root/bad-sda1.list = Информация о ходе процесса = badblocks -sv /dev/sda1 > /root/bad-sda1.list Checking blocks 0 to 976761542 Checking for bad blocks (read-only test): 0.91% done, 1:43 elapsed. (0/0/0 errors) = Подробный вывод результата = badblocks -sv /dev/sda1 > /root/bad-sda1.list Checking blocks 0 to 156289862 Checking for bad blocks (read-only test): done Pass completed, 8 bad blocks found. (8/0/0 errors)
В нашем случае диск с 8 плохими секторами.
Пометка плохих секторов диска
Запустим утилиту e2fsck, указав ей список битых секторов. Программа пометит плохие сектора и попытается восстановить данные.
Указывать формат файловой системы нет надобности. Утилита сделает всё сама.
e2fsck -l /root/bad-sda1.list /dev/sda1 = Вывод команды = e2fsck -l /root/bad-sda1.list /dev/sda1e2fsck 1.43.3 (04-Sep-2016) Bad block 44661688 out of range; ignored. Bad block 44661689 out of range; ignored. Bad block 44661690 out of range; ignored. Bad block 44911919 out of range; ignored. Bad block 44958212 out of range; ignored. Bad block 44958213 out of range; ignored. Bad block 44958214 out of range; ignored. Bad block 44958215 out of range; ignored. /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 /dev/sda1: ***** FILE SYSTEM WAS MODIFIED ***** /dev/sda1: 11/9773056 files (0.0% non-contiguous), 891013/39072465 blocks
Подготовка диска для проверки
Бывают случаи когда таблица разделов повреждена на диске и нет возможности посмотреть какие есть разделы с данными. Возможно вам не надо никаких данных на диске и вы хотите диск отформатировать и затем проверить. Случаи бывают разные и надо подходить исходя из ситуации.
С помощью команды с ключом -z вы сможете создать заново таблицу разделов и создать необходимые вам разделы.
cfdisk -z /dev/sda
Как работать с утилитой cfdisk я не буду объяснять, так как это выходит за рамки данной статьи.
Предположим что вы создали из всего диска лишь один раздел /dev/sda1. Для форматирования его в ext4 достаточно выполнить команду:
mkfs.ext4 /dev/sda1 = Вывод команды = mke2fs 1.43.3 (04-Sep-2016)Creating filesystem with 244190385 4k blocks and 61054976 inodesFilesystem UUID: c4a1eeed-960a-4aea-a5ff-02ce93bf0a2eSuperblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 102400000, 214990848 Allocating group tables: done Writing inode tables: done Creating journal (262144 blocks): doneWriting superblocks and filesystem accounting information: done
Вывод
Проще и понятней механизма проверки диска на битые сектора как в системе Linux я не встречал. Ничего лишнего только суть. Выбор варианта как проверять и когда всегда за вами. После того как я один раз потерял важные данные храню всё важное в 3 разных местах.