05 Nov 17 21:58, Eugene Grosbein wrote to Vova Uralsky:
VU>> Ты соскочил с темы. Место надо не только для удаления, а просто для VU>> работы. То есть нужны блоки, не принадлежащие никакому датасету. VU>> Резервирование блокирует незанятые блоки, ухудшая ситуацию в VU>> переполненном пуле. EG> Оно блокирует незанятые блоки для дела.
Это что за "дело" за такое? Запись идёт в датасеты, если тебе надо писать не в тот датасет, где у тебя резерв, и в пуле места больше нет, то тебе просто не повезло.
VU>> К тому же мы ещё не проверили, работает ли оно действительно так, как VU>> ты предполагаешь. EG> # zfs get reservation EG> NAME PROPERTY VALUE SOURCE EG> md0 reservation 100M local VU> ---------------------^^^^ EG> md0/fs reservation none default EG> Заполним fs данными из /dev/urandom: EG> # ls -lh /md0/fs EG> total 8059579 EG> -rw-r--r-- 1 root wheel 3,8G 5 нояб. 22:46 file EG> # zpool list md0 EG> NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH EG> ALTROOT EG> md0 3,97G 3,84G 128M - 47% 96% 1.00x ONLINE - VU> ---------------------^^^^ EG> # cp file file2 EG> cp: file2: No space left on device EG> # rm file EG> rm отработал за доли секунды.
жаль что ты не смог заполнить md0/fs на 100%, интересно было бы посмотреть, обломится ли после этого rm? Если у тебя в пуле осталось 128M свободно, что-то явно не так. df -h /md0/fs было бы информативнее.
Чтобы заполнть остаток места, не высчитывая свободные байтики, можно воспользоваться dd if=/dev/zero of=/md0/fs/fileX. Если ты не включал дедупликацию или компрессию, /dev/zero вполне хватит.
EG> # zpool list md0 EG> NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH EG> ALTROOT EG> md0 3,97G 1,80M 3,97G - 3% 0% 1.00x ONLINE - EG> Сойдет?
Я, видимо, не понял цели твоей лабы. Доказать что можно писать в dataset почти до конца не отвечает ни на один из поставленных вопросов. (мы, вроде, жуём это уже несколько дней) А вопросы были такие:
1. Если заполнить датасет на 100%, можно ли удалить в нём файл? (если он зажат квотой, мы знаем, можно, а если резервированием на другом датасете?) 2. Если не (1), можно ли уменьшить резервирование на другом датасете и удалить файл из (1)? 3. Если убрать резервирование совсем -- заполнение пула на 100%, прокатывает ли (1)? 4. Если мы заполняем пул на (почти?) 100%, ему приходят тормоза и пушистый зверёк на $\pi$ (Korchmar effect)
И ещё, ты поставил резервирование на корневой датасет, был в этом какой-то скрытый смысл? Можно было просто повторить мою лабу? Или она не отвечала по каким-то критериям?
Hа всякий случай, если кто-то уже забыл, мои ответы с опениндианы: 1. Да 2. Hе имеет смысла, см текст вопроса 3. Да 4. Hет, хотя это виртуалка и размер пула сопоставим с размерами ОЗУ хоста.