ZFS не пишет непрерывно в массив
Предисловие: Я ни в коем случае не опытный пользователь Linux, но я играл с Linux достаточно, чтобы быть опасным.
Я создаю персональный сервер, в основном просто для хранения видео и фотографий. Текущие характеристики следующие:
- Gigabyte GA-G41M-ES2L Материнская плата
- Процессор Core 2 Duo E6750 (2,66 ГГц)
- 4 ГБ оперативной памяти DDR2
- Карта SATA PCIe Vantec UGT-ST644R PCIe (RAID не используется)
- Жесткие диски 2 × 1,5 ТБ и 2 × 1, 0 ТБ
- 64 ГБ SSD (для загрузочного диска)
Я установил Ubuntu Server 14.04.3 LTS на SSD, с ZFSonLinux, установленным здесь (Ars Technica). Также установлен Samba (версия 4.1.6-Ubuntu), который я использую для доступа к серверу с остальных моих компьютеров (Windows 7 и выше) (максимум два или три, в конце концов).
Все четыре диска подключены к плате контроллера Vantec, каждая пара зеркально отражена и добавлена в ZPool, что дает 2,5 ТБ свободного места. SSD подключается непосредственно к встроенному контроллеру.
Когда это работает, это работает прекрасно, однако...
Когда я записываю большие объемы данных в массив, первая ≈500 МБ просто "записывает" (в кэш, я полагаю) "отлично", затем ZFS ожидает около 30 секунд (мониторинг с использованием zpool iostat <pool_name> 1
), записывает ≈350 МБ из кэша в массив, принимая больше данных, ожидает ≈30 секунд, записывает ≈350 МБ из кэша в массив, принимая больше данных, ожидает ≈30 секунд и т. д. до завершения передачи, В этих 30-секундных блоках он ничего не делает (0 в, 0 из), просто сидит без дела.
Сетевой канал (к моему большому удивлению) способен заполнить 350 МБ за 5 секунд, оставляя много мертвого времени в течение всего процесса.
Есть ли способ устранить это узкое место / "дыхание"?
Я пытался изменить zfs_txg_timeout
значение (по умолчанию 5 секунд, так что это маловероятно, но 1 секунда не помогает).
Я также установил минимальное и максимальное значения кэша в 2 ГБ и 3 ГБ соответственно, но он все еще начинается с относительно небольшого размера кэша и медленно увеличивается. Я наблюдал, как использовалась системная память во время этого, и ZFS, похоже, не хочет быстро увеличивать объем используемой оперативной памяти, даже когда на ней все ждет.
Мне нравится способ, которым ZFS позволяет мне распределяться между vdevs разных размеров, но описанное поведение делает его практически непригодным для надежной передачи больших объемов данных.
Любые предложения, чтобы исправить текущие настройки или альтернативы, которые будут работать сравнимо? Заранее спасибо за понимание. Если вам нужна дополнительная информация, дайте мне знать.
Примечания стороны:
- Я выполнил локальный тест производительности диска в массиве, и там также проявилось то же поведение, исключающее как компьютеры Windows, так и сеть.
- Бег
sync
кажется, приносит пользу, но не постоянно и не постоянно. - Память исчерпана для этой конфигурации, но я не думаю, что это сразу проблема.
- Я надеюсь, что это не проблема с контроллером (у меня нет другого, а на плате всего четыре порта (один для SSD, три оставшихся)).
- Большинство источников говорят, что диск ZIL не поможет в моей ситуации.
Обновления (1 сентября 2015 г.):
- Я установил FreeNAS на том же оборудовании, используя ту же топологию массива, и столкнулся с точно такой же проблемой. Это означает, что проблема, скорее всего, аппаратная.
- Для этого я поместил три из четырех дисков на внутренний контроллер и создал из них массив. Задача решена! Непрерывные записи достигнуты. Конечно, это означает, что мне нужно найти новую карту SATA, но, по крайней мере, сейчас она работает теоретически.