Поступил проблемный жёсткий SAS диск, который никак не хотел работать на стареньком RAID контроллере. Заводской размер логического сектора диска 4 килобайта, решили попытаться поменять его на 512 байт.
В помощь берём сервер HPE Proliant DL120 Gen9 с контроллером Smart HBA H240. Если честно, то использовать HPE контроллеры для изменения размера сектора диска — не самая лучшая идея по одной простой причине: если в процессе низкоуровневого форматирования произойдёт сбой, то такой контроллер перестанет видеть диск.
HPE RAID контроллеры можно использовать для низкоуровневого форматирования диска.
Меняем размер логического сектора диска: 520, 524, 528, 512, 4k
Для этого диск должен был виден в операционной системе, поэтому нужно перевести контроллер в режим HBA (Host Bus Adapter), в этом режиме контроллер не работает с массивами, а просто передаёт диски операционной системе. Enable HBA Mode.
Режимы HBA/RAID в контроллерах HPE H240, H240ar и H241 Smart HBA
Вставляем диск в сервер и переходим в Smart Storage Administrator.
У нас нет дисков для конфигурации, но сам диск виден как 4Kn SAS HDD.
Диск у нас 10 ТБ, модель IBM-E050WUS721010AL4200. Размер логического сектора 4096 байт.
В подробностях ничего интересного не видно. Можно сравните серийный номер, чтобы убедиться, что диск именно тот, что нам нужен. Но у меня в сервере сейчас только один диск, так что ошибиться проблематично.
Режим HBA
Переводим контроллер в режим HBA. Enable HBA Mode.
Перезагружаем сервер и снова запускаем Smart Storage Administrator. Убедимся что контроллер перешёл в режим HBA.
Всё в порядке, контроллер работает в режиме HBA и передает управление дисками в ОС.
Ubuntu Desktop
Перезагружаем сервер и загружаемся в Linux. Менять размер логического сектора будем в Ubuntu. Скачиваем инсталляционный дистрибутив Ubuntu Desktop 20.04.2 — ISO образ. Монтируем к серверу и загружаемся с него.
А вот и Ubuntu.
Для работы нам понадобится Интернет.
Настраиваем сеть и обновляем репозиторий.
apt-get update
Работа с дисками
Загрузим пару пакетов. Самый главный пакет для работы с дисками — sg3-utils.
http://sg.danny.cz/sg/sg3_utils.html
apt-get install sg3-utils
Давайте посмотрим, что у нас с дисками.
dmesg | grep -E "(mpt|scsi|sd)" | less
Диск у нас видится, к нему есть прямой доступ: Direct-Access. Однако он не работает Unit Not Ready по причине Medium format corrupted. В общем, битый диск, I/O error. Потому и не работал. Попробуем форматнуть.
Для форматирования диска нужно узнать его имя, можно и в dmesg выловить, но проще воспользоваться вспомогательными пакетами, установим.
apt-get install lsscsi
lsscsi -g
Имя нашего диска /dev/sg1. Имя также можно узнать с помощью утилиты sg_scan из пакета sg3-utils:
sg_scan -i
Проверить размер логического сектора:
sg_readcap /dev/sg1
Размер логического блока указанного диска /dev/sg1 4096 байт, имя определили верно.
Приступаем к низкоуровневому форматированию:
sg_format --format --size=512 /dev/sg1
Не забываем указать новый размер логического сектора 512 байт.
Форматирование уничтожит все данные на диске!
Форматирование начинается не сразу, есть несколько секунд на то, чтобы нажать Ctrl+C для отмены операции.
Если ничего не нажимать, то форматирование начнётся.
Процесс долгий, по предварительным расчётам форматирование шло медленно и должно было занять 15 дней. Это очень много. Стало понятно что на диске много битых секторов. Через пару дней форматирование ещё больше замедлилось.
Принцип форматирования понятен, всем спасибо, расходимся.
Примечание
Что будет если прервать форматирование?
Если процесс низкоуровневого форматирования прервать, или он прервётся по какой-либо причине, то диск падает в состояние Medium Error.
Сама ошибка в этом случае не страшная и весьма исправимая, достаточно передёрнуть питание диска и запустить форматирование заново. Но контроллеры HPE так не считают, они помечают такие диски сбойными и не отдают их системе даже в режиме HBA.
HPE — сбой во время низкоуровневого форматирования диска
Что делать? В этом случае придётся искать какой-нибудь из HBA контроллеров LSI, которые такой болезнью не страдают. Но у меня есть в тумбочке LSI контроллер, на всякий случай, так что вперёд!