FWIW, почти невозможно доверять анекдотическим показателям производительности: слишком много может отличаться между этой отдельной точкой данных и вашей настройкой. (Они использовали дедупликацию? Имели ли они достаточно оперативной памяти в системе? Был ли один из их дисков на грани отказа? Какую конфигурацию избыточности данных они использовали? Это было до или после того, как синхронная запись стала в 2 раза быстрее? У этого списка нет конца.)
В руководстве вы связаны с здесь является правильным:
Частичная запись записи требует, чтобы данные считывались либо с ARC (дешево), либо с диска (дорого). recordsize
может быть установлен на любую степень 2 от 512 байт до 128 килобайт. Программное обеспечение, которое пишет с фиксированным размером записи (например, базы данных), выиграет от использования соответствующего recordsize
.
И чуть ниже ...
У Zvols есть свойство volblocksize
, аналогичное размеру записи. Размер по умолчанию составляет 8 КБ, что соответствует размеру страницы в архитектуре SPARC. Рабочие нагрузки, которые используют IO меньшего размера (например, подкачка на x86, которая использует 4096-байтовые страницы), выиграют от меньшего размера volblocksize
.
Однако ваша интерпретация этого слегка неверна - это говорит о том, что вы должны попытаться соответствовать размеру ввода-вывода, который будет выполнять ваша база данных (вверх по стеку ввода-вывода), а не по размеру блока базового оборудования (вниз по стеку ввода-вывода).
Этот совет верен (и соответствует вашему желанию использовать размер в килобайтах 8 volblocksize
если я правильно понимаю), если вы хотите сделать сжатие внутри ZFS (что в основном является единственным вариантом, если гостем является Linux, поскольку ext4 и XFS не выполняют сжатие). Для этой конфигурации не будет никаких накладных расходов на хранение либо из-за чтения-изменения-записи, либо из-за использования дополнительного пространства. Если вы верите в сообщение списка рассылки, на которое вы ссылались, возможно, это также незначительно уменьшит количество попаданий ZFS в узкие места при записи большого количества блоков по 4 КБ.
Тем не менее, поскольку NTFS может выполнять сжатие, если вы по какой-то причине хотите использовать сжатие NTFS, вы должны сделать volblocksize
равным размеру блока базовых дисков, чтобы дать NTFS минимально возможную единицу для сжатия содержимого (тратить наименьшее количество пространство, когда необходимо округлить сжатые данные до следующего размера блока) и привести размер логического блока в NTFS к требуемому размеру блока базы данных. Это также не приведет к дополнительным затратам на хранение через чтение-изменение-запись или дополнительное пространство.