--- Исходное сообщение ---
От кого: "Alexey Markov" <[email protected]>
Дата: 16 апреля 2013, 12:56:03

 
> Hello, Alexander!
> On April, 16 2013 at 13:23 you wrote to Alexey Markov:
> 
> ??>> Собственно, сабж. Конкретнее: вот есть у меня текстовый файл
> ??>> размером в гигабайт, и 10 раз в секунду к нему дописывается
> ??>> ещё по 100 байт (открыли файл, дописали, закрыли). Какой объём
> ??>> будет подвергаться сжатию на ZFS - весь файл; индивидуальные
> ??>> кусочки по 100 байт; хвост файла, находящийся в последнем блоке?
> 
> AY> Cow подразумевает обновление только измененного блока плюс того
> AY> блока где инфа о блоках. Это было бы логично :)
> 
> Дело в том, что у ZFS динамический размер блока, по-умолчанию - от
> 512 байт до 128 килобайт. Судя по доке, сжатие происходит только в
> том случае, если сжатый кусок файла потом может уместиться в блоке
> меньшего размера, чем раньше. И вот тут возникает проблема: если у
> нас к файлу добавляются маленькие кусочки (как это обычно бывает с
> логами), то очень скоро весь огромный файл будет представлять собой
> последовательность сжатых блоков минимального размера. И выигрыш от
> сжатия таких блоков тоже будет минимальный.


Как вы себе представляете прибавление к сжатому файлу не сжатого куска?
ZFS оперирует блоками.
Ей нужно будет прочитать все блоки со словарем.
Потом разжать n-последних блоков файла.
Прибавить кусок несжатого лога.
Потом опять запаковать в n+m блоков.
Очень сильно повезет, если n предпоследних блоков не изменятся.

-- 
Vladislav V. Prodan            
System & Network Administrator 
http://support.od.ua           
+380 67 4584408, +380 99 4060508
VVP88-RIPE

Ответить