Premières manipulations sur ZFS depuis Linux Ubuntu =================================================== */ Documentation ---------------- - Bruno Levasseur https://blog.levassb.ovh/post/zfs/ https://blog.levassb.ovh/post/zfs-part2/ - Jérôme Colombet https://homepages.lcc-toulouse.fr/colombet/debian-nas-san-open-source-avec-support-zfs/ - GT ZFS de ResInfo https://resinfo.org/les-groupes-de-travail-11/groupe-de-travail-zfs/article/le-groupe-de-travail-zfs https://resinfo-gt.pages.in2p3.fr/zfs/doc/ - Calculateur https://wintelguy.com/zfs-calc.pl */ Exemples et conseils de mise en oeuvre ----------------------------------------- - laurent.spagnol@univ-reims.fr - 15/06/2021 << 2 MD1400 avec des disques de 16 To: 4 VDEVs ZFS de 6 disques en raidz2 (double parité), soit 16 x 4 x ( 6 - 2 ) = 256 To utiles >> 09/09/2021 << Toujours dans mon cas: les JBODs sont aggrégés en VDEVs de 6 disques / RAIDZ2. J'ai fais ce choix sur un compromis IOPs / durée de reconstruction / double parité pour la sécurité. Le réplication asynchrone (zfs send/receive) sur un site distant de plusieurs kilomètres permet d'avoir un PRA et de conserver la rétention de 6 mois. Donc double parité + réplication sur un autre site = ratio 1/3 (capacité utile / capacité brute). >> - remy.dernat@umontpellier.fr - 08/09/2021 << 1Po redondés sur 2 sites distincts par ZFS (avec znapzend). 2 baies MD1280 remplies de 84 disques attachées à des R730xd, également remplis >> - tru@pasteur.fr - 08/09/2021 << optimisé capacité/prix: 1 seul cpu (Intel(R) Xeon(R) Silver 4208 CPU @ 2.10GHz), 6x 8GO de RAM, un chassis Supermicro SSG-5049P-E1CTR36L (https://www.supermicro.com/en/products/system/4U/5049/SSG-5049P-E1CTR36L.cfm) 36x 12 TO SAS en 3.5", 2x 240G ssd en 2.5" pour l'OS, 2x 10Gb/s. ZFS en draid2 (openszfs 2.1.0) sous CentOS-7: 36 disques répartis en apps: mirror + 1 hot spare -> 3 disques pool: draid2 10d par vdev, 3 vdev, 3 hot spare -> 33 disques >> */ Conseils du GT ZFS de ResInfo -------------------------------- https://codimd.univ-rouen.fr/s/rv3DqPFSO# */ Mes essais ------------- - Installation apt install zfsutils-linux lsmod | grep zfs systemctl | grep zfs - Repérage des Disques lsscsi montre [2:0:0:0] disk HPE MB016000JWZHE HPD2 /dev/sdc [2:0:1:0] disk HPE MB016000JWZHE HPD2 /dev/sdd [2:0:2:0] disk HPE MB016000JWZHE HPD2 /dev/sde [2:0:3:0] disk HPE MB016000JWZHE HPD2 /dev/sdf [2:0:4:0] disk HPE MB016000JWZHE HPD2 /dev/sdg [2:0:5:0] disk HPE MB016000JWZHE HPD2 /dev/sdh [2:0:6:0] disk HPE MB016000JWZHE HPD2 /dev/sdi [2:0:7:0] disk HPE MB016000JWZHE HPD2 /dev/sdj [2:0:8:0] disk HPE MB016000JWZHE HPD2 /dev/sdk [2:0:9:0] disk HPE MB016000JWZHE HPD2 /dev/sdl [2:0:10:0] disk HPE MB016000JWZHE HPD2 /dev/sdm [2:0:11:0] disk HPE MB016000JWZHE HPD2 /dev/sdn [2:0:12:0] disk HPE MB016000JWZHE HPD2 /dev/sdo [2:0:13:0] disk HPE MB016000JWZHE HPD2 /dev/sdp [2:0:14:0] disk HPE MB016000JWZHE HPD2 /dev/sdq [2:0:15:0] disk HPE MB016000JWZHE HPD2 /dev/sdr [2:0:16:0] disk HPE MB016000JWZHE HPD2 /dev/sds [2:0:17:0] disk HPE MB016000JWZHE HPD2 /dev/sdt [2:0:18:0] disk HPE MB016000JWZHE HPD2 /dev/sdu [2:0:19:0] disk HPE MB016000JWZHE HPD2 /dev/sdv [2:0:20:0] disk HPE MB016000JWZHE HPD2 /dev/sdw [2:0:21:0] disk HPE MB016000JWZHE HPD2 /dev/sdx [2:0:22:0] disk HPE MB016000JWZHE HPD2 /dev/sdy [2:0:23:0] disk HPE MB016000JWZHE HPD2 /dev/sdz cd /dev/disk/by-path ; ls -l | grep sas montre lrwxrwxrwx 1 root root 9 mars 23 11:59 pci-0000:38:00.0-sas-0x5000c500da796fe5-lun-0 -> ../../sdu lrwxrwxrwx 1 root root 9 mars 23 11:59 pci-0000:38:00.0-sas-0x5000c500da7a1e11-lun-0 -> ../../sdx lrwxrwxrwx 1 root root 9 mars 23 11:59 pci-0000:38:00.0-sas-0x5000c500da7a21f5-lun-0 -> ../../sdq lrwxrwxrwx 1 root root 9 mars 23 11:59 pci-0000:38:00.0-sas-0x5000c500da7a22d1-lun-0 -> ../../sdd lrwxrwxrwx 1 root root 9 mars 23 11:59 pci-0000:38:00.0-sas-0x5000c500da7a27b9-lun-0 -> ../../sdr lrwxrwxrwx 1 root root 9 mars 23 11:59 pci-0000:38:00.0-sas-0x5000c500da7a2829-lun-0 -> ../../sdp lrwxrwxrwx 1 root root 9 mars 23 11:59 pci-0000:38:00.0-sas-0x5000c500da7a284d-lun-0 -> ../../sdl lrwxrwxrwx 1 root root 9 mars 23 11:59 pci-0000:38:00.0-sas-0x5000c500da7a2a59-lun-0 -> ../../sdc lrwxrwxrwx 1 root root 9 mars 23 11:59 pci-0000:38:00.0-sas-0x5000c500da7a2b7d-lun-0 -> ../../sdh lrwxrwxrwx 1 root root 9 mars 23 11:59 pci-0000:38:00.0-sas-0x5000c500da7a2b95-lun-0 -> ../../sdo lrwxrwxrwx 1 root root 9 mars 23 11:59 pci-0000:38:00.0-sas-0x5000c500da7a2c99-lun-0 -> ../../sdg lrwxrwxrwx 1 root root 9 mars 23 11:59 pci-0000:38:00.0-sas-0x5000c500da7a57bd-lun-0 -> ../../sds lrwxrwxrwx 1 root root 9 mars 23 11:59 pci-0000:38:00.0-sas-0x5000c500da7a5c81-lun-0 -> ../../sdn lrwxrwxrwx 1 root root 9 mars 23 11:59 pci-0000:38:00.0-sas-0x5000c500da7a5d09-lun-0 -> ../../sdv lrwxrwxrwx 1 root root 9 mars 23 11:59 pci-0000:38:00.0-sas-0x5000c500da7a5de5-lun-0 -> ../../sdw lrwxrwxrwx 1 root root 9 mars 23 11:59 pci-0000:38:00.0-sas-0x5000c500da7a5e1d-lun-0 -> ../../sdm lrwxrwxrwx 1 root root 9 mars 23 11:59 pci-0000:38:00.0-sas-0x5000c500da7a61fd-lun-0 -> ../../sdz lrwxrwxrwx 1 root root 9 mars 23 11:59 pci-0000:38:00.0-sas-0x5000c500da7a63d9-lun-0 -> ../../sdy lrwxrwxrwx 1 root root 9 mars 23 11:59 pci-0000:38:00.0-sas-0x5000c500da7a65ad-lun-0 -> ../../sdi lrwxrwxrwx 1 root root 9 mars 23 11:59 pci-0000:38:00.0-sas-0x5000c500da7a6915-lun-0 -> ../../sdt lrwxrwxrwx 1 root root 9 mars 23 11:59 pci-0000:38:00.0-sas-0x5000c500da7a6df5-lun-0 -> ../../sde lrwxrwxrwx 1 root root 9 mars 23 11:59 pci-0000:38:00.0-sas-0x5000c500da7a71e9-lun-0 -> ../../sdj lrwxrwxrwx 1 root root 9 mars 23 11:59 pci-0000:38:00.0-sas-0x5000c500da7a7af5-lun-0 -> ../../sdk lrwxrwxrwx 1 root root 9 mars 23 11:59 pci-0000:38:00.0-sas-0x5000c500da7a7f5d-lun-0 -> ../../sdf FIXME : - comment avoir la correspondance entre le numéro de disque vu du pictogramme sur la façade du serveur et le device Linux sous la forme pci-0000:38:00.0-sas-0x5000c500da7a7f5d-lun-0 ? - utiliser le mécanisme de /etc/zfs/vdev_id.conf pour les nommer hdd1 -> hdd24 - Création d'un zpool variante a/ 2 VDEV RAIDZ2 de 12 HDD zpool create -f -o ashift=12 -O xattr=sa -O atime=off -O com.sun:auto-snapshot=false -O compression=on -O mountpoint=none sata raidz2 sdc sdd sde sdf sdg sdh sdi sdj sdk sdl sdm sdn raidz2 sdo sdp sdq sdr sds sdt sdu sdv sdw sdx sdy sdz variante b/ 4 VDEV RAIDZ2 de 6 HDD zpool create -f -o ashift=12 -O xattr=sa -O atime=off -O com.sun:auto-snapshot=false -O compression=on -O mountpoint=none sata raidz2 sdc sdd sde sdf sdg sdh raidz2 sdi sdj sdk sdl sdm sdn raidz2 sdo sdp sdq sdr sds sdt raidz2 sdu sdv sdw sdx sdy sdz variante c/ 1 VDEV RAIDZ3 de 24 HDD zpool create -f -o ashift=12 -O xattr=sa -O atime=off -O com.sun:auto-snapshot=false -O compression=on -O mountpoint=none sata raidz3 sdc sdd sde sdf sdg sdh sdi sdj sdk sdl sdm sdn sdo sdp sdq sdr sds sdt sdu sdv sdw sdx sdy sdz - Voir un zpool zpool status - Vérifications compression zfs get compression sata zpool get feature@lz4_compress sata taille des blocs sfdisk -l /dev/sdc -> on voit que la taille de bloc optimal est bien 4096 ce qui correspond à ashift=12 - Création d'un dataset zfs create sata/smb zfs set recordsize=1M sata/smb # zfs set quota=300T sata/smb zfs list zfs set mountpoint=/sata/smb sata/smb df -h - volume physique occupé : zfs list - volume logique occupé : zfs list -o logicalused - taux de compression obtenu : zfs list -o compressratio - liste et place occupée par les snapshots : zfs list -t snapshot zfs set com.sun:auto-snapshot=true sata/smb place physique nette disponible avec zpool en variante a/ : 266 To avec zpool en variante b/ : 233 To avec zpool en variante c/ : 279 To - Gestion des snapshots mise en place d'une politique (à adapter si besoin) cd /root wget https://github.com/zfsonlinux/zfs-auto-snapshot/archive/master.zip unzip master.zip cd zfs-auto-snapshot-master make install FIXME : regarder aussi https://gitlab.in2p3.fr/herve.suaudeau/daily_history_btrfs regarder znapzend