На днях столкнулся с проблемой. При полном заполнении пула ZFS невозможно удалить файлы. Причем ситуация неоднозначная.
На тестовом сервере я пытался воспроизвести ту же ситуацию. Создал пул из файла и создал в нем один больной файл, размером, равным всему доступному месту пула. Затем файл удалил. Удаление прошло без проблем.
НО!!
Когда я создал большое количество файлов и места свободного так же не осталось, удалить файл не получилось.# pwd
/test-pool/fs
# zfs list /test-pool/fs
NAME USED AVAIL REFER MOUNTPOINT
test-pool/fs 63.1M 0 63.1M /test-pool/fs
# df -k /test-pool/fs/
Filesystem kbytes used avail capacity Mounted on
test-pool/fs 65038 64610 0 100% /test-pool/fs
# ls -lh 1
-rw-r--r-- 1 root root 1.0K Aug 26 13:32 1
# rm 1
rm: 1 not removed: No space left on device
Пробовал использовать свойства quota и reservation -- безуспешно.
Погуглив, нашел описание похожих проблем, но объяснения и решения нет. Есть различные пути решения проблемы, но это все из области танцев с бубном и костылей.
В данном случае интересна сама причина, по которой не удается удаление. И, возможно, штатный метод предотвращения подобной ситуации.