--- Исходное сообщение --- От кого: "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
