Я создаю простой файловый сервер ZFS для малого бизнеса, в котором работаю. Сервер представляет собой Dell Poweredge 840 с 1 ГБ оперативной памяти. Операционная система (OpenSolaris 2009.06) установлена на одном диске SATA, а для хранения установлены еще три диска SATA: 1x1TB, 1x1,5TB и 1x2TB. Когда я добавляю три диска в один raidz zpool, пропускная способность не очень хорошая:
#zpool create -m /export/pool pool raidz c7d1 c8d0 c8d1
#zfs create pool/fs
#time dd if=/dev/zero of=/export/pool/fs/zerofile bs=1048576 count=1024
1024+0 records in
1024+0 records out
real 0m12.539s
user 0m0.002s
sys 0m0.435s
Это примерно 81,6 МБ / с. Это не ужасно, но я попытался создать пул, состоящий только из одного из этих дисков:
#zpool create -m /export/disk-c7d1 disk-c7d1 c7d1
#zfs create disk-c7d1/fs
#time dd if=/dev/zero of=/export/disk-c7d1/fs/zerofile bs=1048576 count=1024
1024+0 records in
1024+0 records out
real 0m21.251s
user 0m0.002s
sys 0m0.552s
Окей, пропускная способность 48,19 МБ / с при последовательной записи на один диск? Это кажется довольно низким. Особенно, когда я форматирую диск как UFS и пытаюсь написать то же самое:
#newfs /dev/dsk/c7d1s2
<snip>
#mount /dev/dsk/c7d1s2 /mnt/c7d1
# time dd if=/dev/zero of=/mnt/c7d1/zeroes bs=1048576 count=1024
1024+0 records in
1024+0 records out
real 0m10.372s
user 0m0.002s
sys 0m1.720s
Это почти вдвое больше, 98,73 МБ / с. Это намного ближе к тому, что я ожидал от этих дисков (хотя это всего лишь дешевые диски SATA).
Что я здесь делаю не так? Я понимаю, что запись данных четности с помощью RAIDZ сопряжена с накладными расходами, но создание пула из одного диска не должно вдвое снизить пропускную способность, не так ли? Это кажется довольно плохим.
Спасибо всем.
Если вам нужна производительность, держитесь подальше от raidz и используйте вместо этого зеркала.
«Следует ли мне настраивать RAIDZ, RAIDZ-2, RAIDZ-3 или зеркальный пул хранения?»
Производительность ZFS можно значительно улучшить, добавив кэш-накопители SSD для чтения и записи (я знаю, что они дорогие) Проверьте эту ссылку для получения дополнительной информации.
Имейте в виду, что с ZFS каждая запись требует большего, потому что некоторые данные являются метаданными. Что интересно, если вы пишете async с dd, ваша производительность должна быть лучше, так как должно происходить кеширование. Когда вы начнете масштабировать пулы, вы увидите улучшения в производительности, что определенно будет потрясающе, если вы будете использовать твердотельные накопители в качестве устройств кэширования и в качестве устройств ZIL, если у вас много синхронизирующих записей. Кэш-твердотельные накопители - это ваш кеш чтения, а твердотельные накопители ZIL - это ваш кеш-память для синхронизации. Первое, что я бы попробовал, хотя ваша установка явно не идеальна, - это использовать размер блока, соответствующий размеру блока вашей файловой системы, который, вероятно, составляет 128 КБ. Посмотрите, как это будет выглядеть.
Наконец, не сравнивайте ZFS и UFS - яблоки и апельсины. Другие предоставили отличные ссылки на этот обмен. Конечно, стоит прочитать.