Назад | Перейти на главную страницу

ZFS SLOG IOPS ближе к случайным IOPS, чем к последовательным

У меня есть установка Solaris 11.3 с пулом ZFS, состоящим из полосы 5-vdev, каждая из которых состоит из трех дисков SAS по 10К. Я также настроил SLOG, содержащий зеркальные vdev. Я установил следующие параметры настройки ZFS:

zil_slog_limit: 1073741824
zfs_txg_timeout:256
zfs_vdev_max_pending:           256
zfs_immediate_write_sz:         67108864

При записи в файловую систему с помощью async=always (Я пытаюсь определить наилучшую производительность, которую я могу ожидать, когда эта файловая система монтируется через NFS с включенной синхронизацией для образов дисков ВМ). Когда я бегу

time dd if=/dev/urandom of=testfile bs=512 count=10000

Я получаю около 100 IOPS на vdev (2-дисковые зеркальные диски SAS 10K) в SLOG (так что около 100 секунд для работы с одним vdev в SLOG и 50 секунд с двумя в SLOG). У меня нет дополнительных дисков в массиве, но такое поведение для одного или двух устройств предполагает, что vdev SLOG работают. Я также использовал zpool iostat -v 5 чтобы убедиться, что они единственные устройства, которые получают записи на них, пока я запускаю тест (кроме дисков данных, когда SLOG сбрасывается). Число записей в секунду от zpool iostat примерно соответствует подсчитанному мной количеству операций ввода-вывода в секунду. dd.

У меня сложилось впечатление, что SLOG должны быть написаны почти полностью последовательно; 100 IOPS - это то, что я ожидал от случайной записи.

Изменить: я пробовал аналогичную вещь с запасным компьютером, на котором запущен FreeNAS. У машины два диска в зеркале + беззеркальный SLOG. IOPS - это медленный произвольный ввод-вывод, а не последовательный медленный в пуле при использовании жесткого диска для SLOG и> 10k IOPS при использовании SSD.

Что-то не хватает в моем понимании и / или некоторые параметры, которые мне нужно изменить? Заранее спасибо!

Устройства SLOG предназначены для обеспечения безопасности в случае большого количества одновременных операций записи в случае сбоя питания. Таким образом, данные записываются в устройства LOG, чтобы они были там, если вы теряете питание, но затем они периодически сбрасываются на диск из памяти (несколько секунд), а не с устройства LOG. В обычном случае устройства LOG не читаются, они не являются устройствами кеширования. Если ваш ящик выходит из строя и теряет содержимое ОЗУ до того, как он сможет сбросить ваши данные на диск, ZFS прочитает это с устройства LOG и сбрасывает его оттуда. Вот почему мы используем SSD для устройств LOG.

Это хорошая статья в этой теме, проверьте это: https://www.ixsystems.com/blog/o-slog-not-slog-best-configure-zfs-intent-log/