Velocità di scrittura estremamente lenta su unità esterna crittografata su Mavericks


10

La scrittura su un'unità flash USB completamente crittografata su Mavericks è estremamente lenta.

Il modello di unità che ho usato per i test era un Kingston DataTraveler Ultimate 3.0 G3 (64 GB). Ho testato la velocità di trasferimento leggendo / scrivendo un file di grandi dimensioni da / verso un'unità sia crittografata che non crittografata. Ho provato su un attuale Macbook con Mavericks e su una macchina più vecchia con Mountain Lion. Ho usato Utility Disco per formattare l'unità come Mac OS Extended (Journaled) e Mac OS Extended (Journaled, Encrypted).

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

Scrivi: 86.16 MB / sec (crittografato: 0.62 MB / sec)
Leggi: 181.66 MB / sec (crittografato: 151.15 MB / sec)

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

Scrittura: 23,57 MB / sec (crittografato: 5,04 MB / sec)
Lettura: 36,23 MB / sec (crittografato: 37,87 MB / sec)

Come puoi vedere sulla macchina più vecchia, la velocità di scrittura diminuisce chiaramente quando si scrive sul volume crittografato, ma è ancora circa dieci volte più veloce rispetto alla macchina più recente che esegue Mavericks. Potrebbe trattarsi di un problema recentemente introdotto in FileVault o CoreStorage?

Aggiornamento (28/06/2014)

L'unità USB sembra aver avuto un difetto hardware dall'inizio. Ho ottenuto un'unità sostitutiva (stesso modello) che non fornisce ancora i risultati che mi aspetterei, ma almeno la velocità di scrittura crittografata dell'MBP del 2013 è ora alla pari con l'MBP del 2007.

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

Scrivi: 135.41 MB / sec (crittografato: 9.29 MB / sec)
Leggi: 196.22 MB / sec (crittografato: 187.04 MB / sec)

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

Scrivi: - MB / sec (crittografato: 9.39 MB / sec)
Leggi: - MB / sec (crittografato: 37.79 MB / sec)

Ciò lascia ancora la domanda, tuttavia, perché la velocità di scrittura crittografata sull'unità USB sull'MBP del 2013 sia inferiore al dieci percento della velocità di scrittura normale. Ho anche confrontato le velocità di lettura / scrittura prima e dopo l'attivazione di FileVault sull'SSD interno dell'MBP del 2013 e lì non ho rilevato alcun rallentamento.


1
Caspita: le normali scritture di lettura / scrittura e crittografate sembrano buone. Ma quella scrittura crittografata è dolorosamente lenta. Quale strumento sta misurando gli MB / s? Riesci a riprodurre questi risultati usando Blackmagic (gratuito su MAS)
bmike

Ho usato un semplice Bash one-liner utilizzando time, dde awk. Blackmagic mi dà gli stessi risultati: goo.gl/bn32fC (non crittografato) vs. goo.gl/yghyqA (crittografato).
Stefan Schmidt,

Sospetto che manchi la velocità di lettura per il volume crittografato perché la durata della lettura è inferiore all'intervallo di campionamento della velocità effettiva di Blackmagic
Stefan Schmidt

Risposte:


2

Ho lo stesso problema, che sono abbastanza sicuro sia dovuto alla combinazione del modo in cui le operazioni di scrittura funzionano sulla memoria flash e del modo in cui funziona la crittografia di archiviazione principale (o di qualsiasi volume intero).

Innanzitutto, comportamento di scrittura: a differenza della memoria volatile (la roba utilizzata nella memoria del computer) o dei dischi rigidi, in cui qualsiasi bit può essere scritto su 0 o 1 in qualsiasi momento, la memoria flash ha due stati principali: scritta e cancellata. All'interno di "scritto" sono 0 e 1. Quando è necessario scrivere nella memoria flash, è necessario scrivere un intero blocco che è attualmente nello stato cancellato. Il software del file system nel sistema operativo potrebbe sapere quali blocchi sono gratuiti, ma il controller e la memoria su un dispositivo flash non lo sanno. Un modo speciale per il sistema operativo di dire a un SSD di rendere disponibili i blocchi è stato ideato per SSD "collegati al bus": si chiama TRIM. Le pile di protocolli USB non supportano TRIM. Quindi, in sostanza, la memoria flash continua a riempirsi fino a quando non ci sono blocchi cancellati, a quel punto il file system deve cancellare e riscrivere i blocchi leggendoli, unendo i nuovi dati, cancellandoli e riscrivendoli. Ecco perché le prestazioni di scrittura di file di piccole dimensioni si riducono nel tempo sugli SSD.

Le circostanze speciali dei volumi crittografati sono interessanti: a seconda del modo in cui funziona la crittografia, potrebbe effettivamente crittografare un intero volume, riempiendo tutti i blocchi con quelli che sembrano essere dati casuali anche se i blocchi sono effettivamente inutilizzati e conterrebbero zero. Pertanto, quando si attiva FileVault (o si abilita in altro modo la crittografia dell'archiviazione di base), sostanzialmente consuma l'intero volume, senza lasciare spazio per le operazioni di scrittura. Il file system deve leggere, cancellare e riscrivere costantemente i blocchi in modo da poterli riscrivere con tutti i dati crittografati che si desidera inserire.

Ora dirò proprio qui che questa è una speculazione basata su una ragionevole comprensione di come funzionano le cose, ma ci sono persone che conoscono effettivamente i dettagli, che possono correggere o migliorare la mia spiegazione e spero che lo faranno.


Sembra davvero molto ragionevole. Ho fatto qualche scavo e sembra che per le unità esterne eSATA e Thunderbolt supportino entrambi TRIM. Questo potrebbe essere interessante per quanto riguarda gli SSD esterni ma probabilmente non per le chiavette USB perché i Mac non hanno interfacce eSATA e non sembra che le chiavette USB
Stefan Schmidt

1
Nel caso qualcuno si stia chiedendo: nel frattempo la mia soluzione alternativa è quella di creare un pacchetto sparso crittografato sull'unità dimensionato come la capacità dell'unità. Non ho fatto alcun benchmark ma mi sento approssimativamente alla pari con la scrittura di dati non crittografati sul disco.
Stefan Schmidt,

@StefanSchmidt un pacchetto sparso crittografato come descritto qui? blog.fosketts.net/2015/07/22/…
Brad Cupit

@BradCupit Sì, ma sincronizzo il contenuto del bundle sparse, non il bundle sparse stesso, quindi monto il bundle sparse con hdiutil attach, quindi utilizzo rsyncper sincronizzarmi con la mia cartella locale, quindi smontalo con il pacchetto sparse hdiutil detached espelle l'unità disco con diskutil eject.
Stefan Schmidt,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.