Velocidad de escritura extremadamente lenta en una unidad externa cifrada en Mavericks

Escribir en una unidad flash USB totalmente encriptada en Mavericks es extremadamente lento.

El modelo de unidad que utilicé para la prueba fue un Kingston DataTraveler Ultimate 3.0 G3 (64 GB). Probé las velocidades de transferencia leyendo/escribiendo un archivo grande desde/hacia una unidad cifrada y no cifrada. Probé en una Macbook actual con Mavericks y en una máquina más antigua con Mountain Lion. Usé Disk Utility para formatear la unidad como Mac OS Extended (registrado) y Mac OS Extended (registrado, cifrado).

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

Escritura: 86,16 MB/s (cifrado: 0,62 MB/s)
Lectura: 181,66 MB/s (cifrado: 151,15 MB/s)

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

Escritura: 23,57 MB/s (cifrado: 5,04 MB/s)
Lectura: 36,23 MB/s (cifrado: 37,87 MB/s)

Como puede ver en la máquina más antigua, la velocidad de escritura disminuye claramente cuando se escribe en el volumen encriptado, pero sigue siendo unas diez veces más rápida en comparación con la máquina más nueva que ejecuta Mavericks. ¿Podría ser este un problema introducido recientemente en FileVault o CoreStorage?

Actualización (2014-06-28)

La unidad USB parece haber tenido un defecto de hardware desde el principio. Obtuve una unidad de reemplazo (mismo modelo) que todavía no ofrece los resultados que esperaría, pero al menos la velocidad de escritura cifrada del MBP 2013 ahora está a la par con el MBP 2007.

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

Escritura: 135,41 MB/s (encriptado: 9,29 MB/s)
Lectura: 196,22 MB/s (encriptado: 187,04 MB/s)

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

Escritura: - MB/seg (cifrado: 9,39 MB/seg)
Lectura: - MB/seg (cifrado: 37,79 MB/seg)

Sin embargo, esto aún deja la pregunta de por qué la velocidad de escritura cifrada en la unidad USB en el MBP 2013 es menos del diez por ciento de la velocidad de escritura normal. También comparé las velocidades de lectura/escritura antes y después de activar FileVault en el SSD interno del MBP 2013 y allí no pude detectar ninguna ralentización.

Vaya, la lectura/escritura normal y las escrituras cifradas se ven bien. Pero esa escritura encriptada es terriblemente lenta. ¿Qué herramienta mide los MB/s? ¿Puedes reproducir estos resultados usando Blackmagic (gratis en MAS) ?
Utilicé un simple Bash one-liner utilizando time, ddy awk. Blackmagic me da los mismos resultados: goo.gl/bn32fC (sin cifrar) frente a goo.gl/yghyqA (encriptado).
Sospecho que falta la velocidad de lectura del volumen cifrado porque la duración de la lectura es más corta que el intervalo de muestreo de rendimiento de Blackmagic

Respuestas (1)

Tengo el mismo problema, que estoy bastante seguro de que se debe a una combinación de la forma en que funcionan las operaciones de escritura en la memoria flash y la forma en que funciona el cifrado de almacenamiento central (o cualquier volumen completo).

Primero, escriba el comportamiento: a diferencia de la memoria volátil (el material que se usa en la memoria de su computadora) o los discos duros, donde cualquier bit se puede escribir a 0 o 1 en cualquier momento, la memoria flash tiene dos estados principales: escrito y borrado. Dentro de "escrito" hay 0 y 1. Cuando necesite escribir en la memoria flash, debe escribir un bloque completo que se encuentre actualmente en estado borrado. El software del sistema de archivos en el sistema operativo puede saber qué bloques están libres, pero el controlador y el almacenamiento en un dispositivo flash no. Se ha ideado una forma especial para que el sistema operativo le diga a un SSD que haga que los bloques estén disponibles para los SSD "conectados al bus": se llama TRIM. Las pilas de protocolo USB, que yo sepa, no son compatibles con TRIM. Entonces, básicamente, la memoria flash continúa llenándose hasta que no hay bloques borrados reales, momento en el cual el sistema de archivos tiene que borrar y reescribir bloques leyéndolos, fusionando los nuevos datos, borrándolos y volviéndolos a escribir. Es por eso que ve que el rendimiento de escritura de archivos pequeños se degrada en los SSD con el tiempo.

Las circunstancias especiales de los volúmenes cifrados son interesantes: dependiendo de la forma en que funcione el cifrado, en realidad puede cifrar un volumen completo, llenando todos los bloques con lo que parecen ser datos aleatorios, incluso si los bloques no se usan y contienen ceros. Entonces, cuando activa FileVault (o habilita el cifrado de almacenamiento central), básicamente consume todo el volumen, sin dejar espacio para las operaciones de escritura. El sistema de archivos tiene que leer, borrar y reescribir bloques constantemente para poder reescribirlos con los datos cifrados que desee incluir.

Ahora diré aquí mismo que esto es especulación basada en una comprensión razonable de cómo funcionan las cosas, pero hay personas que realmente conocen los detalles, que pueden corregir o mejorar mi explicación y espero que lo hagan.

Eso ciertamente suena muy razonable. Investigué un poco y parece que las unidades externas eSATA y Thunderbolt son compatibles con TRIM. Esto puede ser interesante con respecto a los SSD externos, pero probablemente no para las unidades de almacenamiento en miniatura porque las Mac no tienen interfaces eSATA y no parece que las unidades de almacenamiento en miniatura Thunderbolt asequibles estén disponibles en el corto plazo: goo.gl/sDM1au
En caso de que alguien se pregunte: mientras tanto, mi solución alternativa es crear un paquete disperso cifrado en la unidad del tamaño de la capacidad de la unidad. No hice ningún punto de referencia, pero se siente más o menos a la par con escribir datos sin cifrar en la unidad.
@StefanSchmidt, ¿un paquete disperso cifrado como el que se describe aquí? blog.fosketts.net/2015/07/22/…
@BradCupit Sí, pero sincronizo el contenido del paquete disperso, no el paquete disperso en sí, así que monto el paquete disperso con hdiutil attach, luego lo uso rsyncpara sincronizar con mi carpeta local, luego desmonto el paquete disperso hdiutil detachy expulso la unidad de disco con diskutil eject.