Extrem langsame Schreibgeschwindigkeit auf das verschlüsselte externe Laufwerk von Mavericks

10

Das Schreiben auf ein vollständig verschlüsseltes USB-Flash-Laufwerk auf Mavericks ist extrem langsam.

Das Laufwerksmodell, das ich zum Testen verwendet habe, war ein Kingston DataTraveler Ultimate 3.0 G3 (64 GB). Ich habe die Übertragungsgeschwindigkeit getestet, indem ich eine große Datei von / auf ein verschlüsseltes und ein unverschlüsseltes Laufwerk gelesen / geschrieben habe. Ich habe auf einem aktuellen Macbook mit Mavericks und auf einem älteren Computer mit Mountain Lion getestet. Ich habe das Festplatten-Dienstprogramm verwendet, um das Laufwerk als Mac OS Extended (Journaled) und Mac OS Extended (Journaled, Encrypted) zu formatieren.

MacBook Pro (2013) mit USB 3.0 unter OS X 10.9.2 (13C64)

Schreiben: 86,16 MB / s (verschlüsselt: 0,62 MB / s)
Lesen: 181,66 MB / s (verschlüsselt: 151,15 MB / s)

MacBook Pro (2007) mit USB 2.0 unter OS X 10.8.5 (12F45)

Schreiben: 23,57 MB / s (verschlüsselt: 5,04 MB / s)
Lesen: 36,23 MB / s (verschlüsselt: 37,87 MB / s)

Wie Sie auf dem älteren Computer sehen können, nimmt die Schreibgeschwindigkeit beim Schreiben auf das verschlüsselte Volume deutlich ab, ist jedoch im Vergleich zum neueren Computer mit Mavericks immer noch etwa zehnmal schneller. Könnte dies ein kürzlich eingeführtes Problem in FileVault oder CoreStorage sein?

Update (28.06.2014)

Das USB-Laufwerk scheint von Anfang an einen Hardwarefehler gehabt zu haben. Ich habe ein Ersatzlaufwerk (dasselbe Modell) erhalten, das immer noch nicht die erwarteten Ergebnisse liefert, aber zumindest die verschlüsselte Schreibgeschwindigkeit des 2013 MBP ist jetzt auf dem Niveau des 2007 MBP.

MacBook Pro (2013) mit USB 3.0 unter OS X 10.9.3 (13D65)

Schreiben: 135,41 MB / s (verschlüsselt: 9,29 MB / s)
Lesen: 196,22 MB / s (verschlüsselt: 187,04 MB / s)

MacBook Pro (2007) mit USB 2.0 unter OS X 10.8.5 (12F45)

Schreiben: - MB / s (verschlüsselt: 9,39 MB / s)
Lesen: - MB / s (verschlüsselt: 37,79 MB / s)

Dies lässt jedoch die Frage offen, warum die verschlüsselte Schreibgeschwindigkeit auf das USB-Laufwerk des 2013 MBP weniger als zehn Prozent der regulären Schreibgeschwindigkeit beträgt. Ich habe auch die Lese- / Schreibgeschwindigkeiten vor und nach der Aktivierung von FileVault auf der internen SSD des 2013 MBP verglichen und konnte dort überhaupt keine Verlangsamung feststellen.

Stefan Schmidt
quelle
1
Wow - die normalen Lese- / Schreib- und verschlüsselten Schreibvorgänge sehen gut aus. Aber dieses verschlüsselte Schreiben ist schmerzlich langsam. Welches Tool misst die MB / s? Können Sie diese Ergebnisse mit Blackmagic (kostenlos auf MAS)
reproduzieren
Ich habe einen einfachen Bash-Einzeiler verwendet time, ddund awk. Blackmagic gibt mir die gleichen Ergebnisse: goo.gl/bn32fC (unverschlüsselt) vs. goo.gl/yghyqA (verschlüsselt).
Stefan Schmidt
Ich vermute, dass die Lesegeschwindigkeit für das verschlüsselte Volume fehlt, da die Lesedauer kürzer ist als das Durchsatz-Abtastintervall von Blackmagic
Stefan Schmidt,

Antworten:

2

Ich habe das gleiche Problem, von dem ich mir ziemlich sicher bin, dass es auf eine Kombination aus der Funktionsweise von Schreibvorgängen im Flash-Speicher und der Funktionsweise der Kernspeicherverschlüsselung (oder einer Verschlüsselung für das gesamte Volume) zurückzuführen ist.

Erstens: Schreibverhalten: Im Gegensatz zu flüchtigem Speicher (dem im Speicher Ihres Computers verwendeten Material) oder Festplatten, bei denen jedes Bit jederzeit auf 0 oder 1 geschrieben werden kann, hat der Flash-Speicher zwei Hauptzustände: geschrieben und gelöscht. Innerhalb von "geschrieben" sind 0 und 1. Wenn Sie in den Flash-Speicher schreiben müssen, müssen Sie einen ganzen Block schreiben, der sich derzeit im gelöschten Zustand befindet. Die Dateisystemsoftware im Betriebssystem weiß möglicherweise, welche Blöcke frei sind, der Controller und der Speicher auf einem Flash-Gerät jedoch nicht. Eine spezielle Möglichkeit für das Betriebssystem, eine SSD anzuweisen, Blöcke verfügbar zu machen, wurde für "busverbundene" SSDs entwickelt: Sie heißt TRIM. USB-Protokollstapel unterstützen meines Wissens TRIM nicht. Im Grunde genommen füllt sich der Flash-Speicher so lange, bis keine tatsächlich gelöschten Blöcke mehr vorhanden sind. Zu diesem Zeitpunkt muss das Dateisystem Blöcke löschen und neu schreiben, indem es sie liest. Zusammenführen der neuen Daten, Löschen und erneutes Ausschreiben. Aus diesem Grund nimmt die Schreibleistung für kleine Dateien auf SSDs mit der Zeit ab.

Die besonderen Umstände verschlüsselter Volumes sind interessant: Abhängig von der Funktionsweise der Verschlüsselung kann tatsächlich ein gesamtes Volume verschlüsselt werden, wobei alle Blöcke mit scheinbar zufälligen Daten gefüllt werden, selbst wenn die Blöcke tatsächlich nicht verwendet werden und Nullen enthalten würden. Wenn Sie also FileVault aktivieren (oder auf andere Weise die Kernspeicherverschlüsselung aktivieren), wird im Wesentlichen das gesamte Volume belegt, sodass kein Platz für Schreibvorgänge bleibt. Das Dateisystem muss Blöcke ständig lesen, löschen und neu schreiben, damit es sie mit allen verschlüsselten Daten, die Sie darauf ablegen möchten, neu schreiben kann.

Jetzt werde ich gleich hier sagen, dass dies Spekulationen sind, die auf einem vernünftigen Verständnis der Funktionsweise der Dinge beruhen, aber es gibt Leute, die die Details tatsächlich kennen, die meine Erklärung korrigieren oder verbessern können, und ich hoffe, dass sie dies tun werden.

xgrep
quelle
Das klingt in der Tat sehr vernünftig. Ich habe ein bisschen gegraben und es scheint, dass für externe Laufwerke sowohl eSATA als auch Thunderbolt TRIM unterstützen. Dies könnte für externe SSDs interessant sein, aber wahrscheinlich nicht für USB-Sticks,
Stefan Schmidt
1
Nur für den Fall, dass sich jemand wundert: In der Zwischenzeit besteht meine Problemumgehung darin, ein verschlüsseltes Paket mit geringer Dichte auf dem Laufwerk zu erstellen, das der Kapazität des Laufwerks entspricht. Ich habe keine Benchmarks durchgeführt, aber es fühlt sich ungefähr so ​​an, als würde man unverschlüsselte Daten auf das Laufwerk schreiben.
Stefan Schmidt
@StefanSchmidt ein verschlüsseltes Sparse-Bundle wie hier beschrieben? blog.fosketts.net/2015/07/22/…
Brad Cupit
@BradCupit Ja, aber ich synchronisiere den Inhalt des Sparse-Bundles, nicht das Sparse-Bundle selbst. Daher mounte ich das Sparse-Bundle mit hdiutil attach, rsyncsynchronisiere es mit meinem lokalen Ordner, hebe das Sparse-Bundle mit auf hdiutil detachund wirf das Festplattenlaufwerk mit aus diskutil eject.
Stefan Schmidt