13

У меня есть жесткий диск объемом 4 ТБ с размером физического сектора 4 КБ (расширенный формат), и я подключил его к двум хост-контроллерам SATA (один внутренний и один в корпусе USB). На (более раннем, около 2010 г.) размер логического сектора составляет 512 байт, но он сообщает, что его физические секторы имеют размер 4096 байт. В последнем корпусе USB он имеет логический и физический размер 4096B:

# internal host controller
sd 4:0:0:0: [sdd] 7814037168 512-byte logical blocks: (4.00 TB/3.63 TiB)
sd 4:0:0:0: [sdd] 4096-byte physical blocks

# USB enclosure
sd 18:0:0:0: [sdd] 976754646 4096-byte logical blocks: (4.00 TB/3.63 TiB)

"Внутренний" контроллер демонстрирует поведение, которое я видел ранее, которое обычно называется "512e", когда встроенное ПО привода эмулирует адресацию LBA 512 секторов, даже если физически не записывает секторы таким образом. Операционные системы (и администраторы) могут гарантировать, что разделы выровнены так, что (небольшие) команды записи могут быть сгруппированы так, чтобы диск мог перезаписывать полные сектора вместо того, чтобы вернуться к записи в часть физического сектора, где ему нужно прочитать остаток содержания в первую очередь.

Тем не менее, просмотр "4k собственного" поведения на диске (USB-корпус) был для меня новым, и я сначала подумал, что корпус эмулирует адресацию 4096B поверх эмулируемой 512B эмуляции диска.

Единственные случаи, которые я мог найти с помощью веб-поиска, где хранилища USB были зарегистрированы в логических секторах 4k. Я предполагаю, что они эмулируют 4k вместо 512e, поэтому разрешите таблицы разделов MBR, чтобы большие диски можно было использовать на устаревших / встроенных устройствах (Smart TV и т.д.), Которые поддерживают только MBR+FAT32 USB-накопитель.

После обращения к производителю они заявили, что диск фактически работает в неэмулируемом (родном) режиме 4k, контроллер USB SATA также вообще не выполняет эмуляцию. Для этого потребуется встроенное ПО привода, чтобы определить, поддерживает ли хост-контроллер (желает?) адресация секторов размером 4КБ. Я не мог найти ничего об этом в публичной документации стандартов SATA. Поэтому я спрашиваю:

  • Кто-нибудь видел «4096-байтовые логические блоки» на своем контроллере SATA?
  • Действительно ли диски поддерживают включение / отключение эмуляции по требованию? Если так,
    • Как работает это определение?
    • Можете ли вы переопределить его на диске через флаг?
    • Можете ли вы переопределить его на хост-контроллере через драйвер / флаг?

1 ответ1

2

Я видел несколько дисков SATA 4Kn, работающих в индустрии валидации жестких дисков, но я не знал, что они отгружают их покупателям, из-за ограниченной аппаратной и программной поддержки для них и отсутствия потребительского спроса.

Есть два конкурирующих отображения для размеров физического и логического секторов. Функция длинного логического сектора позволяет устройству иметь логические сектора длиннее 512 В (например, 4 Кн), а функция длинного физического сектора позволяет устройству иметь несколько логических секторов на физический сектор (например, 512e), хотя они не обязательно являются взаимоисключающими. Если производитель заявляет, что накопитель имеет 4Kn, старый контроллер может обеспечить уровень эмуляции, такой как чтение-изменение-запись, для старых приложений и оборудования, поскольку старые системы просто не поддерживают формат 4Kn.

Команда sg_sat_identify из пакета sg3_utils, вероятно, даст вам необходимую информацию (проверьте слова 106-108 для информации о размере физического сектора / размере логического сектора).

Похоже, что диски SATA не поддерживают эмуляцию по требованию как таковую, но если диск действительно использует 512e вместо 4Kn, оптимизация производительности максимизируется драйвером (или, возможно, контроллером USB SATA), ограничивающим чтение / запись в 4K границы, например, имеющие передачу, начинающуюся на LBA, где младшие 3 бита равны 0, и заканчивающиеся на LBA, где младшие 3 бита равны 1:

start_lba & 0x3 == 0
end_lba & 0x3 == 1

Так что, по сути, нет "переключателя", который может указывать приводу запускать или останавливать эмуляцию. С точки зрения конечного пользователя, вам лучше всего убедиться, что на ваших дисках используется лучшая файловая система для сопоставления, используемого вашим диском, и убедиться, что он правильно выровнен. Следующий сайт дает довольно хорошую разбивку общих файловых систем и их статистику производительности и выравнивания блоков в разных файловых системах:http://www.ibm.com/developerworks/library/l-linux-on-4kb-sector -disks/index.html

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .