Hello, Volodymyr!
On April, 16 2013 at 15:33 you wrote to Alexey Markov:

??>> Не совсем так. При создании ФС указывается параметр volblocksize,
??>> который определяет размер блока, записываемого "за раз" на диск. Его
??>> действительно стараются выбирать совпадающим с типичным блоком данных
??>> (4К для раздела со свопом, 8К для MyISAM, 16К для InnoDB). И есть ещё
??>> размер блока на самой ФС, размер которого может меняться от 512 байт
??>> до 128 килобайт.

VK> volblocksize определяет размер блока для vdev а не для обычных файловых
VK> систем, я имел в виду recordsize.

Блин, это я со свопом на ZFS сейчас экспериментировал, вот и спутал. Да,
конечно - для датасетов размер блока задаётся через recordsize, но даже
в мане об этом пишут так:

Specifies a _suggested_ block size for files in the file system. This
property is designed _solely for use with database_ workloads that
access files in fixed-size records.  ZFS _automatically tunes block
sizes_ according to internal algorithms optimized for typical access
patterns.

??>> Например, файл на ZFS может занимать 3 блока по 128 К и один блок в
??>> 512 байт.

VK> Если честно здесь для меня самого тёмное место. Мне кажется вполне
VK> логичным что он будет так _занимать_ место, а при выделении места
VK> система будет просто виртуально делить весь файл на блоки по
VK> {recordsize}K и обрабатывать соответственно. Т.е.
VK> неполные/сжатые/дырявые блоки будут на диске занимать меньше места и
VK> храниться будут в блоках меньшего размера.

Я почитал "ZFS OnDisk Format", там пишется, что "ZFS supports variable
data and indirect block sizes ranging from 512 bytes to 128 Kbytes".
То есть, ZFS разобьёт большой файл на куски по 128К, а оставшийся
"хвост" засунет в блок меньшего размера, кратный 512 байтам.

--
WBR, Alexey Markov.

Ответить