Установка общесистемной квоты на ZFS

Обычно рекомендуется не заполнять том ZFS больше 70-80%, чтобы предотвратить фрагментацию. Я, однако, обнаружил, что в прошлом я вышел за пределы этого (синдром "Мне нужно чуть больше, я проясню это позже"). Вскоре я перенесу некоторые из своих томов на новые, чтобы они снова стали "чистыми" и хотели бы установить ограничение на указанные тома. По сути, квота для всех пользователей, чтобы я не смог преодолеть этот барьер.

Итак, это так же просто, как просто установить следующее (в данном случае предполагается диск объемом 3 ТБ)?

zfs set quota=2000G storage/data

Если да, то можно ли здесь использовать процент?

Наконец, учитывая большие объемы, рекомендация все еще составляет 70-80%, или следует рассчитать более разумную сумму, умножив наибольший возможный файл, который будет сохранен / скопирован на него, на количество х (очень похоже на то, что мониторинг не будет выбрасываться критическое предупреждение на 90% объема 10EB, но будет рассчитывать средний рост данных и устанавливать что-то более реалистичное)?

Я думаю, что я могу найти первые вопросы с некоторым поиском, но последний вопрос нацелен на экспертов.

1 ответ

Я не уверен, почему, но мой первый инстинкт был использовать оговорку, а не квоту. Я подумал (ошибочно), что, возможно, суперпользователь сможет обойти квоту, но быстрый тест показал, что моя догадка была неверной.

Тем не менее, просто ради назидания, рассмотрите возможность использования резервирования вместо квоты:

zfs create \
    -o reservation=500G \
    -o canmount=off \
    -o mountpoint=none storage/unusable

Помните, что квоты и резервирование используют дополнительные числа. В вашем примере ваш размер в 2000 ГБ - это объем используемого пространства, которое вы хотите иметь. В приведенном выше примере резервирования 500 ГБ - это объем неиспользуемого пространства, которое будет удержано из общего пространства пула. Отрегулируйте по вкусу.

Различия небольшие, поэтому я предлагаю это просто как альтернативное решение, а не как "лучший способ сделать это". Однако есть одно небольшое преимущество, которое может окупиться лишь в будущем.

С квотой вы никогда не сможете использовать это зарезервированное пространство, даже в качестве суперпользователя. Но с оговоркой суперпользователь может получить доступ к этому пространству:

zfs set canmount=noauto,mountpoint=/root/temporary storage/unusable
zfs mount /root/temporary

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

РЕДАКТИРОВАТЬ:

Чтобы проиллюстрировать, что резервирование делает с пулом, вот небольшой пул виртуальных дисков 4G с резервированием 1G:

# zfs list -o name,used,avail,reservation,refer,mountpoint -r mypool
NAME              USED  AVAIL  RESERV  REFER  MOUNTPOINT
mypool           1.00G  2.62G    none    88K  /mypool
mypool/unusable    88K  3.62G      1G    88K  none
mypool/usable      88K  2.62G    none    88K  /mypool/usable

# zpool list mypool
NAME     SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
mypool  3.75G   744K  3.75G        -         -     0%     0%  1.00x  ONLINE  -
Другие вопросы по тегам