Настройка ARC ZFS

ARC (Adaptive Replacement Cache, кэш адаптивной замены) – собственный эффективный механизм кеширования ZFS использующий достаточно сложные и эффективные алгоритмы. Основной смысл его работы – максимально исключить обращения к диску на чтение в пользу использования кешированных данных. И чем эффективнее работает ARC, чем больше попаданий в кеш, тем тяжелее становятся его элементы и тем труднее их из памяти вытеснить. В результате ZFS практически всегда будет занимать под ARC все доступное ей пространство. С одной стороны, это хорошо, но не будем забывать, что память – дорогой ресурс, а соверменные хранилища могут состоять из быстрых SSD или NVMe накопителей.

В большинстве случаев имеет смысл радикально ограничить ZFS в потреблении памяти, высвободив ее для виртуальных машин.

Классическая формула расчета предполагает:

1 ГБ для хоста + 1 ГБ на 1 ТБ хранилища

При этом не рекомендуется использовать значения кеша менее 3 ГБ.

Современные рекомендации предполагают большие размеры выделяемой памяти:

1 ГБ + 4-5 ГБ на 1 ТБ хранилища

А если вы используете дедупликацию, то:

1 ГБ + 5-6 ГБ на 1 ТБ хранилища

Исходя из этого и рекомендаций по минимальному размеру можно считать достаточно оптимальным значением для небольших хранилищ размер кеша 4 – 8 ГБ. Размер кеша ZFS задается в байтах и вычислить его можно по формуле:

N*1048576*1024

Где N – нужное значение в ГБ.

Чтобы добавить собственные настройки лимитов ARC создайте, если вы не сделали этого ранее, файл /etc/modprobe.d/zfs.conf и откройте его для редактирования. Все это можно сделать одной командой:

nano /etc/modprobe.d/zfs.conf

Если вы предпочитаете редактор mc, замените nano на mcedit. Если файл не существует, то он будет создан и открыт для редактирования, если существует – просто открыт для редактирования.

Теперь внесем в него следующие строки, задающие минимальный и максимальный размер кеша:

options zfs zfs_arc_min=4294967296 
options zfs zfs_arc_max=8589934592

Затем обновим образ начальной файловой системы:

update-initramfs -u

Если ваша система использует UEFI, то дополнительно выполните:

pve-efiboot-tool refresh

После чего выполните перезагрузку.

Результат обычно виден сразу и, что называется, невооруженным глазом.

Как видим, даже минимальное понимание происходящих процессов и грамотный подход к распределению оперативной памяти дает отличный результат, позволяя использовать все возможности ZFS, не жертвуя столь необходимой для виртуальных машин памятью.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.