ZFS komprese

Obrázek uživatele mira

Zajímalo mě, kolik se dá díky ZFS a použité kompresi ušetřit. Předmětem není zkoumat zatížení CPU, zkoušet různé druhy zápisu, použitou velikost bloku nebo mód ZFS.

Úvod

A tak jsem si provedl malý test. Měřil jsem, kolik složka zabírá bez komprese, s defaultní kompresí lzjb (někde jsem se dočetl, že odpovídá GZIP levelu 7) a s maximální kompresí GZIP level 9.

Test jsem provedl na bězném PC s dostatkem paměti a postarším funkčním IDE diskem.

Postup

Vytvořil jsem si nový pool a v něm další tři s příslušnou kompresí.

# zfs create rpool/test
# zfs create -o compress=off rpool/test/off
# zfs create -o compress=on rpool/test/lzjb
# zfs create -o compress=gzip-9 rpool/test/gzip

Jako vzorek testovacích dat jsem použil zdrojové kódy Linux kernelu.
# wget -O /tmp/linux-2.6.31.5.tar.bz2 http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.31.5.tar.bz2

Data jsem poté rozkopíroval do jednotlivých poolu.
# for pool in off lzjb gzip; do tar -xjf /tmp/linux-2.6.31.5.tar.bz2 -C /rpool/test/$pool/; done

Výsledek?

# du -sh /rpool/test/*
113M    /rpool/test/gzip
205M    /rpool/test/lzjb
363M    /rpool/test/off

Díky kompresi se 363MB smrsklo na 113MB při kompresním poměru 3.49.
# zfs get -r compressratio rpool/test
NAME             PROPERTY       VALUE  SOURCE
rpool/test       compressratio  1.63x  -
rpool/test/gzip  compressratio  3.49x  -
rpool/test/lzjb  compressratio  1.82x  -
rpool/test/off   compressratio  1.00x  -

Vliv komprese na rychlost dat

Další zajímavostí je to, že i když systém musí počítat kompresi, paradoxně to zvyšuje jak rychlost čtení, tak zápisu. Je tomu tak protože čas potřebný na kompresi a dekompresi dat je díky procesoru kratší než čas potřebný na čtení a zápis nekomprimovaných dat z/na disk.

Statistiky

Původně jsem chtěl udělat malý test čtení a zápisu s kompresí i bez ale nakonec jsem od toho upustil. Nejsem si jistý jak relevantní by byl můj test s použitým dd if=/dev/urandom of=/rpool/test/..., a tak jsem nakonec naměřená data nepoužil. Ono vymyslet nějaký jednoduchý test je docela věda. Ale třeba na to někdy dojde. Na konci článku jsou i nějaké odkazy, které se tímto snaží zabývat.

Závěr

Funguje to. :-) V dalším kole bych test rád opakoval se zapnutou deduplikací. To by mohlo přinést další razantní úsporu místa. Inu, uvidíme.

Zdroje