У меня есть карта PCIe SSD, которая использует блочные ячейки 8 КБ. Он поддерживает «виртуальные контроллеры», которые могут разделить этот диск пополам и создать LVM RAID0 с размером полосы 8 КБ. Кроме того, я устанавливаю файловую систему, в которой используются блоки размером 8 КБ. Мое приложение записывает данные блоками по 8 КБ.
Есть ли накладные расходы на каждый добавленный слой, которые вызывают смещение этого 8-килобайтного блока, и в конечном итоге необработанные данные, записываемые на SSD, становятся (значительно?) Больше?
Если мое приложение записывает данные объемом 8 КБ, тогда FS записывает 8 КБ + свои метаданные, которые затем переводятся в 8 КБ + метаданные fs + метаданные lvm, которые в конечном итоге выходят на 8,5 КБ и портят все это выравнивание?
Нет, блоки не увеличиваются в размерах для размещения метаданных. Метаданные хранятся либо в выделенных блоках (в случае файловых систем), либо в специальной области (в случае LVM и mdraid). Вам просто нужно убедиться, что начало областей данных правильно выровнено.
mdraid размещает свои метаданные в конце раздела и хранит данные в самом начале, поэтому они всегда выровнены. LVM хранит метаданные в начале PV, контролируемых pvcreate --dataalignment
который следует установить соответствующим образом. Файловая система должна иметь соответствующий размер блока и / или размер шага и ширину полосы.