Tengo un disco duro de 4 TB que tiene un tamaño de sector físico de 4k (formato avanzado) y lo conecté a dos controladores de host SATA (uno interno y otro en un gabinete USB). En el (más antiguo, alrededor de 2010) aparece como un tamaño de sector lógico de 512B, pero informa que sus sectores físicos son 4096 bytes. En el reciente gabinete USB, se informa que tiene un tamaño lógico y físico 4096B:
# internal host controller
sd 4:0:0:0: [sdd] 7814037168 512-byte logical blocks: (4.00 TB/3.63 TiB)
sd 4:0:0:0: [sdd] 4096-byte physical blocks
# USB enclosure
sd 18:0:0:0: [sdd] 976754646 4096-byte logical blocks: (4.00 TB/3.63 TiB)
El controlador "interno" muestra el comportamiento que había visto anteriormente, que generalmente se llama "512e", donde el firmware de la unidad emula el direccionamiento LBA de 512 sectores a pesar de que físicamente no escribe sectores de esa manera. Los sistemas operativos (y los administradores) pueden garantizar que las particiones estén alineadas de manera que los comandos de escritura (pequeños) se puedan agrupar para que el disco pueda sobrescribir sectores completos en lugar de volver a escribir en una parte de un sector físico, donde necesita leer el resto de contenido primero.
Sin embargo, ver el comportamiento "4k nativo" en una unidad (carcasa USB) era nuevo para mí y mi pensamiento inicial fue que la carcasa emula el direccionamiento 4096B sobre la emulación 512B emulada de la unidad.
Las únicas ocurrencias de esto que pude encontrar con una búsqueda en la web fueron las instalaciones de almacenamiento USB que se registraron con 4k sectores lógicos. Supongo que emulan 4k sobre 512e, por lo que permiten las tablas de partición MBR para que las unidades grandes se puedan usar en dispositivos heredados / embebidos (televisores inteligentes y demás) que solo admiten almacenamiento masivo usb MBR + FAT32.
Después de ponerse en contacto con el fabricante , afirmaron que la unidad realmente funciona en modo 4k no emulado (nativo), el controlador SATA USB tampoco está emulando en absoluto. Esto requeriría que el firmware de la unidad detecte si el controlador host admite (¿desea?) Abordar tamaños de sector de 4KB. No pude encontrar nada sobre esto en la documentación pública de los estándares SATA. Entonces pregunto:
- ¿Alguien ha visto "bloques lógicos de 4096 bytes" en su controlador SATA?
- ¿Las unidades realmente admiten habilitar / deshabilitar la emulación a pedido? Si es así,
- ¿Cómo funciona esta determinación?
- ¿Se puede anular en el disco a través de una bandera?
- ¿Se puede anular en el controlador host a través de un controlador / indicador?
fuente
Respuestas:
He visto algunas unidades SATA 4Kn trabajando en la industria de validación de discos duros, pero no sabía que enviaban ninguna a los clientes, debido al soporte limitado de hardware y software para ellos y la falta de demanda de los clientes.
Hay dos mapeos competitivos para tamaños de sectores físicos versus lógicos. La función Sector lógico largo permite que un dispositivo tenga sectores lógicos más largos que 512B (por ejemplo, 4Kn), y la función Sector físico largo permite que un dispositivo tenga múltiples sectores lógicos por sector físico (por ejemplo, 512e), aunque no son necesariamente mutuamente excluyentes. Si el fabricante afirma que la unidad es 4Kn, el controlador más antiguo puede proporcionar una capa de emulación, como lectura-modificación-escritura, para aplicaciones y hardware más antiguos, ya que los sistemas más antiguos simplemente no son compatibles con el formato 4Kn.
El
sg_sat_identify
comando del paquete sg3_utils probablemente le proporcionará la información que necesita (consulte las palabras 106-108 para obtener información sobre el tamaño del sector físico / tamaño del sector lógico).No parece que las unidades SATA puedan admitir la emulación a pedido, per se, pero si la unidad está utilizando 512e, en lugar de 4Kn, el controlador (o posiblemente el controlador USB SATA) maximiza la optimización del rendimiento al limitar las lecturas / escrituras en Límites de 4K, por ejemplo, hacer que la transferencia comience en un LBA donde los 3 bits inferiores son 0, y termine en un LBA donde los 3 bits inferiores son 1:
Entonces, básicamente, no hay un "interruptor" que pueda indicarle a la unidad que inicie o pare la emulación. Desde la perspectiva del usuario final, su mejor opción es probablemente asegurarse de que sus unidades estén utilizando el mejor sistema de archivos para cualquier asignación que utilice su unidad y asegurarse de que esté alineada correctamente. El siguiente sitio ofrece un desglose bastante bueno de los sistemas de archivos comunes y sus estadísticas sobre el rendimiento frente a la alineación de bloques en diferentes sistemas de archivos: http://www.ibm.com/developerworks/library/l-linux-on-4kb-sector -disks / index.html
fuente