Wie funktioniert FileVault

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.

tags: Mac OS X, Texte

bwolf June 4, 2005, 6:38 p.m.

Was passiert denn, wenn der rechner abkackt, während das ff-image eines user nach der oben beschriebenen Vorgehensweise gemounted ist? Beim nächsten login wird das doch wahrscheinlich erkannt oder?

hugo June 4, 2005, 8:03 p.m.

Ich habs noch nicht ausprobiert - aber da OS X Probleme beim Boot von einem Backup hat und das Backup ja genau wie ein "gecrashtes" OS X aussieht, vermute ich mal das OS X da die gleichen Probleme hat wie beim Boot vom Backup.

sfrede Aug. 2, 2005, 11:53 a.m.

Sers! Du hast geschrieben das es nicht viel Platz belegt, d.h. wenn ich regelmässig meinen Plattenplatz wieder freigeben lasse macht es keinen signifikanten Unterschied (vom Platzverbrauch her) ob ich die Verschlüsselung an habe oder nicht. Sehe ich das richtig? Ich habe einige Artikel im Netz gefunden, die sagen das es da einige Probleme gibt.

hugo Aug. 2, 2005, 5:56 p.m.

Nunja, es ist halt ein File. Wenn man nicht zu viel Leerbereiche hat bzw. wenn man regelmäßig auslogged und dann die Leerbereiche bereinigen lässt, belegt es nicht viel mehr Platz als wenn die Verschlüsselung aus wäre. Macht man natürlich die Aufräumarbeiten nicht, kann es auf Dauer etwas grösser werden - sobald es komprimiert wird, ist der Leerbereich dann aber wieder freigegeben.

buç Feb. 8, 2006, 8:27 p.m.

Mir ist grad der Aufräumprozess hängen geblieben, ich bin durch Google hierher gekommen. Die Statusanimation ist stehengeblieben, det Bällsche dreht sich. Seit, ähm, längerer Zeit. Ich frag' mich nun, ob ich mal den bösen Knopf drücke.

Ich werd' mal weitersuchen.

Andy Jan. 5, 2007, 3:14 p.m.

Hi, ich versuche, ein ff-sparseimige von einem anderen Rechner im Homeverzichnis zu "installieren". Hintergrund: zu Sicherungszwecken will ich einfach das ff-image auf einen Server legen. Wenn jetzt der ganze Rechner stirbt und ich ihn neu aufsetzen muss, wie komme ich an meine Benutzerdaten? Ich kann zwar einen neuen Account anlegen und dort mit doppelklick und Passworteingabe das Image mounten, muss dann aber die Files per Drag & Drop kopieren. Schöner wäre es, ich könnte einfach das andy.sparseimage vom Server ins /Users/andy/ kopieren und mich anmelden. Bei identischem Passwort hätte ich erwartet, dass es geht... tut es aber bei mir nicht. Mac OS sagt mir, er könne den Ordner Privat nicht finden...

Hast DU eine Lösung oder stell ich mich einfach nur an?

hugo Jan. 8, 2007, 4:45 p.m.

Nö, keine Idee. Ich sichere halt meine ganze Kiste auf eine eigene externe Platte - und die Sparseimages eben halt als Dateien mit. Klappt ganz gut, kann auch problemlos dann wieder zurückgesichert werden. Aber das ist eben eine zweite lokale Platte, nicht ein Server.