Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
linux_faq:ремап-remap-сбоиных-секторов-диска-bad-blocks-в-linux [2019/02/11 09:13] – external edit 127.0.0.1 | linux_faq:ремап-remap-сбоиных-секторов-диска-bad-blocks-в-linux [2023/01/30 17:39] (current) – [Утилиты sg_verify и sg_reasign] admin | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Самотестирование диска с помощью smartctl====== | ||
+ | Устанавливаем необходимый пакет **smartmontools** | ||
+ | sudo apt-get install smartmontools | ||
+ | Существуют два вида тестов - **foreground** (когда диск в ответ на все команды имеет статус **CHECK CONDITION**) и **background** - когда диск остается работоспособным.\\ | ||
+ | Тесты бывают **short** и **long**.\\ | ||
+ | **Short** - ограничен по времени и тестирует только часть диска. \\ | ||
+ | **Long** - аналогичен финальному тестированию на производстве, | ||
+ | |||
+ | Запускаем " | ||
+ | sudo smartctl -t long /dev/sdb | ||
+ | Узнать сколько времени займет тот или иной тест можно командой: | ||
+ | < | ||
+ | ... | ||
+ | Self-test execution status: | ||
+ | 90% of test remaining. | ||
+ | Total time to complete Offline | ||
+ | data collection: | ||
+ | ...</ | ||
+ | После того как он закончится смотрим результат с помощью команды **smartctl -l selftest /dev/sdb**: | ||
+ | < | ||
+ | sudo smartctl -l selftest /dev/sdb | ||
+ | smartctl 5.40 2010-07-12 r3124 [x86_64-unknown-linux-gnu] (local build) | ||
+ | Copyright (C) 2002-10 by Bruce Allen, http:// | ||
+ | |||
+ | === START OF READ SMART DATA SECTION === | ||
+ | SMART Self-test log structure revision number 1 | ||
+ | Num Test_Description | ||
+ | # 1 Extended offline | ||
+ | </ | ||
+ | |||
+ | Также можно протестировать только часть диска. Команда: | ||
+ | sudo smartctl -t select, | ||
+ | протестирует сектора с 10 по 20 включительно. \\ | ||
+ | Кроме того, можно одной командой протестировать несколько диапазонов: | ||
+ | sudo smartctl -t select,0-10 -t select,5-15 -t select, | ||
+ | \\ | ||
+ | | ||
+ | sudo smartctl -t long -C /dev/sdc | ||
+ | Короткий **foreground** тест, который принудительно обновит значения параметров **SMART** можно запустить так: | ||
+ | sudo smartctl -t offline /dev/sda | ||
+ | |||
+ | ====== Утилиты sg_verify и sg_reasign ====== | ||
+ | Пакет утилит sg3-utils предназначен для работы с дисками на низком уровне, | ||
+ | Обнаружить нечитающийся сектор можно, например, | ||
+ | sudo dd if=/dev/sdb of=/ | ||
+ | Затем, когда dd сообщит об ошибке, | ||
+ | sudo sg_verify --lba=1193046 /dev/sdb | ||
+ | verify (10): Fixed format, current; | ||
+ | Additional sense: Unrecovered read error | ||
+ | Info fld=0x123456 [[1193046]] | ||
+ | Field replaceable unit code: 228 | ||
+ | Actual retry count: 0x008b | ||
+ | medium or hardware error, reported lba=0x123456 | ||
+ | \\ | ||
+ | Зетем можно проверить, | ||
+ | |||
+ | sudo sg_reassign --grown /dev/sdb | ||
+ | >> Elements in grown defect list: 0 | ||
+ | \\ | ||
+ | Теперь можно выполнить переназначкение сектора и проверить, | ||
+ | sudo sg_reassign --address=1193046 /dev/sdb | ||
+ | sudo sg_reassign --grown /dev/sdb | ||
+ | >> Elements in grown defect list: 1 | ||
+ | \\ | ||
+ | Размер **GLIST** изменился на 1 - чего и следовало ожидать. В результате в переназначаемом секторе будет записан заданный производителем паттерн (либо - если сектор все-же удалось прочесть - его содержимое не изменится). \\ | ||
+ | Также утилита **sg_reassign** может выполнить переназначение группы секторов. | ||
+ | \\ | ||
+ | Для дисков с интерфейсами **SAS** и **SATA** наборы команд для работы с переназначаемыми секторами различны. Диск с интерфейсом **SAS** (неважно подключен он к **SATA** или **SAS** контроллеру) способен безусловно переназначить группу секторов в резервную область независимо от того, читаемы сектора или нет. | ||
+ | Использование **sg_reasign** для диска **SATA** скорее всего никакого эффекта не даст. | ||
+ | |||
+ | ====== Переназначение секторов для дисков с интерфейсом SATA ====== | ||
+ | Для переназначения секторов на дисках с интерфейсом **SATA** можно просто дать команду на перезапись этого сектора, | ||
+ | sudo hdparm --repair-sector | ||
+ | или | ||
+ | sudo hdparm --write-sector | ||
+ | Принципиальная разница между дисками **SAS** и **SATA** в том, что случае **SAS** можно принудительно переназначить даже хороший сектор, | ||
+ | При этом, | ||
+ | sudo hdparm --repair-sector 1000 /dev/sda | ||
+ | или для группы секторов: | ||
+ | for i in {1000..2000}; | ||
+ | ======= Аналог MHDD под Linux ======= | ||
+ | С удивлением обнаружил наличие под **Linux** некоторого аналога (по крайней мере визуально) популярной программы под DOS - **MHDD**. \\ | ||
+ | Речь идет об утилите, | ||
+ | |||
+ | |||
+ | |||