Lanzamiento de la especificación NVMe 2.0: reorganización importante

La versión 2.0 de la especificación NVM Express se ha publicado y mantiene la cadencia de aproximadamente dos años para la interfaz de almacenamiento que ahora tiene una década. Al igual que otras actualizaciones de la especificación NVMe, la versión 2.0 introduce una variedad de nuevas características y funcionalidades que las unidades pueden implementar (generalmente como características opcionales). Pero el cambio más importante, y la razón por la que esta versión se llama 2.0 en lugar de 1.5, es que la especificación se ha reorganizado drásticamente para adaptarse mejor a la amplia funcionalidad de NVMe. Desde sus humildes comienzos como un protocolo de almacenamiento en bloque que opera sobre PCI Express, NVMe ha evolucionado hasta convertirse en uno de los principales protocolos de almacenamiento en red y ahora admite paradigmas de almacenamiento que son completamente diferentes de la abstracción de almacenamiento en bloque similar a un disco originalmente proporcionada por NVMe.

En lugar de una especificación básica para los SSD PCIe típicos y una especificación de NVMe-over-Fabrics separada, la versión 2.0 está diseñada como una especificación más modular y dividida en varios documentos. La especificación base ahora cubre tanto los dispositivos conectados localmente como NVMeoF, pero de manera más abstracta: se ha eliminado lo suficiente de la especificación base que ya no es suficiente definir todas las funciones necesarias para implementar un SSD simple. Los dispositivos reales también deben referirse a al menos una especificación de transporte y al menos una especificación de conjunto de instrucciones. Para los SSD de consumo típicos, esto significa utilizar la especificación de transporte PCIe y el conjunto de instrucciones de almacenamiento en bloque. Actualmente, otras opciones de transporte incluyen NVMe en red sobre tejidos que utilizan TCP o RDMA. Otras opciones de conjuntos de instrucciones incluyen conjuntos de instrucciones de valor-clave y espacio de nombres por zonas. Ya cubrimos los espacios de nombres por zonas en profundidad cuando se aprobó su inclusión el año pasado. Los tres conjuntos de instrucciones estandarizados (bloque, zonificado, clave-valor) cubren diferentes puntos en el espectro, desde SSD simples con abstracciones delgadas al flash subyacente a unidades inteligentes relativamente complejas que asumen algunas de las tareas de administración de memoria tradicionalmente comunes de la software manejado en el sistema anfitrión.

Muchas de las nuevas características de NVMe 2.0 son adiciones menores a las características existentes que hacen que esas características sean más útiles y más utilizables. Por ejemplo, la partición de la memoria de un dispositivo en conjuntos NVM y grupos de resistencia se introdujo en NVMe 1.4, pero la especificación no decía cómo se crearían estas divisiones; esta configuración tendría que estar codificada por el firmware de la unidad o procesarse mediante comandos específicos del fabricante. NVMe 2.0 agrega un mecanismo de administración de capacidad estándar para grupos de resistencia asignables y conjuntos de NVM, y agrega otra capa de partición (dominios) para dispositivos de almacenamiento NVMeoF masivos que necesitaban más herramientas para dividir su grupo de almacenamiento disponible o aislar la degradación del rendimiento de diferentes usuarios en unidades o matrices compartidas.

La especificación NVMe preveía originalmente la capacidad de tener varios conjuntos de instrucciones más allá del conjunto básico de instrucciones de memoria de bloques. Pero el mecanismo original para admitir múltiples conjuntos de instrucciones no es suficiente para los casos de uso actuales: un puñado de bits reservados en la estructura de datos de las capacidades del controlador son insuficientes para abarcar todas las posibilidades que los SSD actuales podrían implementar. En particular, el nuevo sistema para manejar múltiples conjuntos de comandos ahora hace posible que diferentes espacios de nombres detrás del mismo controlador admitan diferentes conjuntos de comandos, en lugar de que todos los espacios de nombres tengan que admitir todos los conjuntos de comandos admitidos por su controlador de nivel superior.

Los conjuntos de instrucciones por zonas y de valor clave ya estaban en el radar cuando se completó NVMe 1.4, y ahora estas tecnologías se han incorporado en 2.0 con el mismo estado que el conjunto de instrucciones de almacenamiento en bloque original. Los conjuntos de instrucciones futuros, como para las unidades de almacenamiento informático, aún están en proceso, aún no están listos para la estandarización, pero la especificación NVMe ahora puede incorporar más fácilmente estos nuevos desarrollos. NVMe también podría agregar un conjunto de instrucciones de canal abierto en principio que exponga la mayoría o todos los detalles sin procesar de la administración del almacenamiento flash NAND (páginas, borrado de bloques, administración de fallas, etc.), pero el consenso general de la industria es que el paradigma de almacenamiento zonificado golpea lograr un equilibrio más razonable, y el interés en los SSD de canal abierto está disminuyendo a favor de los espacios de nombres por zonas.

Para los casos de uso empresarial, NVMe ha heredado el soporte de información de protección de SCSI / SAS y ha asignado información adicional a cada bloque lógico que se utiliza para verificar la integridad de los datos de un extremo a otro. NVMe 2.0 amplía el soporte de información de protección existente desde la compatibilidad con CRC de 16 bits hasta la compatibilidad con CRC de 32 y 64 bits, lo que permite una protección de datos más sólida para grandes sistemas de almacenamiento.

NVMe 2.0 presenta una nueva característica de seguridad importante: el control del grupo de comandos, que se configura con un nuevo comando de bloqueo. NVMe 1.4 agregó una función de espacios de nombres de solo lectura que permite que el sistema host ponga los espacios de nombres en modo de solo lectura hasta que se desbloqueen explícitamente o la unidad se apague y se vuelva a encender. El bloqueo de NVMe 2.0 permite un control similar para prohibir otros comandos. Esto se puede usar para poner una unidad en un estado en el que se permiten tanto las lecturas como las escrituras normales, pero varios comandos de administración están bloqueados para que las otras funciones de la unidad no se puedan reconfigurar. Al igual que con la función de protección contra escritura anterior, este control de grupo de comandos permite establecer estas restricciones hasta que se eliminen explícitamente o hasta que se apague y encienda.

Para los casos de uso de NVMe sobre tejidos, NVMe 2.0 aclara cómo se manejan las actualizaciones de firmware y los apagados seguros de los dispositivos en escenarios donde se puede acceder al almacenamiento compartido a través de múltiples controladores. Ahora también hay soporte explícito para discos duros. Si bien es poco probable que los discos duros migren a conexiones PCIe en lugar de SAS o SATA en el corto plazo, la compatibilidad con medios rotativos significa que las organizaciones pueden unificar sus redes de almacenamiento con NVMe sobre Fabrics y deshacerse de protocolos heredados como iSCSI.

En general, NVMe 2.0 no trae tantas características nuevas como algunas de las actualizaciones anteriores. En particular, nada en esta actualización es relevante para SSD de cliente / consumidor. Pero la reorganización de las especificaciones debería facilitar la iteración y la experimentación con nuevas funciones y, con suerte, en los próximos años habrá actualizaciones más frecuentes con cambios menores, en lugar de dos o tres años de trabajo agrupados para grandes actualizaciones de especificaciones.

Lectura relacionada:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir