Velocidad de escritura extremadamente lenta en la unidad externa encriptada en Mavericks

10

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

El modelo de unidad que utilicé para probar 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 un Macbook actual con Mavericks y en una máquina más antigua con Mountain Lion. Utilicé la Utilidad de Discos para formatear el disco como Mac OS Extended (con registro) y Mac OS Extended (con registro, cifrado).

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

Escritura: 86.16 MB / seg (cifrado: 0.62 MB / seg)
Lectura: 181,66 MB / seg (cifrado: 151,15 MB / seg)

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

Escritura: 23.57 MB / seg (cifrado: 5.04 MB / seg)
Lectura: 36,23 MB / seg (cifrado: 37,87 MB / seg)

Como puede ver en la máquina más antigua, la velocidad de escritura disminuye claramente al escribir en el volumen cifrado, pero sigue siendo aproximadamente 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 recientemente introducido 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 entrega 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. (Codificado: 37.79 MB / seg.)

Sin embargo, esto todavía deja la pregunta de por qué la velocidad de escritura cifrada en la unidad USB en el MBP 2013 es inferior al 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 la SSD interna del 2013 MBP y allí no pude detectar ninguna desaceleración.

Stefan Schmidt
fuente
1
Wow: las lecturas normales de lectura / escritura y las escrituras cifradas se ven bien. Pero esa escritura encriptada es dolorosamente lenta. ¿Qué herramienta mide los MB / s? ¿Puede reproducir estos resultados usando Blackmagic (gratis en MAS)
bmike
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 (cifrado).
Stefan Schmidt
Sospecho que falta la velocidad de lectura para el volumen cifrado porque la duración de la lectura es más corta que el intervalo de muestreo de rendimiento de Blackmagic
Stefan Schmidt

Respuestas:

2

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 (lo que se usa en la memoria de su computadora) o los discos duros, donde cualquier bit se puede escribir en 0 o 1 en cualquier momento, la memoria flash tiene dos estados principales: escrito y borrado. Dentro de "escrito" se encuentran 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 son gratuitos, pero el controlador y el almacenamiento en un dispositivo flash no. Se ha ideado una forma especial para que el sistema operativo le indique 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 al leerlos, fusionar los nuevos datos, borrarlos y volver a escribirlos. Es por eso que ve que el rendimiento de escritura de archivos pequeños se degrada en las SSD con el tiempo.

Las circunstancias especiales de los volúmenes encriptados son interesantes: dependiendo de la forma en que funciona el encriptado, en realidad puede encriptar un volumen completo, llenando todos los bloques con lo que parecen ser datos aleatorios, incluso si los bloques en realidad no se usan y contienen ceros. Entonces, cuando activa FileVault (o habilita el cifrado de almacenamiento principal), 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 cualquier información cifrada que desee poner.

Ahora diré aquí 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.

xgrep
fuente
Eso de hecho suena muy razonable. Investigué un poco y parece que para unidades externas eSATA y Thunderbolt son compatibles con TRIM. Esto podría ser interesante con respecto a los SSD externos, pero probablemente no para las unidades de memoria USB
Stefan Schmidt
1
En caso de que alguien se pregunte: mientras tanto, mi solución 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.
Stefan Schmidt
@StefanSchmidt ¿un paquete disperso encriptado como se describe aquí? blog.fosketts.net/2015/07/22/…
Brad Cupit
@BradCupit Sí, pero sincronizo el contenido del paquete disperso, no el paquete disperso en sí mismo, así que monte el paquete disperso con hdiutil attach, luego lo uso rsyncpara sincronizar con mi carpeta local, luego desmonto el paquete disperso con hdiutil detachy expulso la unidad de disco diskutil eject.
Stefan Schmidt