Linux/Saját linux live CD készítése/ZFS fájlrendszer

A ZFS egy fájlrendszer és logikai kötetkezelő, de tartalmaz szofver RAID-et is. Jó tulajdonságainak köszönhetően linuxon is egyre népszerűbb. Van viszont egy probléma vele: a licensze tiltja a bináris formában történő terjesztést, ennek következtében az install és live CD-k nem tartalmazzák. Ez olyankor okoz problémát, ha a telepítendő gép root fájlrendszerét is ZFS-ben szeretnénk létrehozni, aminek számos előnye van.

ZFS root fájlrendszerű gép telepítése

szerkesztés

ZFS root fájlrendszerű gépet úgy lehet telepíteni, hogy egy „gyári” live CD-t[1] bebootolunk, a memóriában előbb felinstalláljuk a ZFS-t, majd arról telepítjük a gépet. Ha rescue CD-re van szükség, ugyanezt meg kell ismételni, ami gond lehet, hiszen internet-hozzáférést feltételez, és időbe telik. Rescue CD katasztrófahelyzetben kell, amikor ez a két dolog nem feltétlenül van meg.

Az ubuntu install CD-je az egyetlen, ami (már a 16.04-es verzió óta) tartalmazza a ZFS kernel modulokat, viszont a fájlrendszer létrehozásához és kezeléséhez szükséges programokat nem. (Ebből következik, hogy az installáló menüből nem is választható ki ZFS sem a root, sem más fájlrendszer számára: az ubuntu is az itt leírt módot javasolja.[2]) A kernel-modulok megléte nagy segítség, hiszen a ZFS-installálás legnagyobb részét ez teszi ki, és ubuntu-ból más debian-alapú rendszert is fel lehet installálni, ez mégsem jó ötlet a disztribúciók között eltérő ZFS-verziók miatt.[3]

Marad a saját live CD.

Kiinduló állapot

szerkesztés

Telepítettünk egy minimális tartalmú debian live CD-t, esetleg ki is egészítettük más csomagokkal. Chroot-ban vagyunk. (Ha közben kiléptünk volna, lépjünk be újra.)

chroot-ban

szerkesztés

A bevezetőben említett licensz okok miatt a ZFS a debian repository-ban a contrib szekcióban van, amit tudatni kell az apt paranccsal. A /etc/apt/source.list-et kell kiegészíteni:

deb http://deb.debian.org/debian stretch main contrib
apt-get update              # a repository-k ujraolvasasa
ln -s /bin/rm /usr/bin/rm   # /usr/bin-ben keresi az rm parancsot. Rejtely, miert.
apt-get install spl-dkms    # a ZFS elso resze

Az spl-dkms installálása feltelepíti a linux kernel headerjeit és a kernelmodul-fordításhoz szükséges programokat, majd le is fordít két kernel modult. Ha ezt nem tesszük meg a fő ZFS-csomag előtt, akkor az 10 percen keresztül sleep 1-ekkel vár valamire, bár utána rendben lefordítja a kernel modulokat. Ezt a 10 percet kerülhetjük ki a két apt utasítással.

apt-get install zfsutils-linux
apt-get install debootstrap   # ZFS root filerendszeru gep telepitesehez

Az első sor után, a lsmod | grep zfs utasításra ezt kell látnunk:

zfs                  2707456  8
zunicode              331776  1 zfs
zavl                   16384  1 zfs
zcommon                53248  1 zfs
znvpair                90112  2 zcommon,zfs
spl                    98304  3 znvpair,zcommon,zfs

A debootstrap csomag új gép kézi installálásához kell.

Némi helyet (kb. 50M-et) visszanyerhetünk csomagtörléssel. E csomagok a ZFS kernel-modulok fordításához kellettek.

apt-get purge linux-headers-4.9.0-6-amd64 
apt-get autoremove

Az e fejezetben leírtakat megtehetjük másik gépen is, pl. a munkaállomásunkon, majd a lefordított kernel-modulok két debian csomagba tehetők. A ZFS-hez elég a két csomagot és a zfsutils-linux-ot telepíteni: ezzel megtakarítjuk a fordításhoz szükséges csomagok telepítését az éles rendszeren.

Kilépés chroot-ből

szerkesztés

A már ismert módon kilépünk chroot-ból az eredeti munkakönyvtárba. apt-get clean-t ne felejtsük el: 100M-nyi feleslegessé vált fájltól tudunk megszabadulni.

Tovább: ISO generálása.

  1. Pl. Grml (grml.org)
  2. Ubuntu 16.04 Root on ZFS
  3. E szócikk írásakor a 18.04-es ubuntu és a 9.4-es debian a stabil. Az előbbivel létrehozott poolt a debianbeli zfs csak olvasható módban tudja megnyitni – kivéve, ha előre tudjuk, hogy a létrehozáskor zpool-nak meg kell adni a -o feature@userobj_accounting=disabled kapcsolót, amit utólag már nem lehet. Ez a feature a debianban még nincs benne, az ubuntuban pedig nem működik a zpool -d kapcsolója, amivel az összes feature-t tiltani lehetne a hasonló problémák megelőzése érdekében.