Als Nachtrag zum vorigen Eintrag über die Probleme mit dem Backup von FileVaults aus einem aktiven FileVault-Account heraus hab ich mir mal genauer angeguckt was Apple da eigentlich für FileVault treibt. So richtig Begeisterung kommt bei mir ob der Vorgehensweise nicht auf.

Zu allererst mal ist ein FileVault nichts weiter als ein sogenanntes Sparse Image - ein Plattenimage bei dem nur die tatsächlich belegten Blöcke gespeichert werden. Wenn es also leer ist ist es wurscht wie gross es dimensioniert war - es belegt nur wenig Plattenplatz. Mit den gespeicherten Daten wächst dieses Image und man kann es aufräumen lassen - dabei werden die Datenblöcke die freigeworden sind (z.B. durch Löschungen) wieder auch im Sparse Image freigegeben, das Image schrumpft dann also. Zusätzlich ist für die FileVault-Images die Verschlüsselung aktiviert. Das Schrumpfen passiert halbautomatisch beim Logout: das System fragt den Benutzer ob es darf. Wenn er zustimmt, wird bereinigt. Das ist aber nur der Mechanismus wie die Files gespeichert werden - eben als HFS+ Volume in einem speziellen File. Wie aber wird es beim Login automatisch geöffnet und wie wird sichergestellt, das Programme die Daten an den richtigen Stellen finden wo sie sie suchen? Dazu muss das FileVault-Image ja gemounted werden. Im Prinzip ist der Vorgang der gleiche wie beim Doppelklick auf ein Image-File - das File wird als Laufwerk gemounted und steht in der Liste der Laufwerke im Finder und auf dem Desktop zur Verfügung. Bei FileVault-Images wird allerdings das Desktop-Icon unterdrückt. Statt des Desktop-Icons und dem Mounten nach /Volumens/ wie es normalerweise der Fall ist, ist das Mounten eines FileVault-Images allerdings etwas modifziert. Und zwar liegt ein FileVault-Image normalerweise im User-Verzeichnis eines Benutzers als einzige Datei. Also bei abgemeldetem Benutzer hugo liegt in /Users/hugo/ ein hugo.sparseimage. Sobald sich der Benutzer hugo anmeldet, geschehen eine ganze Reihe von Dingen. Zuerst mal wird das Sparse-Image von /Users/hugo/ nach /Users/.hugo/ verschoben. Und heisst dort nicht mehr hugo.sparseimage sondern .hugo.sparseimage. Dann wird es direkt nach /Users/hugo/ (das ja jetzt leer ist) gemounted (deshalb muss es auch aus dem Benutzer-Verzeichnis rausgeschoben werden, da es ja sonst nicht erreichbar wäre, wenn ein anderes Filesystem drübergemounted würde).

Jetzt ist also das Volume erreichbar als Homeverzeichnis des Benutzers. Zusätzlich sehen alle Programme die Daten ganz am gewohnten Ort, da es ja direkt nach /Users/hugo gemounted wurde und damit z.B. /Users/hugo/Preferences/ ein gültiges Verzeichnis im Image ist. Beim Logout geht das ganze umgekehrt: unmounten des Images und dann rückverschieben und Entfernen des /Users/.hugo/ Verzeichnisses. Zusätzlich - optional - das komprimieren des Images.

Jetzt wird auch klar welches Problem Backup-Programme haben: wenn der Backup läuft, ist das Homeverzeichnis leer und das Image in das Punktverzeichnis verschoben. Ein Boot in das so erstellte Backup würde das Homeverzeichnis des Benutzers nicht finden und dem Benutzer ein leeres Home präsentieren - es erscheint als hätte er alle Files verloren. Das ist auch eines der grossen Probleme von FileVault: wenn der Rechner crashed wärend man angemeldet ist, sind die Verzeichnisse und Dateien verschoben und umbenannt. Wer also FileVault benutzt und nach einem Crash nicht an seine Files kommt: eventuell hilft es sich mit einem anderen FileVault-freien Benutzer (den man zwecks Backups auch haben sollten!) anzumelden und das Homeverzeichnis zu reparieren . Keine Ahnung ob das Plattenreparaturprogramm von Apple das auch machen würde - bisher ist noch keine meiner FileVault-Installationen gecrashed. Für den Notfall sollte man sich aber das hier vielleicht merken. Insgesamt macht das ganze einen recht gehackten Eindruck auf mich - Lieber wäre es mir wenn das ganze System ohne Umbenennungen und Verschiebereien auskäme. Zum Beispiel könnte das FileVault einfach als /Users/.hugo.sparseimage friedlich neben /Users/hugo liegen und nur gemounted werden - dann hätten Backups keine Probleme, da die Struktur zwischen angemeldet und abgemeldet identisch wäre. Keine Ahnung warum Apple diese eher komplizierte Form genommen hat, warscheinlich wegen der Rechte an dem Sparse-Image und dem daraus folgenden Ablageort im Homeverzeichnis des Benutzers.