Hasta ahora sé que eso cat /sys/block/<devicename>/queue/rotational
me dirá si mi disco es un SSD o un HDD. ¿Existe algo similar para saber si usa SMR (Shingled Magnetic Recording)?
Respuesta1
La única forma de estar seguro es comparar la unidad con suficiente acceso de escritura aleatoria. Se supone que el SMR "administrado por unidad" es totalmente transparente para la computadora host y, a veces, los fabricantes no mencionan el SMR. Sin embargo, lo "transparente" se trata sólo de comportamiento lógico, no de rendimiento (o latencia).
Sugeriría seguir. Ejecute fio
de la siguiente manera (primero cd
en el directorio del disco a probar porque lo siguiente creará un archivo de prueba comparativa en el directorio de trabajo actual):
fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=randwrite --size=500g --io_size=1500g --blocksize=10m --ioengine=libaio --iodepth=1 --direct=1 --numjobs=1 --runtime=3600 --group_reporting
Este ejemplo creará un archivo de 500 GB lleno de datos pseudoaleatorios y luego seleccionará una ubicación aleatoria dentro de él y escribirá 10 MB de datos pseudoaleatorios en el archivo. Luego repite la selección de una ubicación aleatoria y la escritura durante hasta 1 hora o hasta que se hayan escrito 1,5 TB. Mire las líneas de ETA que se parecen a esta:
Jobs: 1 (f=1): [w(1)] [20.0% done] [0KB/40960KB/0KB /s] [0/4/0 iops] [eta 00m:28s]
El comando anterior emitirá una nueva línea ETA cada 5 segundos. Observe el rendimiento actual y las IOPS entre las barras ( 40960KB
y 4
) anteriores. Para la unidad SMR, primero debe obtener buenos valores (100 MB+/s y 10+ IOPS), pero a medida que avanza la prueba y el caché interno de la unidad SMR se llena (generalmente alrededor de 20 GB), el rendimiento irá por todas partes. A veces estará cerca de la velocidad inicial, a veces serán largos períodos de tiempo alrededor de 0 MB/s y 0-1 IOPS. Sin embargo, nunca debería haber errores.
¡Tenga en cuenta que las unidades SMR se volverán más lentas cuando se utilicen o se comparen! Algunas unidades admiten el comando TRIM y fstrim
pueden ayudar a que la velocidad de la unidad vuelva a ser original.
Incluso sin TRIM, un SMR "gestionado por unidad" bien hecho adquirirá su velocidad original una vez que se deje en ralentí durante un tiempo suficiente. Es posible que deba desactivar la reducción de velocidad del disco (administración de energía) si entra en modo de suspensión antes de que el caché interno se haya vaciado por completo en el área SMR. Como alternativa, puedes configurar una apariencia que escriba un poco de vez en cuando. Incluso una sola línea como
while true; do date >> timestamps.txt; sleep 5m; done
en un directorio almacenado en el dispositivo para probar funcionará bien y solo tienes que finalizarlo con Ctrl+C cuando hayas terminado. Para las unidades Seagate SMR que he usado, la limpieza completa del caché parece tardar alrededor de media hora. Durante este tiempo, la unidad suena como si estuviera escribiendo datos aunque la computadora no escribe nada en la unidad. Desafortunadamente, no conozco ninguna forma de consultar el estado de descarga del disco. Escuche los sonidos del disco o simplemente espere el tiempo suficiente.
Ejemplo: la unidad Seagate SMR parece estar feliz de irse a dormir en medio de la descarga SMR (probablemente para pretender ser completamente transparente para el usuario) y continuar descargando una vez que se despierte nuevamente en el futuro. Esto es transparente en el sentido de que no se producirá corrupción de datos incluso si se corta la energía. Sin embargo, esto da como resultado un rendimiento muy pobre si escribe grandes ráfagas de vez en cuando e inmediatamente pone la unidad en suspensión (por ejemplo, utiliza dicha unidad como unidad de respaldo que se desmonta y desconecta inmediatamente después de que la copia de seguridad se completa lógicamente). La próxima vez que realice otra copia de seguridad, la nueva copia de seguridad competirá con la descarga SMR de la copia de seguridad anterior y el rendimiento será muy bajo. Si mantiene dicha unidad siempre encendida y escribe solo hasta 10 GB de una sola vez, será tan rápida o más rápida que la unidad HDD PMR normal.
Respuesta2
Versiones modernas desg3_utilstiene un comando sg_rep_zones, que interrogará a la unidad y le preguntará sobre su configuración SMR. Es posible que tengas que compilarlo manualmente si tu distribución no tiene una versión reciente.
Eso puede decirte definitivamente si la unidadesRMN.
Sin embargo, incluso si el comando informa Report zones command not supported
, eso no le indica con seguridad que la unidadno esRMN. Algunas unidades SMR utilizan SMR "administrado por unidad", lo que significa que la unidad maneja todo mágicamente y supuestamente no necesita preocuparse por eso. En este caso, no necesariamente admitiría el comando de informar zonas.
Otra cosa que puede probar es ver si la unidad admite los comandos "desasignar" o "recortar": sg_unmap, que también forma parte de sg3_utils. Es poco probable que una unidad que no sea SMR admita ese comando (pero nuevamente, no todas las unidades SMR lo admitirán).