Хоча відповідь user121391 здебільшого правильна, обмеження 1/4 для метаданих вже не є / давно не було:
Існує обмеження на те, скільки кешу ZFS ARC може бути виділено для метаданих (і таблиця дедуптації підпадає під цю категорію), і вона обмежена на 1/4 розміру ARC
Перш за все, zfs_arc_meta_limit (обсяг пам'яті кешування, який може бути використаний для метаданих, включаючи таблицю дедукції), завжди був налаштований (iirc). Тож навіть у дуже старих версіях ZFS, де 25% за замовчуванням могло бути, ви можете використовувати це налаштування для налаштування кількості кешу, доступного для метаданих. У випадку створення резервної системи, де більшість даних користувачів рідко доступні,> = 75% для метаданих + <= 25% для даних користувача може бути більш підходящим. Будь ласка, майте на увазі, що зазначена настройка - це наявний обсяг пам'яті в байтах, а не відсоток.
Залежно від вашої реалізації ZFS, будь ласка, врахуйте наступне:
Для ZFS в Oracle Solaris 11 ліміт давно повністю знято:
До впровадження цієї зміни ARC обмежив метадані однією чвертю пам'яті. Яке б обґрунтування цього не було, воно зараз має серйозний негативний вплив на ефективність дедуптування. Оскільки DDT вважається метаданими, він підпадає під обмеження 1/4. На даний момент ця межа є анахронізмом; його можна усунути (вірніше, встановити в arc_c).
Тож поки ви МОЖЕТЕ встановити ліміт, це більше не рекомендується.
Для ZFS в Linux до 0,6.x , наприклад, для Ubuntu 16.04, за замовчуванням 75%:
zfs_arc_meta_limit (ulong) : Максимально дозволений розмір у байтах, які буфери метаданих можуть використовувати в ARC. Коли ця межа буде досягнута, буфери метаданих будуть повернені, навіть якщо загальна arc_c_max не була досягнута. Це значення за замовчуванням до 0, яке вказує на те, що 3/4 ARC може використовуватися для метаданих.
Ви також можете налаштувати, якщо ви хочете, щоб мінімальний об'єм пам'яті завжди був зарезервований для метаданих:
zfs_arc_meta_min (ulong) : мінімальний дозволений розмір у байтах, які буфери метаданих можуть споживати в ARC. Це значення за замовчуванням до 0, яке вимикає підлогу на кількість виділених мета-даних ARC.
У ZFS на Linux 0.7.0 , схоже, знайдеться спосіб налаштування обсягу пам’яті з обмеженням у відсотках:
zfs_arc_meta_limit_percent (ulong) : відсоток буферів ARC, які можна використовувати для метаданих. Дивіться також zfs_arc_meta_limit, який виконує подібну мету, але має більш високий пріоритет, якщо встановлено ненульове значення.
Якщо ви плануєте використовувати реалізацію ZFS на базі Linux, перш ніж витрачати багато $$$ на обладнання, подумайте про моделювання вашого випадку використання у віртуальній машині. Я рекомендую протестувати найгірший випадок на дедупцію (= 100% випадкових даних). Якщо у вас немає під рукою необхідних ресурсів для віртуалізації, зауважте, що ви можете завжди просто розкручувати шалено величезні екземпляри більшості хмарних постачальників за пару годин за дуже маленькі гроші.
Останнє, що слід врахувати: Ви завжди можете налаштувати розмір ZFS. Взагалі кажучи, невеликі розміри записів дадуть кращі коефіцієнти зменшення (але, очевидно, вимагають більше оперативної пам’яті для таблиці виведення). Більші розміри записів принесуть гірші коефіцієнти зменшення, але потребують меншої оперативної пам’яті для таблиці виведення. Наприклад: Поки ми не використовуємо дедуппію на нашому резервному сховищі ZFS, я встановив розмір запису ZFS до 1М, щоб відповідати розміру блоку, з яким працює наша програма для резервного копіювання.
Не впевнений, чому я щойно написав дисертацію PHD про кешування метаданих ZFS, але я сподіваюся, що це допомагає. :)