25.06.2017 01:06, Sergey Matveev пишет:
> *** artiom <artio...@yandex.ru> [2017-06-25 00:54]:
>> Вы хотите сказать, что она жрёт 20% места под метаданные?!
>> Или что она просто начинает сильно фрагментироваться, при заполнении?
> 
> Из-за её copy-on-write природы она начинает сильно фрагментироваться,
> верно. Любое изменение данных это создание полной копии и блока данных и
> сопутствующей метаинформации. Само собой перед записью они агрегируются,
> но всё-равно при записи большого файла на диск он никогда не будет
> размещён последовательно: каждые 1-5 секунд ZFS делает checkpoint-ы --
> то есть на диске идут сколько-то блоков данных файла, потом всякая
> метаинформация, снова блоки, потом метаинформация. Причём каждый набор
> метаинформации создаваемый в последующих 1-5 секунд делает неактуальным
> предыдущую. То есть она потенциально становится свободным местом.
> Например *X*FS реально абсолютно последовательно может разместить файл
> на диске
Потому и фрагментация низкая: я с 11-го года комп не дефрагментировал,
посмотрел e4defrag-ом, меньше двух процентов.

> а ZFS нет -- поэтому и нужно много памяти под кэш чтобы
> сгладить всё это, не создавая огромный IO на диск.
> 
Так всё-таки RAM или дисковое пространство свободное больше требуется?

> Но вот зато при неправильной конфигурации RAIDZ, в которой выбрать
> определённое количество дисков и определённый размер блока (recordsize),
> то можно, фактически, просто так потерять 50% места буквально в пустую.
> Вот тут есть тема про это: 
> https://www.delphix.com/blog/delphix-engineering/zfs-raidz-stripe-width-or-how-i-learned-stop-worrying-and-love-raidz
Почитаю, но пока начал с педивикии.

> RAIDZ сделан так, что добавляет чётность, но кол-во получившихся блоков
> для данных+parity должны быть кратны чему-то там и поэтому там будет
> создан блок чисто для padding-а, для выравнивания некоего, не несущего
> полезных данных. Статья эта подчёркивает что в RAIDZ на parity всё же
> будет больше затрачено места чем в аналогичных уровнях RAID, как
> правило.
> 

>> Во втором случае, ведь должна быть онлайн дефрагментация...
> 
> Вот это можно сказать и недостаток. Её нет. Есть хаки в виде
> resilvering-а, то бишь rebuild-а на диски, при котором на них будет
> дефрагментированный образ создан.
Условно: mv всего на другой раздел?

> Можно сделать полный zfs send и
> восстановление ФС zfs recv-ом, но это потребует остановки ФС, что не
> всегда допустимо и возможно. Есть хаки в виде просто копирования файла:
> cp file file.tmp && mv file.tmp file, чтобы сделать его
> дефрагментированным, если, например, он был медленно записан (то бишь,
> из-за частых checkpoint-ов, сильно разряжён). Где-то на форумах они
> говорят что создание online дефрагментации это жутко нетривиальная вещь,
> требующая чуть ли не переписывания всего кода, ибо везде всё одна
> крипта, деревья Меркле, checkoint, итд, итд -- сложно это сделать так,
> чтобы гарантировать "железную" надёжность и поэтому не будут делать.
> 
А нет a-la e4defrag?

Ответить