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. Если файл не существует, то он будет создан и открыт для редактирования, если существует – просто открыт для редактирования.
Теперь внесем в него следующие строки, задающие минимальный и максимальный размер кеша:
Если ваша система использует UEFI, то дополнительно выполните:
pve-efiboot-tool refresh
После чего выполните перезагрузку.
Результат обычно виден сразу и, что называется, невооруженным глазом.
Как видим, даже минимальное понимание происходящих процессов и грамотный подход к распределению оперативной памяти дает отличный результат, позволяя использовать все возможности ZFS, не жертвуя столь необходимой для виртуальных машин памятью.
Если при обновлении яндекс браузера вылезла ошибка:
W: Произошла ошибка при проверке подписи. Репозиторий не обновлён, и будут использованы предыдущие индексные файлы. Ошибка GPG: https://repo.yandex.ru/yandex-browser/deb stable InRelease: Следующие подписи не могут быть проверены, так как недоступен открытый ключ: NO_PUBKEY 60B9CD3A083A7A9A W: Не удалось получить https://repo.yandex.ru/yandex-browser/deb/dists/stable/InRelease Следующие подписи не могут быть проверены, так как недоступен открытый ключ: NO_PUBKEY 60B9CD3A083A7A9A W: Некоторые индексные файлы скачать не удалось. Они были проигнорированы, или вместо них были использованы старые версии.