Проверка состояния жесткого диска в linux
Jun. 18th, 2016 04:39 pmПроверка состояния жесткого диска
Проверка состояния жесткого диска
проверить диск на бедблоки
sudo partprobe
sudo partprobe -s
sudo lsblk -f
sudo lshw -class disk
sudo fdisk -l
sudo umount /dev/sdb
для NVMe disk
sudo nvme list
sudo nvme id-ctrl /dev/nvme0n1
sudo nvme smart-log /dev/nvme0n1
sudo smartctl -i /dev/nvme0n1
sudo smartctl -x /dev/nvme0n1
https://man7.org/linux/man-pages/man8/badblocks.8.html
https://www.opennet.ru/man.shtml?topic=badblocks&category=8&russian=0
sudo umount /dev/sda1
sudo badblocks -vn /dev/sda -o ~/bad_sectors.txt
sudo badblocks -sv /dev/sda
sudo badblocks -w -svb4096 /dev/sda
не применяйте параметр -w на устройстве, которое содержит используемую файловую систему. Этот параметр приводит к уничтожению информации на диске
sudo badblocks -w -v /dev/sdb
Флаг -w заставляет записывать тестовые данные на диск, что может спровоцировать переназначение секторов.
Внимание: Это уничтожит все данные на диске, поэтому убедитесь, что резервная копия создана.
sudo e2fsck -l badblocks.txt /dev/sda1
-l — указывает файл со списком bad block'ов.
e2fsck добавит bad block'и в список исключений файловой системы, чтобы они не использовались.
sudo fsck -c /dev/sda1 # -c — проверяет и помечает bad block'и.
sudo dumpe2fs /dev/sda1 | grep -i bad
Это покажет информацию о bad block'ах, зарегистрированных в файловой системе.
sudo btrfs scrub start /dev/sda1
sudo fsck.vfat -r /dev/sda1
Утилита может пометить bad block'и как неиспользуемые кластеры.
NTFS: Используйте ntfsfix или проверьте диск в Windows с помощью chkdsk:
sudo ntfsfix /dev/sda1
chkdsk /f /r X:
sudo fsck -f -c /dev/sda
sudo e2fsck -cfpv /dev/sda
sudo apt install smartmontools sudo smartctl –info /dev/sde sudo smartctl -s on -a /dev/sde sudo smartctl -H /dev/sda sudo smartctl -iHA /dev/sdb # Посмотреть данные SMART sudo smartctl -t long /dev/sdb # запуск долгого теста sudo smartctl -t short /dev/sdb # запуск короткого теста sudo smartctl -l selftest /dev/sda # посмотреть как выполняется sudo smartctl -X /dev/sdb # остановка теста sudo smartctl -a /dev/sdb # вывод информации о диске sudo smartctl -iA -d megaraid,2 /dev/sda # вывод информации о диске при наличии RAID-контроллера sudo smartctl -x /dev/sda # полный вывод информации о диске
Наиболее важные атрибуты отмечены как pre_fail в колонке TYPE.
Базовые атрибуты для HDD-дисков
1 Raw_Read_Error_Rate — количество ошибок чтения. На дисках Seagate и Samsung большие значения - норма.
2 Spin_Up_Time — время раскрутки диска из состояния покоя до рабочей скорости. Растет при износе диска.
5 Reallocated_Sector_C — количество переназначенных секторов. Если диск обнаружил ошибку чтения/записи он перенесет сектор в резерв. Чем меньше значение, тем лучше
в случае если RAW_VALUE больше 0 желательно менять диск
7 Seek_Error_Rate — частота ошибок при позиционировании блока магнитных головок. Чем их больше, тем хуже состояние механики или поверхности жёсткого диска.
если VALUE менее 45 желательно менять диск
9 Power_on_hours - Наработка часов RAW_VALUE превышает 43 800* надо менять диск
10 Spin_Retry_Count - Количество повторов запуска шпинделя, если первая попытка оказалась неудачной, при RAW_VALUE более 10 желательно менять диск
196 Rellocation Event Count - число операций переназначения. Raw Value хранит общее число попыток переноса информации с переназначенных секторов в резервную область как успешных так и провальных.
197 Current_Pending_Sector Количество секторов в очереди на переназначение, RAW_VALUE отлично от 0 желательно менять диск
198 Offline_Uncorrectable - Количество неисправимых секторов, при RAW_VALUE отлично от 0 надо менять диск
При росте значений параметров 199 UDMA_CRC_Error_Count и 200 Multi_Zone_Error_Rate проявляются проблемы на уровне интерфейса. В данном случае проверяем корректность подключения дисков SATA.
Базовые атрибуты для SSD-дисков
184 End-to-End Error Detection Count - Количество ошибок чтения из флэш-памяти, при RAW_VALUE более 9 надо менять диск
231 Life Left (SSDs) or Temperature - Остаток жизненного цикла, при VALUE менее 11 надо менять диск
232 Available Reserved Space - Количество оставшихся резервных служебных блоков, при VALUE менее 11 надо менять диск
233 Media Wearout Indicator - Остаток жизненного цикла у дисков Intel, при VALUE менее 11 надо менять диск
sudo apt install safecopy
sudo safecopy /dev/sda /home/
lsblk -Df
sudo hdparm -i /dev/sdb1 | grep -i Fw
systemctl status fstrim.timer
лечение
sudo badblocks -v /dev/sdb > badsectors.txt # найти битые сектора
sudo hdparm --write-sector номер_сектора /dev/sdb # переназначить битые сектора
или лучше с помощью SMART
sudo smartctl -t long /dev/sdb
sudo smartctl -x /dev/sdb
получены
..............
197 Current_Pending_Sector -O--C- 100 100 000 - 8
198 Offline_Uncorrectable ----C- 100 100 000 - 8
..............
Pending Defects log (GP Log 0x0c)
Index LBA Hours
0 9184008 8045
1 9184009 8045
2 9184010 8045
3 9184011 8045
4 9184012 8045
5 9184013 8045
6 9184014 8045
7 9184015 8045
..............
создать remap_bad.sh
chmod +x remap_bad.sh
sudo ./remap_bad.sh
рецепты
https://forum.free-adm.ru/viewtopic.php?f=16&t=369
wipefs /dev/sdb* # Выводит информацию о sdb и всех разделах на sdb.
wipefs --all --backup /dev/sdb # Стереть все сигнатуры с устройства sdb и создает файлы резервных копий сигнатур ~/wipefs-sdb-
wipefs --all --force /dev/sdb # удалить все сигнатуры с диска sdb
Для удаления сигнатуры файловой системы с помощью команды dd нужно переписать первые байты раздела нулями. Это делается командой dd if=/dev/zero of=/dev/sdXN bs=512 count=1, где /dev/sdXN - это путь к разделу, а bs=512 count=1 указывает на запись 512 байт (размер MBR) нулями
ZFS
Глава 5 Установка и загрузка корневой файловой системы ZFS
modprobe zfs
apt install zfs-utils
zpool list
zpool status
zpool iostat -v
zfs get all имя_пула # получить подробную информацию
zpool offline tank устройство # перевод устройства в автономный режим
или zfs offline имя_пула
zpool online tank устройство # перевод устройства в оперативный режим
zpool create имя_пула имя_диска # создать пул
zfs set mountpoint=/точка/монтирования имя_пула
zpool import -f имя_пула
zpool export -a
Управление пулами ZFS
Создание пулов
zpool create zroot da0 # Создание пула из одного диска
zpool create zroot da0 da1 # Создание пула из двух дисков с увеличением дискового пространства (stripe)
zpool create zroot mirror da0 da1 # Создание пула из двух дисков с дублированием данных (mirror)
Изменение названия пула
Если пул используется как загрузочный, то операции необходимо выполнять загрузившись с другого носителя.
zpool export oldname # Экспорт под старым названием
zpool import oldpool newpool # Импортирование с переименованием
Если точка монтирования пула указана как /, то можно воспользоваться флагом -R /path/to/altroot. Возможно также понадобится флаг -f, если пул использовался в другой операционной системе.
zpool import -R /mnt -f oldpool newpool
zpool export newpool # Экспорт переименованного пула
zpool import newpool # импорт пула под новым именем
Восстановление работоспособности пула
zpool replace zroot da0 # Замена диска
Дополнительным параметром можно указать какой диск использовать для замены
zpool replace zroot da0 da2
создание пула zfs из нескольких дисков
zpool create имя_пула sda1 sdb1
zpool list
zfs set dedup=on имя_пула
zfs get compression
zfs set compression=on имя_пула
zpool status
zfs set mountpoint=/media/storage/ имя_пула
Как ZFS хранит данные
Дедупликация в OpenZFS теперь хороша, но использовать её не стоит
Понимая, как используется дисковое пространство в Linux
забита ext4
sudo e4defrag -v /*
sudo umount /dev/sdXN
sudo fsck -p /dev/sdXN
Пересоздайте журнал (не рекомендуется для новичков, т.к. нужно размонтировать ФС):
tune2fs -O ^has_journal /dev/sdXN (отключить журнал)
tune2fs -O has_journal /dev/sdXN (включить заново)