Ich erstelle gerade ein Backup eines Notebooks. Plan ist das dieses Backup auf eine USB Platte geht. Dateisystem ist dabei ZFS…
Ein Backup per zfs send und zfs recv ist kein weiteres Problem und sofort zu erledigen. Ein Detail gibt es aber noch, ich will alles verschlüsselt! Das Notebook selbst besitzt eine full disk encryption. Da Notebook, sowie Datensicherung am Ende an einem nicht 100%tig sicherem Ort liegen werden, muss die Datensicherung ebenfalls vollverschlüsselt sein. Da die freie Version von ZFS leider keine Verschlüsselung bietet, setzte ich hier ebenfalls auf eine geli full disk encryption. So muss ich nur den Schlüssel an einem sicheren Ort aufbewahren und darf das Kennwort nicht vergessen 😉 Beides ist machbar, so kann ich mein Backup also liegen lassen. Greift sich jemand die Platte, wird er die Daten kaum entschlüsseln können \o/
Ich habe folgendes gemacht…
dmesg verrät mir, dass die USB-Platte erkannt wurde:
ugen0.2: <Intenso> at usbus0 umass0: <Intenso External USB 3.0, class 0/0, rev 3.00/5.07, addr 2> on usbus0 umass0: SCSI over Bulk-Only; quirks = 0x0100 umass0:5:0:-1: Attached to scbus5 da0 at umass-sim0 bus 0 scbus5 target 0 lun 0 da0: <Intenso External USB 3.0 5438> Fixed Direct Access SCSI-6 device da0: Serial Number 20141231055346 da0: 400.000MB/s transfers da0: 953869MB (1953525164 512 byte sectors: 255H 63S/T 121601C) da0: quirks=0x2<NO_6_BYTE>
Als ersten Schritt entferne ich nun per gdisk die voreingerichtete Partitionierung der Platte und erstelle eine neue GPT Partitionstabelle inkl. einer neuen Partition.
geli benötigt einen Schlüssel und dieser besteht am besten aus Zufallsdaten, diese liefert mir /dev/random:
$ dd if=/dev/random of=./backup-key bs=256 count=1
Mit diesem Schlüssel kann ich nun die verschlüsselte geli Partition auf der USB Platte einrichten:
$ geli init -s 4096 -K ./backup-key -l 256 /dev/da0s1 Enter new passphrase: Reenter new passphrase: Metadata backup can be found in /var/backups/da0s1.eli and can be restored with the following command: # geli restore /var/backups/da0s1.eli /dev/da0s1
So, los geht es… Die neue verschlüsselte Partition kann eingehangen werden:
$ geli attach -k ./backup-key /dev/da0s1 Enter passphrase:
Fast geschafft, denn nun lässt sich bereits der ZFS-Pool anlegen:
$ zpool create usb-backup /dev/da0s1.eli
Tja, schon kann ich mit dem Pool arbeiten:
$ zpool list NAME SIZE ALLOC FREE FRAG EXPANDSZ CAP DEDUP HEALTH ALTROOT smeerbsd 460G 184G 276G 24% - 40% 1.00x ONLINE - usb-backup 928G 296K 928G 0% - 0% 1.00x ONLINE -
Ich starte also mal ein initiales Backup:
zfs send -R smeerbsd@auto-2015-05-23-21-00-00 | zfs recv -u usb-backup/notebook
Beim zfs send sorgt die Option -R dafür, dass alles rekursiv gesendet wird. Ich schiebe also mein komplettes Notebook auf den USB-Pool unter das neue Volume usb-backup/notebook. Beim zfs revc sorgt die Option -u dafür, dass die Laufwerke dort nicht gemountet werden. Dieses lässt sich optimieren. So kann man dafür sorgen, dass die Volumes auf der USB-Platte unmountbar sind. Dann hängt zfs diese bei einem neuen Import nicht ein, dieses ist aber eher ein neues Thema 😀
Bei weiteren Backups, muss dann natürlich nur noch die Differenz zwischen den Snapshots übertragen werden. Ebenfalls ein anderes Thema.
Beim Aushängen muss man nun natürlich ein paar Dinge beachten:
– sync erzwingen um alle Daten sicher geschrieben zu wissen.
– zpool exportieren
– geli Partition detachen
$ sync $ zpool export usb-backup $ geli detach /dev/da0s1
So, nun natürlich noch den Key an einen sicheren Ort legen. Es sollte ein dritter Ort sein, da er ja zur Entschlüsselung benötigt wird. Auf dem Notebook und auf der Sicherungsplatte liegt er also schlecht 😛
Bei Fragen, einfach melden 😀
Schreibe einen Kommentar