Назад | Перейти на главную страницу

Несоответствие использования емкости ZFS

Я пытаюсь понять, почему существует большое несоответствие между используемым пространством производственного набора данных ZFS и набора данных резервного копирования, который заполняется с помощью ночной отправки zfs (я храню 30 ежедневных снимков и реплицирую каждую ночь - никакие другие системы не записывают или в противном случае получить доступ к резервному набору данных). Сжатие и дедупликация не включены ни с одной стороны. В наборе данных резервного копирования указано, что используется 315T, в то время как в производстве используется только 311T (две системы, по сути, являются зеркальными с точки зрения оборудования). Моя проблема в том, что ночные отправки zfs теперь не работают (не хватает места).

Последующий вопрос: есть ли очевидный выход из этой проблемы? Пул резервных копий показывает 10,7 ТБ свободно, но, похоже, это не доступно для набора данных, поскольку в нем указано только 567 ГБ. Если бы мне пришлось уничтожить пул резервных копий и выполнить полную zfs-отправку производственных данных, ожидать ли мы его завершения? Я уже уничтожил все, кроме двух последних снимков, в наборе данных резервной копии, но он не освободил достаточно места, чтобы разрешить новую отправку zfs. Я намеренно установил квоту в 312 ТБ для производственного набора данных, чтобы контролировать пользователей, поскольку они часто работают почти на 100%, но кажется, что квоты могло быть недостаточно? (для резервного пула / набора данных квота не определена)

Production system:
# zpool list
NAME      SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
data      326T   311T  15.3T         -    44%    95%  1.00x  ONLINE  -

# zfs list
NAME                                                 USED  AVAIL  REFER  MOUNTPOINT
data                                                 311T  5.11T    96K  /data
data/lab                                             311T  1.30T   306T  /data/lab


Backup system:
# zpool list
NAME        SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
backup      326T   315T  10.7T         -     6%    96%  1.00x  ONLINE  -

# zfs list
NAME                                                   USED  AVAIL  REFER  MOUNTPOINT
backup                                                 315T   567G    96K  /backup
backup/lab                                             315T   567G   315T  /backup/lab

На основе выход zdb в целевом (резервном) пуле нет устройства SLOG. Это означает, что выделяется дополнительный блок ЗИЛ. внутри бассейн обычное пространство, съедает в доступное пространство. В то время как устройство SLOG основного пула имеет "всего" ~ 185 ГБ (что слишком много для обычного SLOG), влияние на целевой пул может быть значительно больше, поскольку для работы ZIL постоянно выделяются новые блоки. Более того, это может привести к чрезмерной фрагментации метаслаб с большим объемом выделенного пространства.

РЕДАКТИРОВАТЬ: Другая возможная причина несоответствия размера может быть связана с самим zfs send / recv: по умолчанию он работает с максимальными параметрами совместимости, что может несколько раздуть принимающую сторону. Для получения дополнительной информации вы можете посмотреть сообщение рассылки Вот

НОТА: вышеприведенный ответ сделал явное предположение, что все остальное и были равно - например, если вы временно включили сжатие в исходном пуле, выделение пространства будет явно отличаться от целевого пула (если в нем никогда не было включено сжатие).

ИСПРАВИТЬ: Я не думаю, что добавление SLOG для пула резервных копий сейчас может быть полезным; скорее, я бы отрегулировал spa_slop_shift (увеличивая его), чтобы освободить значительное пространство. Значение по умолчанию - 5, попробуйте установить его на 6, выполнив echo 6 > /sys/module/zfs/parameters/spa_slop_shift. Последующий zfs list должен сообщать о значительно большем доступном пространстве (с нет изменить выделенное пространство, как показано zpool list).

Если вам нужно еще больше места, вы можете снова увеличить spa_slop_shift - но обязательно прочтите документацию, чтобы понять, что вы делаете.