Postavil jsem si druhé pole, jen tak pro srandu. Narval do toho plonkovní 6x 500GB disky, co mi tu zbyly a napadlo mě, jaké využití by mohla mít ZFSska s povolenou kompresí na maximální možnou gzip-9.
use case: Máte menší diskové pole, procesorového výkonu máte na dnešní dobu habaděj (v mém případě 12 vláknový Ryzen 5 1600 a 32GB RAM) a fakt šetříte dost místa.
V mém případě jsem do pole nahrával 457 GB Image .qcow2 na KVM.
Zabraného místa je 280GB, kompresní poměr 1.63, to znamená, že jsem nahráním souboru o velikosti 457GB do pole ušetřil 177 GB, tedy 38% úspora prostoru na diskovém poli.
Teď ta špatná zpráva. Sypal jsem to po gigabitové lince mezi stroji. Průměrná rychlost sypání dat byla něco přes 29 MB/s a všech 12 vláken jelo po většinu času na max. RAMek to sežralo okolo 16 GB.
Co z toho vyplývá?
Jestli máte doma 100Mbps síť a máte dost procesorového výkonu i RAMek, tak si můžete nechat kompresi gzip-9 a ušetříte místo. Pokud máte někde na chalupě nebo na jiné lokalitě 100Mbps linku do internetu a jste schopni se na pole dostat, tak tohle by pro Vás mohlo být řešení, jak sice saturovat 100Mbps linku, vytížit procesor na max, ale na druhou stranu ušetříte hodně místa.
Největší problém při provozu bude asi ta spotřeba elektřiny procesoru, RAMek a samozřejmě 6 disků taky elektroměr protočí.
Dost by mě zajímalo, jak by se tentýž setup choval, kdybych měl diskové pole s nějakým celeronem G3900 či podobně nízkého výkonu.
Po restartu ubuntu-server 20.04 LTS ZFS pole není? Co teď?
Klid, ještě z okna neskákejte! Data tam jsou, problém byl zde:
# systemctl status -l zfs-import-scan.service ● zfs-import-scan.service - Import ZFS pools by device scanning Loaded: loaded (/lib/systemd/system/zfs-import-scan.service; disabled; vendor preset: disabled) Active: inactive (dead) Docs: man:zpool(8) proto následující příkazy vypisovaly "nic": # zfs list no datasets available
# zpool status -v no pools available Následující příkaz však vypíše první vlaštovku, tedy že tam někde nějaké pole je: # zpool import pool: zfs id: 1542621685696878948 state: ONLINE action: The pool can be imported using its name or numeric identifier. config: zfs ONLINE raidz1-0 ONLINE sde ONLINE sdc ONLINE sdb ONLINE sdd ONLINE sdh ONLINE sdg ONLINE nicméně: # zpool status -v no pools available Takže: # systemctl restart zfs.target # systemctl enable zfs.target Co dál? Věděl jsem, že jsem moje zfs pole pojmenoval jen jednoduše názvem zfs. Tedy zadám příkaz:
# zpool import zfs
A víte co? Měl ho tam!
viz hláška z básníků, zde už výpis příkazu zpool status
# zpool status pool: zfs state: ONLINE scan: scrub repaired 0B in 0 days 02:00:10 with 0 errors on Sun Mar 14 02:26:00 2021 config: NAME STATE READ WRITE CKSUM zfs ONLINE 0 0 0 raidz1-0 ONLINE 0 0 0 sde ONLINE 0 0 0 sdc ONLINE 0 0 0 sdb ONLINE 0 0 0 sdd ONLINE 0 0 0 sdh ONLINE 0 0 0 sdg ONLINE 0 0 0 errors: No known data errors Je tam? # df -Th Je: Filesystem Type Size Used Avail Use% Mounted on zfs zfs 2.2T 280G 2.0T 13% /zfs Kdyby to ani potom nemountovalo, tak: zfs mount název
tedy v mém případě: zfs mount zfs Ukázka komprese: # zfs get all zfs | grep compressratio zfs compressratio 1.63x - zfs refcompressratio 1.63x - zdroj
No nic, jdu to porovnat se standardní LZ4, která žere nula nula nic procesoru. Třeba zjistím, že cestou gzip-9 cesta nevede. 😉