Пришли SAS диски с неверным размером логического сектора в 520 байт. Диски заказывали для сервера HPE Proliant DL360 Gen9 с RAID контроллером Smart Array P440ar.
При установке такого диска в сервер получаем ошибку (В Smart Storage Administrator):
This physical drive does not support RAID and is not exposed to OS. It cannot be used for configuration on this controller.
Сам диск в списке отображается, его данные определяются. Однако мы видим:
Drive Configuration Type: Unsupported for RAID Configuration.
Logical / Physical Block Size: 520/4160
Я уже встречал подобный размер логического сектора в некоторых хранилищах. Лишние байты используются для дополнительного контроля целостности данных. Размер физического блока 4160 байт. Т.е. один физический блок разбит на восемь логических секторов по 520 байт.
Если посмотреть больше деталей, то ничего нового мы не узнаем. Ещё видно, что диск не пробрасывается в операционную систему.
А какой должен быть размер логического сектора, чтобы RAID контроллер смог с ним работать? Посмотрю на соседнем сервере информацию о каком-нибудь диске. Под руки попался HDD диск, он прекрасно работает в RAID массиве. Размер логического сектора 512 байт. Физического, кстати, тоже.
Со временем появились диски с увеличенным размером физического сектора, чтобы они определялись старыми RAID контроллерами, диск умеет эмулировать размер логического сектора и может отображаться , например, как 512/4096 или 512e/4096. Это так называемый Advanced Format — новый формат разметки секторов. Вместо традиционного сектора размером 512 байт используется 4096 байт. Для решения проблем с совместимостью был введён дополнительный стандарт 512E, который обозначает диски с физическим размером сектора 4096 байт, но при этом эмулирующие обычный размер сектора в 512 байт.
Обычные современные контроллеры поддерживают три формата разметки:
Формат | Размер логического сектора | Размер физического сектора |
512N | 512 байт | 512 байт |
512E | 512 байт | 4096 байт (4КиБ) |
4KN | 4096 байт (4КиБ) | 4096 байт (4КиБ) |
Я точно знаю что RAID контроллер Smart Array P440ar поддерживает форматы 512N и 512E. Не уверен, что он поддерживает 4KN, но это сейчас не важно. Для того чтобы наш диск заработал, нужно изменить размер логического сектора с 520 байт на 512 байт. Это возможно.
Режим HBA
Для начала нужно сделать так, чтобы диск был виден в операционной системе. Для этого переводим контроллер в режим HBA (Host Bus Adapter), в этом режиме контроллер не работает с массивами, а просто передаёт диски операционной системе.
Enable HBA Mode.
OK.
Контроллер перейдёт в режим HBA после перезагрузки. Finish.
Ubuntu Desktop
Менять размер логического сектора будем в Ubuntu. Скачиваем инсталляционный дистрибутив Ubuntu Desktop 20.04.2 — ISO образ. Монтируем к серверу и загружаемся с него.
Работаю удалённо, канал медленный, процесс длительный. А вот и Ubuntu.
Для работы нам понадобится Интернет, загрузим пару пакетов. Самый главный пакет для работы с дисками — sg3-utils.
http://sg.danny.cz/sg/sg3_utils.html
Можно и вручную его скопировать, но там куча зависимостей, лень качать все, будем пользоваться преимуществами Интернета. Настраиваем сеть и обновляем репозиторий.
apt-get update
Работа с дисками
Давайте посмотрим, что у нас с дисками.
dmesg | grep -E "(mpt|scsi|sd)" | less
Я специально оставил в сервере только один диск, чтобы уменьшить количество информации.
Операционная система видит наш диск, но ругается:
Unsupported sector size 520
0 512-byte logical blocks: (0 B/0 B)
Для форматирования диска нужно узнать его имя, можно и в dmesg выловить, но проще воспользоваться вспомогательными пакетами, установим их.
apt-get install lsscsi
apt-get install sg3-utils
Узнаем имя диска с помощью lsscsi:
lsscsi -g
Имя нашего диска /dev/sg1. Имя также можно узнать с помощью утилиты sg_scan из пакета sg3-utils:
sg_scan -i
Проверить размер логического сектора:
sg_readcap /dev/sg1
Размер логического блока указанного диска /dev/sg1 520 байт, имя определили верно.
Приступаем к низкоуровневому форматированию:
sg_format --format --size=512 /dev/sg1
Не забываем указать новый размер логического сектора 512 байт.
Форматирование уничтожит все данные на диске!
Форматирование начинается не сразу, есть несколько секунд на то, чтобы нажать Ctrl+C для отмены операции.
Если ничего не нажимать, то форматирование начнётся.
Процесс долгий, мой SSD диск на 960 Гб форматировался около 20 минут.
FORMAT UNIT Complete. Форматирование завершено.
Посмотрим каким стал размер логического сектора:
sg_readcap /dev/sg1
512 байт, как и планировали.
Проверка
Перезагружаем сервер и входим в Smart Storage Administrator. 512e / 4096 Bytes. Диск прекрасно работает. При переключении контроллера в режим RAID диск может использоваться в RAID массивах.
Мы с вами изменили размер логического сектора диска с 520 байт на 512 байт.
P.S.
На видео к статье я прошиваю оставшиеся три диска точно таким же способом.
P.P.S
Если sg_format выдаёт ошибку вида:
Fixed format, current; Sense key: Illegal Request Additional sense: Parameter list length error Sense Key Specific: Error in Data parameters: byte 0 MODE SELECT command: Illegal request sense key, apart from Invalid opcode
то можно посмотреть в сторону атрибута -6 или --six:
--six|-6 use 6 byte MODE SENSE/SELECT to probe disk (def: use 10 byte MODE SENSE/SELECT)
Например:
sg_format --format --size=512 --six /dev/sg1