Посібник з налаштування zfs на freebsd

Примітка! Оригінал статті знаходиться в процесі постійного доповнення, переклад може відрізнятися від оригіналу.

При використанні ZFS рекомендується використовувати як мінімум 1Гб оперативної пам'яті. Можлива робота з ZFS і на системах з меншим об'ємом ОЗУ, але в цьому випадку буде потрібно настройка параметрів ядра, в іншому випадку не уникнути проблем.

Історія релізів FreeBSD, що включають ZFS, виглядає наступним чином:

  • 7.0, 7.1 - імпорт оригінальної версії ZFSv6. Вимагає значної настройки для стійкої роботи
  • 7.2 - все ще ZFSv6, поліпшена обробка пам'яті, можливо, amd64 не потребує ні в який налаштування
  • 7.3+ - зворотне портирование коду ZFSv13, але можуть бути відсутні деякі нові можливості
  • 8.0+ - використовується код ZFSv13, проведена велика робота над помилками, рекомендується до використання

Так само рекомендується прибрати з ядра все невикористовувані драйвера і опції, що дозволить заощадити кілька Мб пам'яті. Є відомості про те, що була досягнута стабільна робота зі значенням параметра vm.kmem_size = »1536M» на немодифіковані ядрі 7.0-RELEASE, що виявилося достатнім для роботи драйверів і установки KVA_PAGES = 512.


[Ad name = "Google Adsense»]

Робота під навантаженням може зажадати значного зменшення розміру ARC і кеша VDEV. ZFS управляє ARC через багатонитковою процес і в разі, якщо ARC потребують більше пам'яті, то ZFS виділить необхідне. В цьому випадку arc_max (vfs.zfs.arc_max) може перевищуватися, в той час як інший потік в межах ZFS періодично звільняє пам'ять, виділену ARC, в разі перевищення arc_max. Таким чином, навіть з невеликим значенням arc_max можливе перевищення ARC параметра kmem_size_max і паніка ядра. В системах, де пам'яті недостатньо, рекомендується використовувати мінімально можливий arc_max. Наприклад, можна встановити vm.kmem_size і vm.kmem_size_max в значення 512M, vfs.zfs.arc_max в значення 160M, зберігаючи vfs.zfs.vdev.cache.size вполовину його заданого розміру за замовчуванням 10Мб (при цьому, дивовижним чином, забезпечується краща стабільність).

echo TEXT = $ TEXT, `echo $ TEXT | awk '' `
echo DATA = $ DATA, `echo $ DATA | awk '' `
echo TOTAL = $ TOTAL, `echo $ TOTAL | awk '' `

Увага: можливо є інший спосіб визначення розміру vm.kmem_size. але розробникам про нього невідомо. В даний час для цього потрібні експерименти. Однак, якщо ви встановите в loader.conf значення vm.kmem_size занадто велике, то ядро ​​запанікує на етапі початкового завантаження. Ви можете виправити це, вийшовши в командний рядок завантажувача і встановивши vm.kmem_size = «512M» (або менше).

Параметр vm.kmem_size_max безпосередньо не використовується в системних операціях (не є межею збільшення kmem), але використовується для початкової автоматичної конфігурації різних системних параметрів настройки, найважливішим з яких для цього обговорення є розмір ARC. Якщо kmem_size і arc_max будуть налаштовані вручну, то kmem_size_max буде проігнорований.

Проблема виснаження пам'яті ядра досить складна і залежить від швидкості диска, прикладних програм і кешуванням, яке робить ZFS. Більш швидкі диски запишуть кешувального дані швидше, але також швидше заповнять кеші. Взагалі, чим більше і швидше диски, тим більше пам'яті необхідно ZFS.

В операційних системах від FreeBSD 7.2 і вище, стратегія розподілу пам'яті значно поліпшена, в результаті, на системах з більше ніж 2 Гб оперативної пам'яті, немає необхідності в будь-якої налаштування.

На системах, які використовують FreeBSD 7.0 і 7.1, пам'ять ядра (vm.kmem_size) повинна бути збільшена приблизно до 1 ГБ, а розмір ARC зменшений:

vm.kmem_size_max = "1024M"
vm.kmem_size = "1024M"
vfs.zfs.arc_max = "100M"

Це може допомогти в разі, якщо машина завантажена іншими завданнями, такими як мережева активність (файловий сервер), і т.д. Налаштування KVA_PAGES на amd64 не потрібно.


[Ad name = "Google Adsense»]

Схожі статті