ZFS показывает свободное место, не может удалить
У меня есть старый пул zfs (созданный 05-2012), который работал на Debian 7.6 и имел 26 Гбайт свободного (из 58 Тбайт), как сообщает df. Я только что переустановил ОС (debian 8.7), и теперь пул показывается как 0 байтов свободными в df, но 1.04 Тбайт "БЕСПЛАТНО" со списком zpool.
У меня есть 2 вопроса:
1) В чем разница между FREE в списке zpool (=1.04 Тбайт) и AVAIL в списке zfs (= 0)?
2) Могу ли я что-нибудь сделать, чтобы использовать это свободное место размером 1 Тбайт? Я удалил все снимки, и это не имело никакого значения...
Заранее спасибо.
% df -h /contentA
Filesystem Size Used Avail Use% Mounted on
contentA 58T 58T 0 100% /contentA
% zpool list contentA
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
contentA 65T 64.0T 1.04T 16.0E - 98% 1.00x ONLINE -
% zfs list contentA
NAME USED AVAIL REFER MOUNTPOINT
contentA 58.0T 0 58.0T /contentA
% uname -a
Linux myserver 3.16.0-4-amd64 #1 SMP Debian 3.16.39-1+deb8u2 (2017-03-07) x86_64 GNU/Linux
% cat /etc/debian_version
8.7
1 ответ
От zfs(8)
справочная страница, available
средства:
The amount of space available to the dataset and all its children,
assuming that there is no other activity in the pool. Because space
is shared within a pool, availability can be limited by any number of
factors, including physical pool size, quotas, reservations, or other
datasets within the pool.
Вообще говоря, первое место, где нужно искать различия, - это вещи вне этого набора данных, такие как резервирование, установленное для другого набора данных в том же пуле.
Тем не менее, из вашего поста это выглядит как набор данных, который вы запускали list
против может быть корневым набором данных для вашего пула, который должен учитывать все остальные поднаборы данных в нем. В некоторых случаях конфигурация пула может привести к таким различиям, как это подробно описано в документации Oracle.
Однако (опять же) они обычно применяются к пространству, которое потребуется для хранения избыточности и метаданных в случае увеличения вашего логического размера данных (т.е. зеркальные пулы показывают вдвое меньше available
пространство как free
пробел, поскольку каждый байт, который вы записываете в набор данных, должен быть скопирован в два места). Так как ваш набор данных available
равен нулю, очевидно, это не просто учет прогнозируемых накладных расходов будущих записей.
Это подводит меня к окончательному объяснению. ZFS имеет механизм безопасности, встроенный в систему учета пространства, чтобы пользователи не могли заполнять пул больше 63/64 (что кажется мне невероятно близким к пропорциям в вашем случае, и, следовательно, почти наверняка к пределу, который вы бьете). Поскольку ZFS всегда требуется новое пространство для внесения изменений в состояние на диске (из-за копирования при записи), если вы превысили этот предел, возможно, что пул больше не сможет удалять объекты, чтобы освободить пространство для новых записей, заставляя это становиться доступным только для чтения - навсегда. Хотя может быть возможно пропатчить ZFS или изменить настройку, чтобы обойти ограничение, я не рекомендовал бы это!