BigSector
Введение
С 2009 года на рынке доступны ёмкие жёсткие диски (например, WD Advanced Format), использующие физические секторы размером 4096 байт вместо издревле устоявшихся 512 байт с целью повышения эффективности использования поверхности (за счёт сокращения числа синхрозаголовков и зазоров, а также перераспределения ECC-данных).
Процессом управляет International Disk Drive Equipment and Materials Association (idema.org, bigsector.org); сейчас можно лицезреть «переходную стадию», при которой диски эмулируют для системы работу с секторами по 512 при помощи техники read-modify write (RMW — примерно как SSD для erase block’ов).
Поскольку включение этого механизма по определению приводит к потере производительности, желательно его избежать — то есть работать блоками информации с размером, кратным 4k, и смещениями, выровненными по границе 4k.
Проблемы
При использовании DOS partition table первый раздел типично начинается с сектора 63, то есть 31.5k — что не является выровненным ни по какой разумной границе. Одним из способов объезда этого является выравнивание начала раздела (оригинал) по границе, кратной размеру блока либо страйпа.
Как если бы тормозной трансляции самой по себе было недостаточно, производители грозились для удобства пользователей Windows XP учинить смещение первого сектора на 512 байт, чтобы тем самым подвинуть 63-й логический сектор размером 512 байт на границу 8-го физического сектора размером 4096 байт. Что делать, если встретятся _такие_ варианты — пока непонятно вообще.
Решения
Требуется обеспечить адекватную обработку ситуации вместе со всеми возникающими нюансами на уровнях от работы с собственно диском до файловой системы. (#16000)
установщик (alterator-vm)
- Установка p6 Desktop показала, что создаваемые в процессе установки разделы не выравниваются. altbug #23848
работа с диском
- Linux 2.6.31 обучено возвращать выравнивание и размер физического сектора
разбиение на разделы
- fdisk из util-linux-ng 2.17 обучен (#23014) использовать minimum_io_size и выравнивать разделы по границе физического сектора либо stripe chunk (в sisyphus)
- parted 2.1 обучен (--align) -- есть в сизифе, но не в бранчах p5/5.1 (#23016)
raid/lvm/evms
Тесты lvm2 показали, что align'ит нормально и характеристическая просадка скорости отсутствует.
evms пришлось исправлять в нескольких местах: #26925, #23848, #32679.
файловые системы
- XFS: mkfs.xfs 3.0.1 справляется при -s size=4096, в 3.1.1 уже сделали автодетект (#23017)
Тестирование
- hdparm --Istdout => IDENTIFY DEVICE word 209
- bonnie++ может давать заметный, но не в разы разлёт по Sequential Input/Output, но полное время выполнения у mike@ на WD15EARS различалось примерно втрое (что коррелирует с «performance hit of a factor of about 3.3»)
- предложено использование мелкого сишного теста и также PostMark