Art
если данные не сжаты внутри, на уровне приложения, то подходит
мне вот что не понятно со сжатием. Почему ОС сжимается намного лучше чем данные?
Вот у меня ВМ почтового сервера. Два ZVOL - один под системный вирт диск и второй под диск для данных.
Так вот на системном сжатие 44%, а на втором всего 6(
И с виндой то же самое. Накатишь чистую систему: сжатие в районе 35%. Но по мере наполнения данными суровень сжатия падает...
Чому так? Попробовать что ли zstd...
Василий
Не копал как устроено сжатие в zfs, но скорее всего тут играет роль дробность записи. Т.е. если пишутся большие файлы целиком, то больше места развернуться сжатию. Во время работы обычно пишутся куски и на них сжатие более локальное. Как-то так. Разницу скорее всего можно увидеть, если сжатый мало диск скопировать пофайлово даже на том же волюме.
Δαρθ
может просто trim сделать :)
Владимир
Δαρθ
а прилаги вполне могут упакованные данные на диск писать, такое и не сожмётся никогда
Владимир
Владимир
а ещё в вирде можно врубать сжатие на ntfs
Evgenii
Evgenii
или ты думаешь, если зазиповать 2 раза, то займет меньше места?
Art
попробуй у винды поставить блок у фс размером с блок у zfs
игрался с этим. ZVOL под диск для данных (файлы, в основном большие), не системный - лучший результат по скорости и сжатию был, когда выровнял volblocksize c "размером кластера" в гостевой винде - установив обоим 64К
Впрочем, всё равно получил обидные 8%
Результаты тестов не сохранил, но с дефолтными параметрами было хуже, что-то типа 4-6%
Evgenii
Владимир
Evgenii
даже docx сжатый формат
Evgenii
это пачка xml внутри zip архива
central
Evgenii
zfs set compression=...
Evgenii
Art
а ты в винде поставь 4к и включи сжатие на уровне винды)
вот про сжатие диска внутри ОС что-то не задумывался, попробую👍
Но вопрос остаётся. @igluko я поэксперементирую. Разверну систему, подключу в ней диск для данных. И загружу туда данных, которые заведомо должны хорошо сжаться. Только вот что это может быть?.. Может, онлайн-библиотеку какую -нибудь скачать...
Art
у тебя сейчас наверное параметр compression имеет значение on, это и означает lz4
Art
аа... ну так, или иначе
Evgenii
можно
Art
конечно можно, как выше Евгений написал:
zfs set compression=zstd poolname
Art
но применяться начнёт только для новых записанных блоков
Art
оппа...
Art
что за втф)
у меня так: on | off | lzjb | gzip | gzip-[1-9] | zle | lz4 | zstd | zstd-[1-19] | zstd-fast
чекни версию zfs:
zfs version
Evgenii
zpool status
Evgenii
zpool upgrade
Evgenii
да, но откатиться на старую версию zfs драйвера больше не сможете
Evgenii
пул применит новые фичи
Art
надо без судо, напрямую из под рута - sudo su, потом zfs version и zpool status
Владимир
Δαρθ
Δαρθ
Art
Владимир
George
У вас версия openzfs 99% просто старая
Владимир
Владимир
Ivan
zfs -V
Ivan
хм, чет я подзабыл наверно как версию смотреть
Ivan
старовата версия
Ivan
смотря в каком
Ivan
можно поставить из ветки посвежее. в sid 2.1.1.
Владимир
Владимир
подключи бекпорты
Владимир
в них есть версия 2
Владимир
просто апгрейдом обновишься
Владимир
очень странно)
Ivan
Владимир
Владимир
не шути так)
Владимир
это же сломает ему систему
Владимир
к тому же оно есть в бекпортах
Владимир
Владимир
и это не правильно
Владимир
2.0 есть в бекпортах деб10
Владимир
встанет без проблем
Владимир
и без если
Владимир
и вероятнее всего его будет достаточно
Владимир
совсем на край есть тестинг
Владимир
https://packages.debian.org/source/bookworm/zfs-linux
Владимир
но тут уже можно поломать что-то
Владимир
нужно с умом подходить
Владимир
но точно блин не сид
George
zstd хорош на холодном сторадже, тут не стоит прям гнаться, для common случаев lz4 оптимален
Ivan
я когда тестировал zswap на hdd, то почти не лагало только lzo, а lz4 было уже ближе к отсутствию zswap.
George
sudo modprobe brd rd_nr=1 rd_size=$((4 * 1048576))
cat > fio.conf << EOF
[workload]
bs=8k
ioengine=sync
iodepth=1
numjobs=1
direct=1
sync=1
fsync=1
time_based=1
runtime=10
size=100M
filename=/testpool/bigfile
rw=write
thread
unified_rw_reporting=1
group_reporting=1
buffer_compress_percentage=20
refill_buffers
buffer_pattern=0xdeadbeef
EOF
sudo ./scripts/zfs.sh -u
sudo ./scripts/zfs.sh
sudo $ZPOOL create -f -o ashift=12 testpool /dev/ram0
sudo $ZFS set recordsize=8k testpool
sudo $ZFS set logbias=throughput testpool
sudo $ZFS set compression=lz4 testpool
sudo rm /testpool/bigfile -f
sudo fio fio.conf
sudo $ZPOOL sync
sudo $ZFS get compressratio,compress,used
stat /testpool/bigfile
вот вам живые цифры, как на latency для sync write влияет lz4 (openzfs master 2021.11)
# without compression
clat (usec): min=42, max=46441, avg=68.93, stdev=194.79
# lz4
clat (usec): min=55, max=43277, avg=78.47, stdev=179.52
# gzip
clat (usec): min=204, max=14983, avg=273.33, stdev=120.69
на max можно не смотреть, это ограниченная по ресурсам машина
Это если logbias=throughput,
если по дефолту =latency, то в zil запись не сжимается и sync latency вообще не аффектится (если cpu хватает чтобы запись в zil и сброс txg не толкались).
Конфиг считать набросом на ночь
Казанский
Всем привет, был хард с zfs, вместо мониторования сделали zpool create, соответственно пропали все имеющиеся разделы, создался один пустой. Есть где-то бэкапы суперблока/метаданных?
Казанский
Казанский
В том-то и дело, что без вопросов был создан новый пул, это тоже смущает.
"автоматически нулевые" - это значит все данные уже потеряны? На сам диск после создания пула ничего не было записано.
George
> В том-то и дело, что без вопросов был создан новый пул, это тоже смущает.
я проксом не ставил систему, но "без вопросов" очень настораживает
George
в общем надежда есть только если на диске разделы были с другим смещением. Если смещение совпало, то старых уберблоков уже нет, они перезатёрты.
А т.к. "диск полностью отдавали" оба раза, то разделы должны были до байта создасться те же, в общем доставайте бекапы если есть
Казанский