Ich will Backup und ich will ZFS, da brauch ich glaube ich in beiden Fällen nicht drauf eingehen warum. Auf dem Server läuft ein Debian Wheezy (amd64) und mit Xen werden diverse virtuelle Maschinen ausgeführt. Für’s Backup sind vier Platten vorgesehen und da soll ZFS drauf und die Daten sollen verschlüsselt werden.
Wie ich jetzt darauf gekommen bin das ganze mit Debian GNU/kFreeBSD zu realisieren, sei mal nicht in Frage gestellt, ist jetzt so und es gibt eine VM, die mittels Hardware-Virtualisierung der CPU installiert wurde, hatte ich ja hier schon erwähnt wie. Probleme mit der I/O-Performance hab ich dank der passenden Mailingliste auch beheben können.
Bevor wir jetzt ZFS installieren, soll noch Crypto drunter. Das könnte man auch anders schichten, aber so rum scheint empfohlen zu sein. Ebenfalls empfohlen ist es Crypto nicht auf die nackte Platte zu tun (auch wenn das ginge) sondern die Platten noch zu partitionieren. Bei BSD scheint da mittlerweile GPT der Standard zu sein und das passende Tool bei FreeBSD wäre gpart
. Beim Debian GNU/kFreeBSD haben wir aber Debian Userland und da gibt’s dieses Tool nicht. Partitioniere ich also mit gdisk, dachte ich mir, aber das ist dann auch wieder nicht so einfach, weil gdisk sich beschwert, dass /dev/da0
ein character device sei. Ist es auch, scheint bei BSD so zu sein, bedeutet aber, dass ich die Platten nicht in der VM partitionieren kann, sondern das bereits im Wirt tun muss. Mit gdisk
war das kein Problem und als Partitionstyp hab ich mal FreeBSD ZFS benutzt aka 0xA504.
Nächster Schritt: Verschlüsselung. Da benutzt man bei FreeBSD das Tool geli
und das ist dann wieder Kernel Space genug, dass es auch verfügbar ist. Befehle hier:
% sudo geli init -s 4096 -l 256 /dev/da0p1 Enter new passphrase: Reenter new passphrase: Metadata backup can be found in /var/backups/da0p1.eli and can be restored with the following command: # geli restore /var/backups/da0p1.eli /dev/da0p1
Und dann:
% sudo geli attach /dev/da0p1 Enter passphrase:
Beim Initialisieren kann man auch noch Keydateien angeben und alle möglichen Optionen setzen. Details dazu hat das FreeBSD-Handbuch. Analog wird mit den anderen Platten verfahren und es stehen einem dann die aufgeschlossenen Devices zur Verfügung, für die erste verschlüsselte Partition der ersten Platte hier /dev/da0p1.eli
welches dann gleich einem zpool hinzugefügt wird.
Den zpool namens tank erzeugte ich dann so:
sudo zpool create tank raidz2 da0p1.eli da1p1.eli da2p1.eli da3p1.eli
Das entspricht de facto einem RAID-6 und ist auch bereits unter /storage
gemountet. Für den nächsten Systemstart fehlt also nur noch ein Skript, was mir die Crypto-Devices aufmacht. Bei Debian GNU/kFreeBSD kann man da mal in /etc/default/geom
schauen. Das darauf liegende ZFS wird dann automatisch gefunden und eingebunden.
Alles weitere ist dann Anwendung von ZFS, das wäre thematisch aber was für einen anderen Artikel. ;-)