Fórumok
Van egy Debian 10-em, zfs-dkms 0.7.12 csomaggal. Van benne egy SSD és 4 HDD. A tank nevű pool a 4 HDD-n terül el raidz2-vel, és lognak használ egy partíciót az SSD-n. Az SSD-n egy másik partíción van az rpool pool, ezen van a rendszer, redundancia itt nincs. Fent van a zfs-auto-snapshot csomag is, tehát van végtelen mennyiségű snapshotom. Az rpool így néz ki:
root@hp:~# zfs list
NAME USED AVAIL REFER MOUNTPOINT
rpool 11.1G 50.2G 96K /
rpool/ROOT 10.7G 50.2G 4.50G /
rpool/var 280M 50.2G 96K /var
rpool/var/log 280M 50.2G 33.8M /var/log
Szeretnék Debiant frissíteni, és ebből továbbgondolva két teljesen kezdő kérdés merült fel bennem:
- Ha elkefélem a frissítést (mert pl. nem fordul bele a DKMS csomag az új kernelbe, láttam már ilyet), hogyan tudok visszaállni működő snapshotra? Ha a grub-ig eljutok, ott még talán be tudok bootolni egy readonly snapshotról, de hogyan tovább?
- Mi van, ha bukom az egész SSD-t (véletlen gyalu, vagy akár későbbi hardver hiba miatt)? Mit fog szólni a tank, ha elszáll a logja? Hogyan érdemes olyan backupot csinálni az rpool-ról, amit simán vissza tudok rakni egy új SSD-re?
Amúgy készenlétben tartok egy pendrive-ot, amin van fent kb. ugyanilyen verziójú Debian, be van lőve, hogy tudjon VirtualBoxon és a szerveren is bootolni (UEFI miatt nem volt triviális összerakni), tehát parancssort mindenképpen tudok magamnak varázsolni.
Hozzászólások
visszaálláshoz egy kernel + initramfs páros kell, ahol megy a zfs. root mount előtt meg kell állni és rollbackelni a snapshotokat.
És hogy állítod meg a root mount előtt, hogy ezt meg tudd tenni?
rd.break=pre-mount
vagy ilyesmi, fejbol irtam.
Nekem sincs sok tapasztalatom, de olyat olvastam, hogy elszállás esetén az új háttértárat particionálod, létrehozol új dataseteket, majd a backup pool-ból ZFS send-del átküldöd a snapshotokat az új helyre, ott pedig rollback. Ami bonyolultabbá teheti a dolgot, hogy ezt minden egyes datasetre külön meg kell csinálni, hogy visszakaphasd a rendszer eredeti állapotát (nincs olyan "globális" objektum amivel az egészet egy lépésben tudod visszaállítani)
A régi kerneled, initrd-d és a /lim/modules nem fog törlődni, ha jól sejtem, szóval legrosszabb esetben csak az előző működő kernelt kell választanod a Grub menüjében.
Amúgy érdemes lenne egy clone-t létrehozni (zfs snapshot, zfs clone), és "felbootolni abba". Ha az update elront valamit, max. destroy :-) A Grubban meg lehet adni, mi legyen a root FS, esetünkben a clone lesz. És ha véletlenül minden jó lesz, megtartjuk a clone-t.
Ez a jó a ZFS-ben, hogy nem kell feltétlenül elrontani a jót :-)