Я пытаюсь создать собственное сетевое хранилище на основе стандартных компонентов FreeBSD + ZFS +, но возникают странные проблемы с производительностью.
Технические характеристики оборудования:
Я создал zpool RAID-Z2 со всех дисков. Я установил FreeBSD 8.1 на этот zpool после руководство. Контроллеры SATA работают в режиме AHCI.
Вывод статуса zpool:
pool: zroot
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
zroot ONLINE 0 0 0
raidz2 ONLINE 0 0 0
gptid/7ef815fc-eab6-11df-8ea4-001b2163266d ONLINE 0 0 0
gptid/80344432-eab6-11df-8ea4-001b2163266d ONLINE 0 0 0
gptid/81741ad9-eab6-11df-8ea4-001b2163266d ONLINE 0 0 0
gptid/824af5cb-eab6-11df-8ea4-001b2163266d ONLINE 0 0 0
gptid/82f98a65-eab6-11df-8ea4-001b2163266d ONLINE 0 0 0
Проблема в том, что производительность записи в пул очень-очень плохо (<10 МБ / с), и каждое приложение, обращающееся к диску, не отвечает каждые несколько секунд при записи. Кажется, что с записью все в порядке, пока кеш ZFS ark не заполнится, а затем ZFS останавливает весь системный ввод-вывод, пока не закончит запись этих данных.
Также я получаю kmem_malloc to small
паника ядра. Я уже пробовал поставить
vm.kmem_size="1500M"
vm.kmem_size_max="1500M"
в /boot/loader.conf, но это не помогает.
Кто-нибудь знает, что здесь происходит? Неужели у меня действительно недостаточно памяти для ZFS для обработки этого RAID-Z2?
Я подозреваю, что вы, вероятно, столкнулись с проблемой, которую я назову проблемой «512-байтовые сектора не являются секторами по 4 КБ». В любом случае, гугл на gnop, сектор 4K, WD Green и я подозреваю, что вы найдете исправление. Я впервые узнал об этом этот сайт, и он был очень информативен об этой проблеме, а также о множестве других настроек для FreeBSD и ZFS. Удачи!
Изменить: цитировать со связанного сайта:
... Наконец, я наткнулся на упоминания о проблемах с экологичными дисками Western Digital на 1,5 ТБ (WE15EADS), которые я использую.
Диски имеют физический сектор 4 КБ, но сообщают в BIOS 512 байт. Таким образом, производительность падает при действительно больших операциях записи, потому что zfs во FreeBSD отправляет 4 КБ данных на диск в виде 8 отдельных операций записи по 512 байт, что требует, чтобы встроенное ПО на диске увеличивало его рабочую нагрузку примерно в 60 раз (первые 512 байт - запись 4 КБ, 2-е 512 байт, чтение 4 КБ, запись 4 К, ..., 8-е 512 байт, чтение 4 КБ, запись 4 КБ - так что 4 КБ записи становятся 4 КБ записи + (4 КБ чтения + 4 КБ записи) X (4 КБ / 512 Байт - 1 ) = 60. Диски со встроенным кэшем размером 32 МБ помогают до тех пор, пока он не заполнится и не сработает дуга zfs, а затем дуга начнет заполняться.
На самом деле это очень большая проблема, если вы записываете в zfs файлы, размер которых превышает размер вашей дуги плюс размер буфера на диске. ...
В дополнение к проблеме 4K / 512b, зеленые диски WD не являются идеальным выбором для вашего использования, поскольку они припарковывают голову после 8 секунд бездействия, и им требуется пара секунд, чтобы вернуться в рабочее состояние. Это задержка записи, которую вы наблюдаете.
http://opensolaris.org/jive/thread.jspa?messageID=480641&tstart=0
Попробуйте отключить таймер с помощью инструмента WDidle.