Vágjunk kissé rendet a fájlrendszerek között:
[root@freebsd:~]$ zfs list | grep bpool bpool 1.09G 6.72G 18K /bpool bpool/tmp 369K 6.72G 347K /tmp bpool/tmp@install 22K - 23K - bpool/usr 1.01G 6.72G 221M /usr bpool/usr@install 198M - 214M - bpool/usr/local 260M 6.72G 228M /usr/local bpool/usr/local@install 31.2M - 90.8M - bpool/usr/obj 18K 6.72G 18K /usr/obj bpool/usr/ports 193M 6.72G 152M /usr/ports bpool/usr/ports@20080822 41.1M - 146M - bpool/usr/src 164M 6.72G 153M /usr/src bpool/usr/src@20080822 10.8M - 153M - bpool/var 76.2M 6.72G 75.7M /var bpool/var@install 190K - 244K - [root@freebsd:~]$ zfs rename bpool/usr/src@20080822 bpool/usr/src@install [root@freebsd:~]$ zfs snapshot bpool/usr@stable [root@freebsd:~]$ zfs snapshot bpool/usr/local@stable [root@freebsd:~]$ zfs snapshot bpool/var@stable [root@freebsd:~]$ zfs destroy bpool/tmp@install [root@freebsd:~]$ zfs destroy bpool/usr@install [root@freebsd:~]$ zfs destroy bpool/usr/local@install [root@freebsd:~]$ zfs destroy bpool/var@install [root@freebsd:~]$ zfs destroy bpool/usr/ports@20080822 [root@freebsd:~]$ zfs list | grep bpool bpool 845M 6.99G 18K /bpool bpool/tmp 347K 6.99G 347K /tmp bpool/usr 766M 6.99G 221M /usr bpool/usr@stable 33K - 221M - bpool/usr/local 229M 6.99G 228M /usr/local bpool/usr/local@stable 217K - 228M - bpool/usr/obj 18K 6.99G 18K /usr/obj bpool/usr/ports 152M 6.99G 152M /usr/ports bpool/usr/src 164M 6.99G 153M /usr/src bpool/usr/src@install 10.8M - 153M - bpool/var 76.1M 6.99G 75.7M /var bpool/var@stable 127K - 75.7M -
Azok a snapshot-ok, amelyeket a teleptésnél hoztunk létre – már nem kellenek, helyettük célszerű egy @stable létrehozása, amely a rendszerünk jelenlegi stabil állapotát jelenti. Egyedül a /usr/src fájlrendszeren célszerű meghagyni a snapshot-ot, de nevezzük át @install névre, hiszen ebből tudunk olyan kernelt és alaprendszert fordítani, amely megegyezik a rendszerünk jelenlegi állapotával – ugyanakkor lehetővé válik a források folyamatos frissítése is.
A ports fát érdemes naponta frissíteni, ezért erre állítsunk be egy megfelelő crontab bejegyzést, erről levelet fogunk kapni (a `cron` paraméter azt jelenti, hogy a portsnap program maximum egy órát vár véletlenszerűen választott ideig, mielőtt indulna, ezzel tehermentesíti a snap szervert, mivel szép egész órákra szoktak a rendszergazdák programokat időzíteni – ahogy mi is):
0 12 * * * /usr/sbin/portsnap cron
Az eredményt levélben kapjuk (valamikor dél és egy óra között):
Ezen túl az alaprendszer forrását hetente egyszer frissítsük, hátha olyan részt javítanak, amely fontos lehet:
0 12 * * 1 /usr/local/bin/cvsup -g /usr/local/etc/supfile.sources
Az eredmény itt is levélben jön:
Connected to cvsup.hu.FreeBSD.org Updating collection src-all/cvs Edit src/lib/libarchive/test/test_compat_tar_hardlink.c Edit src/lib/libarchive/test/test_pax_filename_encoding.c Edit src/lib/libarchive/test/test_tar_large.c Edit src/lib/libarchive/test/test_ustar_filenames.c Edit src/lib/libarchive/test/test_write_disk_hardlink.c Edit src/lib/libarchive/test/test_write_format_tar_ustar.c Edit src/share/colldef/Makefile Checkout src/share/colldef/no_NO.ISO8859-1.src Checkout src/share/colldef/no_NO.ISO8859-15.src Edit src/share/timedef/Makefile Checkout src/share/timedef/nb_NO.ISO8859-1.src Checkout src/share/timedef/nb_NO.UTF-8.src Delete src/share/timedef/no_NO.ISO8859-1.src Delete src/share/timedef/no_NO.UTF-8.src Edit src/sys/boot/sparc64/loader/main.c Edit src/sys/conf/options.sparc64 Edit src/sys/dev/pci/pci.c Edit src/sys/dev/pci/pci_pci.c Edit src/sys/dev/pci/pcivar.h Edit src/sys/dev/usb/hid.c Edit src/sys/dev/usb/ums.c Edit src/sys/kern/vfs_mount.c Edit src/sys/sparc64/include/asi.h Edit src/sys/sparc64/include/cache.h Edit src/sys/sparc64/include/cpufunc.h Edit src/sys/sparc64/include/pcpu.h Edit src/sys/sparc64/pci/ofw_pci.h Edit src/sys/sparc64/pci/ofw_pcibus.c Edit src/sys/sparc64/pci/psycho.c Edit src/sys/sparc64/sparc64/cheetah.c Edit src/sys/sparc64/sparc64/clock.c Edit src/sys/sparc64/sparc64/exception.S Edit src/sys/sparc64/sparc64/locore.S Edit src/sys/sparc64/sparc64/machdep.c Edit src/sys/sparc64/sparc64/mp_locore.S Edit src/sys/sparc64/sparc64/mp_machdep.c Edit src/sys/sparc64/sparc64/pmap.c Edit src/sys/sparc64/sparc64/prof_machdep.c Edit src/sys/sparc64/sparc64/spitfire.c Edit src/sys/sparc64/sparc64/support.S Edit src/sys/sparc64/sparc64/swtch.S Edit src/sys/sparc64/sparc64/tick.c Edit src/sys/sparc64/sparc64/tlb.c Edit src/sys/sparc64/sparc64/trap.c Edit src/usr.bin/tar/Makefile Edit src/usr.bin/tar/bsdtar.c Edit src/usr.bin/tar/matching.c Edit src/usr.bin/tar/test/Makefile Edit src/usr.bin/tar/test/test_copy.c Edit src/usr.bin/tar/test/test_option_T.c Checkout src/usr.bin/tar/test/test_option_q.c Edit src/usr.bin/tar/test/test_patterns.c Checkout src/usr.bin/tar/test/test_patterns.tgz.err.uu Checkout src/usr.bin/tar/test/test_patterns.tgz.out.uu Checkout src/usr.bin/tar/test/test_patterns.tgz.uu Finished successfully
Ami esetleg még fontos lehet, hogy a jail-ek ports fáját is frissítsük, ez némi ZFS karbantartást is igényel, ezért erre írjunk egy script-et (egyelőre belekódoljuk a jail-ek elérési útját, ezen majd változtatunk a későbbiekben):
#!/usr/local/bin/bash /usr/sbin/portsnap -p /jails/template/usr/ports cron /sbin/zfs destroy dpool/jails/ports/system/dns /sbin/zfs destroy dpool/jails/ports/system/ldap /sbin/zfs destroy dpool/jails/ports/system/logserver /sbin/zfs destroy dpool/jails/ports/system/mail /sbin/zfs destroy dpool/jails/ports/template@now /sbin/zfs snapshot dpool/jails/ports/template@now /sbin/zfs clone dpool/jails/ports/template@now dpool/jails/ports/system/dns /sbin/zfs clone dpool/jails/ports/template@now dpool/jails/ports/system/ldap /sbin/zfs clone dpool/jails/ports/template@now dpool/jails/ports/system/logserver /sbin/zfs clone dpool/jails/ports/template@now dpool/jails/ports/system/mail /sbin/zfs set readonly=on dpool/jails/ports/system/dns /sbin/zfs set readonly=on dpool/jails/ports/system/ldap /sbin/zfs set readonly=on dpool/jails/ports/system/logserver /sbin/zfs set readonly=on dpool/jails/ports/system/mail /sbin/zfs set mountpoint=/jails/system/dns/usr/ports dpool/jails/ports/system/dns /sbin/zfs set mountpoint=/jails/system/ldap/usr/ports dpool/jails/ports/system/ldap /sbin/zfs set mountpoint=/jails/system/logserver/usr/ports dpool/jails/ports/system/logserver /sbin/zfs set mountpoint=/jails/system/mail/usr/ports dpool/jails/ports/system/mail
Ezt is tegyük bele a crontab-ba:
0 13 * * * /root/bin/cron/jails/portsnap.sh