Pá. Bře 29th, 2024

Chtěl jsem si po čase vyzkoušet ZFSku, protože posledně jsem si ji rozběhal někdy v roce 2013 a to to běhalo ještě na hardwarovém raidu jen kvůli konzistenci dat.
Rozběh mi připadal velmi snadný. Preventivně uvádím informaci, že pokud si vytvoříte ZFS a ztratíte v ní data, tak za to neberu zodpovědnost, ani záruku. Každý si musí rozhodnout sám, jestli data bude držet jen na jednom místě, nebo na více místech a jestli je pro něj ZFS ta pravá volba.

V mém případě má po 7 letech, kdy jsem naposledy ZFS implementoval tyto důvody:
1) Úspora místa pomocí komprese a deduplikace
2) Otestování výkonnosti na obyčejných discích (lze možnost rozběhat i caching, do toho se časem taky vrhnu). (momentálně to zkouším na stařičkem AMD A6 2 jádrovém a na to domácí žvýkání to stačí. Určitě bych ZFSku nestavěl na nějakém starém intel atomu a už teď mi dochází, že byla chyba tam cpát jen 6GB RAM, ale že by to chtělo minimálně 8, ideálně i 12 nebo 16GB RAM, ať mám rezervu)
3) Otestování spolehlivosti
4) Ověřit, co se stane až a) dojdou RAMky b) až dojde místo na poli, jestli rapidně klesne i výkon pole či nikoliv.
5) Otestovat jak funguje v domácím prostředí snapshoting, jak rychle by na tom běhala virtualizace apod…Možnosti hraní jsou zkrátka neomezené

 

echo "deb http://deb.debian.org/debian buster-backports main contrib
deb-src http://deb.debian.org/debian buster-backports main contrib" > /etc/apt/sources.list.d/buster-backports.list

echo "Package: libnvpair1linux libuutil1linux libzfs2linux libzpool2linux spl-dkms zfs-dkms zfs-test zfsutils-linux zfsutils-linux-dev zfs-zed
Pin: release n=buster-backports
Pin-Priority: 990" > /etc/apt/preferences.d/90_zfs
apt update -y && apt-upgrade -y && apt install  --yes dpkg-dev linux-headers-$(uname -r) linux-image-amd64 && apt-get install zfs-dkms zfsutils-linux -y
export PATH=$PATH:/usr/sbin/

Máme nainstalováno.

Rozběh ZFS raidz2 pole

Pomocí fdisk -l si ověřte, které disky do ZFSky chcete vložit, v mém případě jsem si uložil tyto příkazy:

zpool create zfs raidz2 /dev/sda /dev/sdb /dev/sdc /dev/sde /dev/sdf /dev/sdg -f
zfs set xattr=sa zfs
zfs set acltype=posixacl zfs
zfs set compression=lz4 zfs
zfs set atime=off zfs
zfs set relatime=off zfs
zfs set dedup=on zfs

-f v příkazu zpool create umožní vytvořit raidz2 pole i z disků, které mají jinačí kapacitu. Doma jsem vyhrabal ještě jeden 3TB disk a ostatní jsou velikosti 2TB a já chtěl zkusit, jak se to bude chovat. No a platí to staré známé pravidlo „přizpůsobí se to velikosti nejmenšího z nich“.

Co který příkaz znamená zjistíte ve zdroji2.
Pro mě nejdůležitější příkazy:
dedup=on  (pokud máte nějaký soubor na ZFS poli více než 1x…tak se tam uloží jedenkrát a podruhé se tam uloží jen pointer na ty stejná data, takže jste schopni šetřit místo)

compression=lz4  souborový systém je komprimovaný, z pouček vidím, že co 1TB diskové kapacity, to 1GB RAM, takže počítejte, že vaše diskové pole musí mít nějakou rezervu. Momentálně zkouším na 6GB RAM 7,1TB pole, takže uvidím, co to udělá, až tam všechno nasypu. (pozor, v mém případě tam posílám kopie náhodně vygenerovaných dat, takže počítám s tím, že v té zfs mohu data ztratit).

Současně přitom testuji bonding na switchi zyxel gs1200-8. Momentálně to ladím, jedná se defakto o nejlevnější 8 portový switch, který umožňuje na 2 zařízení bonding na 2 portech. Zázrak to sice není, protože to neumí plnohodnotný LACP 802.3ad, ale říkám tomu socka varianta „na takové to domácí žvýkání“. Samozřejmě switch je v kovovém pouzdře, takže by dobře sloužil i v malé firemní síti. když se s tímto switchem dostanu na 2Gbps rychlosti mezi 2 zařízeními, tak budu nad míru spokojen. 😉

 

Zde už ukázka statusu, jak to vypadá, když to máte složené:

# df -Th && zfs get all|grep compressratio;
Filesystem Type Size Used Avail Use% Mounted on
udev devtmpfs 2.8G 0 2.8G 0% /dev
tmpfs tmpfs 570M 8.0M 562M 2% /run
/dev/sdd2 ext4 109G 1.4G 107G 2% /
tmpfs tmpfs 2.8G 0 2.8G 0% /dev/shm
tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs tmpfs 2.8G 0 2.8G 0% /sys/fs/cgroup
/dev/sdd1 ext4 922M 48M 850M 6% /boot
zfs zfs 7.2T 662G 6.6T 10% /zfs
tmpfs tmpfs 570M 0 570M 0% /run/user/0
//server/data cifs 7.3T 6.9T 373G 95% /mnt
tmpfs tmpfs 570M 0 570M 0% /run/user/1000
zfs compressratio 1.19x -
zfs refcompressratio 1.19x -

# zpool status
  pool: zfs
 state: ONLINE
  scan: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        zfs         ONLINE       0     0     0
          raidz2-0  ONLINE       0     0     0
            sda     ONLINE       0     0     0
            sdb     ONLINE       0     0     0
            sdc     ONLINE       0     0     0
            sde     ONLINE       0     0     0
            sdf     ONLINE       0     0     0
            sdg     ONLINE       0     0     0

errors: No known data errors

zpool list
NAME   SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP    HEALTH  ALTROOT
zfs   10.9T   782G  10.1T        -         -     1%     7%  1.28x    ONLINE  -

zdroj
zdroj2
další zdroj3

Avatar

By mirra

Hardwaru a počítačům se věnuji již od roku 2003. Za tu dobu jsem poskládal stovky počítačů, opravil tisíce počítačů a vyřešil nespočetně problémů, vad a chyb, se kterými se setkávali uživatelé. Od roku 2005 se zabývám servery, zejména těmi herními, v roce 2007 jsem se začal věnovat Valve Source SDK level designu, který šel od roku 2009 k ledu kvůli studiu Informatiky na univerzitě. Podílel jsem se chvíli i na provozu síťové laboratoře MENDELU, dnes spravuji cca 30 serverů/diskových polí na univerzitě, řeším IT v malých a středních firmách tak, aby firmy ušetřily nemalé částky při zlepšení kvality a soustředím se na snižování nákladů na IT od licencí až po hardware, software, provádím konsolidace a audity platnosti licencí, které firmám šetří rovněž nemalé peníze. Z velkých firem spravuji s dalšími kolegy 8000 serverů po celé Evropě a tato práce mě nesmírně baví, protože se vše musí automatizovat a nabízí mi to možnost trénovat další evropské jazyky od Angličtiny, přes Němčinu až po Italštinu.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

2 × one =