Openzfs a Mindennapokban

Openzfs a Mindennapokban

OpenZFS a mindennapokban Az adattárolás elsődleges irányelve: Ne adjon vissza hibás adatot a háttértár Gajdos Tamás SZTE Optika és Kvantumelektronika Tanszék whoami: ● 2004: Uhu Linux 1.1 [Mortál Szombat, másodlagos OS] ● 2007: Ubuntu 7.10 [napi használatra, elsődleges OS] ● 2014: SFD Szeged: SaltStack előadás Mikroszkópos adattárolási problémák ● dSTORM lokalizációs mikroszkópia ● ~60 GB/nap: mérési adat + feldolgozott eredmény [*.tiff, *.csv, *.png] ● Felhasználók „home” könyvtárai ● Belső hálózaton elérhető (smb) ● Biztonsági mentések és visszaállítási pontok ● Kéziratokhoz mérési adatok archívuma (~5-10 év) ● Nem lehet leállás 2 “Z file system” történelem ● 2001: Sun – OpenSolaris: Matthew Ahrens & Jeff Bonwick → CDDL license (Simon Phillips) ● 2008: FreeBSD port ● 2008: ZFS on Linux ● 2009: az Oracle felvásárolja a Sun-t ● 2010.08: belső e-mail az OpenSolaris zárt forrásúvá tételéről → Illumos fork, utolsó közös pont az OracleZFS és az OpenZFS között (v28) ● 2013: OpenZFS projekt → cél minden OS-re ● 2017.09. az Oracle elengedi a Solaris fejlesztését 3 https://itsfoss.com/what-is-zfs/ OpenZFS rétegek <> *nix zpool ↔ dm, lvm2, hwraid, ... zfs ↔ ext[2,3,4], xfs, jfs, reiserfs, f2fs, ... Ortodox unix 4 https://itsfoss.com/what-is-zfs/ filozófia? OpenZFS alapok: “Copy-On-Write” ● A módosítások egy új blokkra kerülnek, és az írás után a mutatók és a metadata frissül. ● Nincs fsck ← mindig rendelkezésre áll az adat. root meta B1 B2 B3 root meta B1 B2 B3 meta* B2* 5 https://pthree.org/2012/12/14/zfs-administration-part-ix-copy-on-write/ OpenZFS alapok: “Copy-On-Write” ● A módosítások egy új blokkra kerülnek, és az írás után a mutatók és a metadata frissül. ● Nincs fsck ← mindig rendelkezésre áll az adat. ● Pillanatkép (snapshot) root meta B1 B2 B3 Merkle-tree root meta B1 B2 B3 meta* B2* 6 https://pthree.org/2012/12/14/zfs-administration-part-ix-copy-on-write/ OpenZFS alapok: checksumming, recordsize ● Minden olvasás során adat-sérülés ellenőrzés ● Hibás blokkok javítása (raid, extra másolatok) & Bit rot ● Minden íráskor frissül root meta B1 B2 B3 fletcher4, sha256, c c c c 128K 128K 128K sha512, skein, edonr zfs set checksum=skein pool_name/dataset_name 7 https://blog.programster.org/zfs-record-size Ne kapcsoljuk ki! https://github.com/zfsonlinux/zfs/wiki/Checksums OpenZFS alapok: checksumming, recordsize ● Minden olvasás során adat-sérülés ellenőrzés ● Hibás blokkok javítása (raid, extra másolatok) & Bit rot ● Minden íráskor frissül ● Recordsize: blokk méret <= record size ● [4K, 8K, 16K, …, 128K, …, 1M] root meta B[123] fletcher4, sha256, c c 640K sha512, skein, edonr zfs set checksum=skein pool_name/dataset_name zfs set recordsize=1M pool_name/dataset_name 8 https://blog.programster.org/zfs-record-size Ne kapcsoljuk ki! https://github.com/zfsonlinux/zfs/wiki/Checksums OpenZFS alapok: compression & dedup ● Tömörített blokkok: lz4, gzip1-9, lzof, zle, lzjb ● Minimális cpu használat (lz4), viszont gyorsabb írás és olvasás a lemezekről. ● Deduplikálás: blokk, fájl, byte ← Sha256 ● A nagy memória igény miatt nem javasolt c c c c root cB2 cB3 root meta B1 meta B[123] c c c c c c c c zfs set compression=lz4 tank/log https://pthree.org/2012/12/18/zfs-administration-part-xi-compression-and-deduplication/ 9 OpenZFS alapok: ARC, L2ARC, ZIL LRU MFU ● Adaptive Replacement Cache ● read cache root meta cB1 cB2 cB3 c c c c MRU LFU 10 https://www.youtube.com/watch?v=F8sZRBdmqc0 https://www.sparkmycloud.com/blog/zfs/ OpenZFS alapok: ARC, L2ARC, ZIL LRU MFU ● Adaptive Replacement cmt Cache ● read cache ● tömörített root meta cB1 cB2 cB3 c c c c cB3 cB1 MRU LFU 11 https://www.youtube.com/watch?v=F8sZRBdmqc0 https://www.sparkmycloud.com/blog/zfs/ OpenZFS alapok: ARC, L2ARC, ZIL LRU MRU MFU LFU 12 https://www.youtube.com/watch?v=F8sZRBdmqc0 https://www.sparkmycloud.com/blog/zfs/ OpenZFS elérhetősége ● FreeBSD/FreeNAS: Része a base csomagoknak, és fő fájlrendszer ● Linux (2.6.32 – 5.3): GPL <> CDDL miatt csak kernel modul (64bit) ● Ubuntu 16.04+: $ sudo apt install zfsutils-linux zfs-initramfs ● CentOS6: # yum install http://download.zfsonlinux.org/epel/zfs-release.el6.noarch.rpm -y # nano /etc/yum.repos.d/zfs.repo #← engedélyezni a [zfs-kmod] tárolót # yum install zfs -y ● CentOS7: # yum install http://download.zfsonlinux.org/epel/zfs-release.el7_7.noarch.rpm -y # nano /etc/yum.repos.d/zfs.repo #← engedélyezni a [zfs-kmod] tárolót # yum install zfs -y ● … vagy forrásból telepíthető https://tutorials.ubuntu.com/tutorial/setup-zfs-storage-pool 13 https://www.symmcom.com/docs/how-tos/storages/how-to-install-zfs-on-centos-7 https://github.com/zfsonlinux/zfs/wiki/RHEL-and-CentOS ZPOOL létrehozása (Ubuntu 18.04.3) $ ls /dev/disk/by-id/ ● 5*750 GB HDD ata-HGST_HTS541075A9E680_JA13021H0J6BRK ata-SAMSUNG_HN-M750MBB_S2R9J9DBA00197 ● 1* 4 GB HDD ata-ST34311A_5BF1Y1ZK ata-ST34311A_5BF1Y1ZK-part1 ● zfs: mirror, stripe, raidz[1-3] ata-WDC_WD7502ABYS-18A6B0_WD-WMAU00120759 ata-WDC_WD7502ABYS-18A6B0_WD-WMAU00124488 ● unix: raid1, raid0, raid[5-7?] ata-WDC_WD7502ABYS-18A6B0_WD-WMAU00124851 wwn-0x5000cca764c75de1 wwn-0x50014ee0569e89cc wwn-0x50014ee0569e9763 wwn-0x50014ee0abf466d9 wwn-0x50024e92064919a6 $ sudo zpool create -o ashift=12 vd-Rocinante raidz1 \ /dev/disk/by-id/ata-SAMSUNG_HN-M750MBB_S2R9J9DBA00197 \ /dev/disk/by-id/ata-HGST_HTS541075A9E680_JA13021H0J6BRK \ /dev/disk/by-id/ata-WDC_WD7502ABYS-18A6B0_WD-WMAU00120759 \ /dev/disk/by-id/ata-WDC_WD7502ABYS-18A6B0_WD-WMAU00124488 \ /dev/disk/by-id/ata-WDC_WD7502ABYS-18A6B0_WD-WMAU00124851 14 https://docs.oracle.com/cd/E19253-01/819-5461/gaynr/index.html ZPOOL létrehozása (Ubuntu 18.04.3) $ zpool status pool: vd-Rocinante state: ONLINE scan: scrub repaired 0B in 1h21m with 0 errors on Sat Oct 11 14:13:05 2019 config: NAME STATE READ WRITE CKSUM vd-Rocinante ONLINE 0 0 0 raidz1-0 ONLINE 0 0 0 ata-SAMSUNG_HN-M750MBB_S2R9J9DBA00197 ONLINE 0 0 0 ata-WDC_WD7502ABYS-18A6B0_WD-WMAU00124851 ONLINE 0 0 0 ata-HGST_HTS541075A9E680_JA13021H0J6BRK ONLINE 0 0 0 ata-WDC_WD7502ABYS-18A6B0_WD-WMAU00120759 ONLINE 0 0 0 ata-WDC_WD7502ABYS-18A6B0_WD-WMAU00124488 ONLINE 0 0 0 errors: No known data errors $ zpool list NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT vd-Rocinante 3,41T 3,12T 298G - 41% 91% 1.00x ONLINE - 15 https://docs.oracle.com/cd/E19253-01/819-5461/gaynr/index.html ZFS hangolás saját használatra $ sudo zfs set compression=lz4 vd-Rocinante $ sudo zfs set checksum=skein vd-Rocinante $ zfs list NAME USED AVAIL REFER MOUNTPOINT vd-Rocinante 2,49T 151G 28,8K /vd-Rocinante $ sudo zfs create create -o mountpoint=/var/lib/lxc vd-Rocinante/lxc $ sudo zfs create create -o mountpoint=/srv/backup vd-Rocinante/backup $ sudo zfs create create -o mountpoint=/srv/backup/deep vd-Rocinante/backup/deep $ sudo zfs create create vd-Rocinante/test $ sudo zfs set recordsize=16K vd-Rocinante/lxc $ sudo zfs set recordsize=1M vd-Rocinante/backup $ sudo zfs set compression=gzip9 vd-Rocinante/backup/deep 16 ZFS hangolás saját használatra $ zfs list NAME USED AVAIL REFER MOUNTPOINT vd-Rocinante 2,49T 151G 28,8K /vd-Rocinante vd-Rocinante/lxc 2,05G 151G 1,45G /var/lib/lxc vd-Rocinante/backup 2,49T 151G 1,24T /srv/backup vd-Rocinante/backup/deep 1,27T 151G 1,27T /srv/backup/deep vd-Rocinante/test 280M 151G 280M /srv/test $ zfs get compression,compressratio vd-Rocinante NAME PROPERTY VALUE SOURCE vd-Rocinante compression lz4 local vd-Rocinante compressratio 2.11x - $ zfs get all NAME PROPERTY VALUE SOURCE vd-Rocinante/test type filesystem - vd-Rocinante/test creation h okt 11 14:21 2019 - vd-Rocinante/test used 280M - vd-Rocinante/test available 151G - vd-Rocinante/test referenced 280M - vd-Rocinante/test compressratio 6.52x - vd-Rocinante/test mounted yes - vd-Rocinante/test quota none default 17 Snapshot & Remote backup $ sudo zfs snapshot vd-Rocinante/test@manual_20190911 $ sudo zfs snapshot vd-Rocinante/test@manual_now $ sudo zfs destroy vd-Rocinante/test@manual_20190911 $ sudo zfs rollback vd-Rocinante/test@manual_now # zfs send vd-Rocinante/test@manual_now | zfs receive vd-Guanshiyin # zfs send -Rv vd-Rocinante/test@manual_now | zfs receive -F vd-Guanshiyin -R → replication stream package (létrehoz mindent) -F → ha a fogadó fél előrébb lenne, akkor azt visszaállítja $ sudo zfs send -v -I vd-Rocinante/[email protected] \ vd-Rocinante/[email protected] | ssh [email protected] zfs recv -F \ vd-GuyMolinari/replications/test -I → incremental (két snapshot között) https://www.freebsd.org/cgi/man.cgi?zfs(8) 18 RTFM! Probléma #1: Nem olyan gyors, mint lehetne ● ZFS a Solaris operációs rendszerhez lett tervezve (Oracle Solaris, Illumos). ● Nincs minden Solaris syscall Linuxra lefordítva. ● SPL kernel modul: Solaris Portability Layer 19 https://www.youtube.com/watch?v=2jo0E1CJS2k Probléma#2: Memory fragmentáció, TLB ● kmalloc() ● vmalloc() ● DMA 1 1 1 1 2 2 2 3 3 3 4 4 4 4 3 2 phys virt phys virt 20 https://www.youtube.com/watch?v=2jo0E1CJS2k OpenZFS jövője ● Root on ZFS (Linux) ● Linuxon az SPL elhagyása (v0.8.0) ● Ubuntu 19.10 telepítője már tartalmazza ● FreeBSD is a ZFS on Linux moduljára áttér ● RaidZ kiterjesztés (6 HDD → 7 HDD → 8 HDD) ● ZSTD tömörítés (adaptív, több szint) ● Kmalloc() linuxon is (~v1.0.0) ● Minden fő operációs rendszeren elérhető legyen a közös verzió (Windows-ra is van port!) https://docs.google.com/spreadsheets/d/1CFapSYxA5QRFYy5k6ge3FutU7zbAWbaeGN2nKVXgxCI 21 https://github.com/zfsonlinux/zfs/pull/9024 https://github.com/zfsonlinux/zfs/wiki/Ubuntu-18.04-Root-on-ZFS Köszönöm a figyelmet! Q&A Demó (ha még lesz rá idő)… [UHU Linux 2.2 (Nerd) + OpenZFS v0.6.5.11] 22 .

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    23 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us