На днях столкнулся с проблемой. При полном заполнении пула 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 -- безуспешно.
Погуглив, нашел описание похожих проблем, но объяснения и решения нет. Есть различные пути решения проблемы, но это все из области танцев с бубном и костылей.
В данном случае интересна сама причина, по которой не удается удаление. И, возможно, штатный метод предотвращения подобной ситуации.
> # zfs list /test-pool/fszfs list -t snapshot -S used | grep /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Написано: нет места!
>> # zfs list /test-pool/fs
> zfs list -t snapshot -S used | grep /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
> Написано: нет места!# zfs list -t snapshot
no datasets availableСнепшотов нет, что места нет это я знаю, для того и вывод команды дал.
Суть вороса -- почему так происходит, почему в одном случае при отсутствии свободного места удаление возможно, в другом нет?
> Снепшотов нет, что места нет это я знаю, для того и вывод
> команды дал.
> Суть вороса -- почему так происходит, почему в одном случае при отсутствии
> свободного места удаление возможно, в другом нет?Насколько я понял, у ZFS проблемы с очисткой, при нехватке места.
В вашем случае не хватает места для маркировки "удаления" файла.
поиграйтесь с размером файла, чтоб выяснить сколько еще байт ZFS необходимо, чтоб файл нормально удалялся.
Можно попробовать вначале обнулить файл, а потом удалить)
> Можно попробовать вначале обнулить файл, а потом удалить)Это обычно и есть "официальный" метод решения проблемы, только не работает если файл находится в каком-либо снапшоте
>> Можно попробовать вначале обнулить файл, а потом удалить)
> Это обычно и есть "официальный" метод решения проблемы, только не работает если
> файл находится в каком-либо снапшотефиксы планируются?