ES2800064T3 - Procedimiento, dispositivo y sistema para transferencia de paquetes en NVME sobre tejido - Google Patents

Procedimiento, dispositivo y sistema para transferencia de paquetes en NVME sobre tejido Download PDF

Info

Publication number
ES2800064T3
ES2800064T3 ES16909743T ES16909743T ES2800064T3 ES 2800064 T3 ES2800064 T3 ES 2800064T3 ES 16909743 T ES16909743 T ES 16909743T ES 16909743 T ES16909743 T ES 16909743T ES 2800064 T3 ES2800064 T3 ES 2800064T3
Authority
ES
Spain
Prior art keywords
packet
command
transfer
management
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES16909743T
Other languages
English (en)
Inventor
Jian He
Xiaoke Ni
Yimin Yao
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Application granted granted Critical
Publication of ES2800064T3 publication Critical patent/ES2800064T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • H04L12/40006Architecture of a communication node
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0617Improving the reliability of storage systems in relation to availability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4633Interconnection of networks using encapsulation techniques, e.g. tunneling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/24Multipath
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • H04L49/253Routing or path finding in a switch fabric using establishment or release of connections between ports
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

Un dispositivo de transferencia y procesamiento (700) en memoria no volátil exprés sobre tejido, NVMe sobre tejido, en el que el dispositivo de transferencia y procesamiento (700) comprende un procesador (701), un puerto de bus (702) y por lo menos dos puertos de red (703, 704), donde el puerto de bus (702) está conectado a un bus de interconexión de componentes periféricos exprés, PCIe, los por lo menos dos puertos de red (703, 704) están conectados por separado a una red, y el procesador (701) está configurado para: recibir, utilizando el puerto de bus, un primer paquete enviado por un dispositivo de control en la NVMe sobre tejido, y obtener un comando de entrada/salida o un comando de gestión, donde el comando de entrada/salida o el comando de gestión es compatible con el protocolo NVMe, está comprendido en el primer paquete y comprende una identidad de un disco duro objetivo al que se tiene que acceder; generar un segundo paquete de acuerdo con el comando de entrada/salida o el comando de gestión, donde el comando de entrada/salida o el comando de gestión es compatible con el protocolo NVMe y está comprendido en el primer paquete, y el segundo paquete es un paquete para ejecutar el comando de entrada/salida o el comando de gestión; obtener, de acuerdo con la identidad del disco duro objetivo, múltiples puertos de red que están en los, por lo menos, dos puertos de red y que pueden llegar al disco duro objetivo, y seleccionar, a partir de los múltiples puertos de red, un puerto de red para transferir el segundo paquete; y encapsular el segundo paquete en un paquete que cumple un requisito de transferencia de NVMe sobre tejido, y enviar el segundo paquete encapsulado, utilizando el puerto de red seleccionado.

Description

DESCRIPCIÓN
Procedimiento, dispositivo y sistema para transferencia de paquetes en NVME sobre tejido
Campo técnico
La presente invención se refiere al sector de las tecnologías de información y, en particular, a un procedimiento, un dispositivo y un sistema de transferencia de paquetes en memoria no volátil exprés (inglés: Non-Volatile Memory Express, NVMe) sobre tejido (inglés: fabric), NVMe sobre tejido.
Antecedentes
NVMe especifica un mecanismo de transmisión entre un dispositivo NVMe y un anfitrión que están conectados utilizando un bus de interconexión de componentes periféricos exprés (inglés: Peripheral Component Interconnect Express, PCIe)
Después de que el estándar NVMe publicado de arquitectura PCIe obtenga un enorme éxito en la industria, la industria espera inmediatamente expandir el estándar NVMe al campo de los centros de datos. Sin embargo, debido a desventajas (tales como escalabilidad y conexiones a larga distancia) del protocolo PCIe en el campo de los centros de datos, la industria se dirige a desarrollar el protocolo NVMe en una red, para proporcionar aplicaciones más flexibles y más extensivas. La red en la que se ejecuta el protocolo NVMe incluye, de forma no limitativa, iWarp (inglés: iWarp), acceso de memoria directo remoto sobre Ethernet convergente (inglés: Remote Direct Memory Access Over Converged Ethernet, ROCE), Infiniband (inglés: Infiniband), canal de fibra (inglés: Fiber Channel, FC), omni-trayecto (inglés: Omni-path) y similares. En la industria, una arquitectura que es del protocolo NVMe y que se ejecuta en una red, tal como iWarp, ROCE, Infiniband, FC u omni-trayecto, se denomina una NVMe sobre tejido (o NVMe-oF).
En la arquitectura de NVMe sobre tejido, un anfitrión es responsable de iniciar una lectura/escritura de datos, y un dispositivo de almacenamiento objetivo es responsable de recibir y ejecutar un comando enviado por el anfitrión. Existen múltiples trayectos entre el anfitrión y el dispositivo de almacenamiento objetivo para transmitir el comando y los datos. Los múltiples trayectos se pueden gestionar y controlar mediante integrar software multitrayecto en un sistema operativo del anfitrión.
Para integrar el software multitrayecto en el sistema operativo del anfitrión, es necesario desarrollar el correspondiente software multitrayecto en el anfitrión para diferentes versiones del sistema operativo del anfitrión. La implementación es compleja.
La patente US 2016/0162438 da a conocer un sistema que soporta virtualización de dispositivos de almacenamiento remoto que se van a presentar como dispositivos de almacenamiento local a VM por medio de un controlador NVMe, donde cuando se reciben instrucciones para operaciones de almacenamiento (por ejemplo, operaciones de lectura/escritura) en uno o varios espacios de nombre/volúmenes lógicos desde los VM por medio del motor de acceso NVMe, la cuña/capa de adaptación convierte las instrucciones bajo la especificación NVMe en una o varias instrucciones correspondientes en los volúmenes de almacenamiento físico remotos bajo el protocolo de red de almacenamiento, tal como iSCSI, según una tabla de consulta.
Compendio
Esta invención da a conocer un dispositivo de transferencia de paquetes según la reivindicación 1, y un procedimiento según la reivindicación 12 en NVMe sobre tejido, para simplificar una implementación de control multitrayecto en el NVMe sobre tejido. Se exponen aspectos adicionales de la invención en las reivindicaciones dependientes.
De acuerdo con un aspecto, esta invención da a conocer un dispositivo de transferencia y procesamiento en una NVMe sobre tejido, donde el dispositivo de transferencia y procesamiento incluye un procesador, un puerto de bus y por lo menos dos puertos de red, donde el puerto de bus está conectado a un bus de interconexión de componentes periféricos exprés PCIe, los por lo menos dos puertos de red están conectados por separado a una red, y el procesador está configurado para:
recibir, utilizando el puerto de bus, un primer paquete enviado por un dispositivo de control en la NVMe sobre tejido, y obtener un comando de entrada/salida o un comando de gestión, donde el comando de entrada/salida o el comando de gestión es compatible con el protocolo NVMe, está incluido en el primer paquete e incluye una identidad de un disco duro objetivo al que se tiene que acceder;
generar un segundo paquete de acuerdo con el comando de entrada/salida o el comando de gestión, donde el comando de entrada/salida o el comando de gestión es compatible con el protocolo NVMe y está incluido en el primer paquete, y el segundo paquete es un paquete para ejecutar el comando de entrada/salida o el comando de gestión;
obtener, de acuerdo con la identidad del disco duro objetivo, múltiples puertos de red que están en los, por lo menos, dos puertos de red y que pueden llegar al disco duro objetivo, y seleccionar, a partir de los múltiples puertos de red, un puerto de red para transferir el segundo paquete; y
encapsular el segundo paquete en un paquete que satisface un requisito de transferencia de NVMe sobre tejido, y enviar el segundo paquete encapsulado utilizando el puerto de red seleccionado.
De acuerdo con el anterior dispositivo de transferencia y procesamiento, no es necesario instalar el software multitrayecto en el dispositivo de control en el NVMe sobre tejido, eliminándose con ello la complejidad provocada por la necesidad de ajustar entre sí varios posibles sistemas operativos durante la instalación del software multitrayecto en el dispositivo de control. Además, solamente es necesario instalar un controlador estándar NVMe genérico en el dispositivo de control para suministrar el comando de entrada/salida y el comando de gestión NVMe, y no es necesario llevar a cabo ajuste adaptativo sobre un sistema operativo de acuerdo con un requisito de transferencia específico de una red de NVMe sobre tejido, reduciendo de ese modo costes de mantenimiento del dispositivo de control.
Opcionalmente, el puerto de red se conecta a un dispositivo de almacenamiento objetivo utilizando una red, tal como iWarp, ROCE, Infiniband, FC u omni-trayecto.
Opcionalmente, el puerto de red se conecta al dispositivo de almacenamiento objetivo utilizando por lo menos un conmutador.
Opcionalmente, el comando de entrada/salida se utiliza para escribir datos en el disco duro objetivo o leer datos desde el disco duro objetivo. El comando de gestión incluye, de forma no limitativa: leer información de dispositivo del disco duro objetivo, añadir o eliminar el disco duro objetivo, y similares.
Opcionalmente, el comando de entrada/salida o el comando de gestión que es compatible con el protocolo NVMe puede ser un campo o una carga útil que es compatible con el protocolo NVMe.
En un posible diseño, el puerto de bus soporta el protocolo PCIe; y
el puerto de bus está configurado para recibir el primer paquete enviado por el dispositivo de control, obtener el comando de entrada/salida o el comando de gestión que es compatible con el protocolo NVMe y que está incluido en el primer paquete, y enviar al procesador el comando de entrada/salida o el comando de gestión obtenido que es compatible con el protocolo NVMe y que está en el primer paquete; o
el puerto de bus está configurado para recibir el primer paquete enviado por el dispositivo de control, y enviar el primer paquete al procesador, donde el procesador obtiene el comando de entrada/salida o el comando de gestión que es compatible con el protocolo NVMe y que está incluido en el primer paquete.
En un posible diseño, cuando el primer paquete incluye un comando de escribir datos, el procesador modifica una dirección en otra dirección para generar el segundo paquete, donde la dirección está contenida en el comando de escribir datos y es de espacio de almacenamiento, de datos que tienen que ser almacenados, en el dispositivo de control, y la otra dirección es de espacio de almacenamiento que está en el dispositivo de transferencia y procesamiento, y en la que se almacenan los datos que tienen que ser almacenados; o
cuando el primer paquete incluye el comando de gestión y el comando de gestión requiere que se escriban datos de gestión en el disco duro objetivo, el procesador modifica una dirección en otra dirección para generar el segundo paquete, donde la dirección está contenida en el comando de gestión y es de espacio de almacenamiento que es de los datos de gestión y que está en el dispositivo de control, y la otra dirección es de espacio de almacenamiento en el que se almacenan los datos de gestión y que está en el dispositivo de transferencia y procesamiento.
Opcionalmente, el dispositivo de transferencia y procesamiento incluye además un almacenamiento principal. El procesador obtiene, del dispositivo de control de acuerdo con la dirección, incluida en el comando de escribir datos, del espacio de almacenamiento que está en el dispositivo de control y en el que se almacenan los datos que tienen que ser almacenados, los datos que tienen que ser almacenados; almacena los datos en el almacenamiento principal; y utiliza una dirección que está en el almacenamiento principal, y en el que se almacenan los datos que tienen que ser almacenados como la dirección, incluida en el segundo paquete, del espacio de almacenamiento que está en el dispositivo de transferencia y procesamiento y en la que se almacenan los datos que tienen que ser almacenados.
Opcionalmente, el almacenamiento principal se puede implementar utilizando un chip de matriz de puertas programables in situ (inglés: Field Programmable Gate Array inglés, FPGA) independiente.
Opcionalmente, los datos que tienen que ser almacenados y que son obtenidos por el procesador desde el dispositivo de control pueden ser transmitidos por medio de acceso remoto directo a memoria (inglés: Remote Direct Memory Access, RDMA) o de acceso directo a memoria (inglés: Direct Memory Access, DMA).
En un posible diseño, cuando el primer paquete incluye un comando de leer datos, el procesador modifica una dirección en otra dirección para generar el segundo paquete, donde la dirección está contenida en el comando de leer datos y es del espacio de almacenamiento, en el dispositivo de control, en la que se escriben los datos que tienen que ser leídos, y la otra dirección es de espacio de almacenamiento que está en el dispositivo de transferencia y procesamiento y en la que se almacenan los datos que se tienen que leer; o
cuando el primer paquete incluye el comando de gestión y el comando de gestión requiere que se lean datos de gestión, el procesador modifica una dirección en otra dirección para generar el segundo paquete, donde la dirección está contenida en el comando de gestión y es de espacio de almacenamiento en el que se tienen que escribir los datos de gestión y que está en el dispositivo de control, y la otra dirección es de espacio de almacenamiento en el que se almacenan los datos de gestión y que está en el dispositivo de transferencia y procesamiento.
Opcionalmente, cuando el dispositivo de transferencia y procesamiento recibe un paquete devuelto por el dispositivo de almacenamiento objetivo, el procesador desencapsula el paquete recibido, es decir, desencapsula, de acuerdo con un protocolo de red específico utilizado entre el dispositivo de transferencia y procesamiento y el dispositivo de almacenamiento objetivo, el paquete recibido devuelto por el dispositivo de almacenamiento objetivo, y devuelve al dispositivo de control información de comando obtenida o información de datos obtenida.
Opcionalmente, cuando el comando de gestión no requiere que se lea o escriba información de configuración relacionada, el procesador puede no modificar el comando de gestión, sino generar directamente un segundo paquete utilizado para ejecutar el comando de gestión. Cuando los datos que tienen que ser leídos o escritos están contenidos directamente en el comando de entrada/salida, el procesador no tiene que modificar la dirección de los datos que tienen que ser leídos o escritos, sino generar directamente un segundo paquete utilizado para ejecutar el comando de entrada/salida que es compatible con el protocolo NVMe y que está en el primer paquete.
Opcionalmente, el procesador puede obtener, de acuerdo con la identidad del disco duro objetivo, todos o algunos de los puertos de red que pueden llegar al disco duro objetivo.
Opcionalmente, el procesador puede seleccionar, de acuerdo con una política de selección preestablecida y a partir de los puertos de red que pueden llegar al disco duro objetivo, el puerto de red para transferir el segundo paquete. La política de selección incluye, de forma no limitativa, una política de selección activa/de espera, una política de compartición de carga, una política de prioridad y una política de calidad de servicio (inglés: Quality of Service, QoS).
La política de selección activa/de espera incluye: seleccionar, por defecto, un puerto de red en un trayecto activo preestablecido como un puerto de red para enviar; cuando el trayecto activo falla, seleccionar un puerto de red en un trayecto de espera como un puerto de red para enviar; y después de que se recupera el trayecto activo, seleccionar un puerto de red en el trayecto activo como un puerto de red para enviar.
La política de compartición de carga incluye: seleccionar por lo menos dos trayectos a partir de por lo menos dos trayectos, y utilizar cada puerto de red en dichos por lo menos dos trayectos como un puerto de red para enviar.
La política de prioridad incluye: si un paquete incluye información de prioridad, seleccionar, de acuerdo con la información de prioridad incluida en el paquete, un puerto de red en un trayecto correspondiente a una prioridad en el paquete como el puerto de red para enviar. Un trayecto con alta prioridad proporciona una alta fiabilidad y/o eficiencia de la transmisión.
La política de QoS incluye: si un paquete incluye información de QoS, seleccionar, de acuerdo con la información de QoS incluida en el paquete, un puerto de red en un trayecto correspondiente una clase de QoS en el paquete como un puerto de red para enviar. Un trayecto con alta QoS proporciona una alta fiabilidad y/o eficiencia de transmisión.
En un posible diseño, el encapsulamiento del segundo paquete en un paquete que cumple un requisito de transferencia de NVMe sobre tejido incluye:
encapsular, de acuerdo con un protocolo de red utilizado entre el dispositivo de transferencia y procesamiento y el dispositivo de almacenamiento, el segundo paquete en un paquete que cumple un requisito del protocolo de red utilizado entre el dispositivo de transferencia y procesamiento y el dispositivo de almacenamiento.
Opcionalmente, el procesador está configurado además para: gestionar descubrimiento de discos duros, establecimiento de enlace, desconexión de enlace y similares en el dispositivo de almacenamiento objetivo, y proporcionar una interfaz de funciones de gestión en banda o fuera de banda, y similares.
Opcionalmente, cuando el procesador lleva a cabo gestión en banda, el procesador recibe, utilizando el puerto de bus u otro puerto, el comando de gestión enviado por el dispositivo de control, e implementa configuración y gestión según el comando de gestión recibido, o cuando el procesador lleva a cabo gestión fuera de banda, el procesador recibe, utilizando un controlador de gestión de placa base (inglés: Baseboard Management Controller, BMC), el comando de gestión enviado por el dispositivo de control.
Opcionalmente, el comando de gestión o configuración suministrado por el dispositivo de control incluye, de forma no limitativa: configuración de inicialización e interfaz del dispositivo de transferencia y procesamiento, y gestión y autenticación de descubrimiento de discos duros, establecimiento de enlace y desconexión de enlace en el dispositivo de almacenamiento objetivo.
De acuerdo con otro aspecto, esta invención da a conocer un sistema en NVMe sobre tejido, donde el sistema incluye un dispositivo de control y un dispositivo de transferencia y procesamiento, y el dispositivo de transferencia y procesamiento y el dispositivo de control están conectados utilizando un bus de interconexión de componentes periféricos exprés PCIe, donde
el dispositivo de control está configurado para enviar un primer paquete al dispositivo de transferencia y procesamiento utilizando el bus PCIe, donde el primer paquete incluye un comando de entrada/salida o un comando de gestión, y el comando de entrada/salida o el comando de gestión es compatible con el protocolo NVMe e incluye una identidad de un disco duro objetivo al que se tiene que acceder; y
el dispositivo de transferencia y procesamiento está configurado para: recibir el primer paquete; obtener la identidad del disco duro objetivo y obtener el comando de entrada/salida o el comando de gestión, donde el comando de entrada/salida o el comando de gestión es compatible con el protocolo NVMe y está incluido en el primer paquete; generar un segundo paquete de acuerdo con el comando de entrada/salida o el comando de gestión que es compatible con el protocolo NVMe, donde el segundo paquete es un paquete para ejecutar el comando de entrada/salida o el comando de gestión; obtener, de acuerdo con la identidad del disco duro objetivo, múltiples puertos de red que están en los por lo menos dos puertos de red y que pueden llegar al disco duro objetivo; seleccionar, a partir de los múltiples puertos de red, un puerto de red para transferir el segundo paquete, encapsular el segundo paquete en un paquete que cumple un requisito de transferencia de NVMe sobre tejido; y enviar el segundo paquete encapsulado utilizando el puerto de red seleccionado.
De acuerdo con el sistema anterior, no es necesario instalar software multitrayecto en el dispositivo de control en la NVMe sobre tejido, eliminando de ese modo la complejidad provocada por la necesidad de ajustar entre sí varios posibles sistemas operativos durante la instalación del software multitrayecto en el dispositivo de control. Además, solamente es necesario instalar un controlador estándar NVMe genérico en el dispositivo de control para suministrar el comando de entrada/salida y el comando de gestión NVMe, y no es necesario llevar a cabo ajuste adaptativo sobre un sistema operativo de acuerdo con un requisito de transferencia específico de una red de NVMe sobre tejido, reduciendo de ese modo costes de mantenimiento del dispositivo de control.
En un posible diseño, el dispositivo de transferencia y procesamiento incluye un procesador, un puerto de bus y por lo menos dos puertos de red, donde el puerto de bus está conectado al bus PCIe, los por lo menos dos puertos de red están conectados a una red, y el procesador está configurado para:
recibir, utilizando el puerto de bus, el primer paquete enviado por el dispositivo de control, y obtener el comando de entrada/salida o el comando de gestión que es compatible con el protocolo NVMe y que está incluido en el primer paquete;
generar el segundo paquete de acuerdo con el comando de entrada/salida o el comando de gestión, donde el comando de entrada/salida o el comando de gestión es compatible con el protocolo NVMe y está incluido en el primer paquete, y el segundo paquete es el paquete para ejecutar el comando de entrada/salida o el comando de gestión;
obtener, de acuerdo con la identidad del disco duro objetivo, los puertos de red que pueden llegar al disco duro objetivo, y seleccionar, a partir de los puertos de red que pueden llegar al disco duro objetivo, el puerto de red para transferir el segundo paquete; y
encapsular el segundo paquete en el paquete que cumple el requisito de transferencia de NVMe sobre tejido, y enviar el segundo paquete encapsulado, utilizando el puerto de red seleccionado.
Opcionalmente, el puerto de red se conecta a un dispositivo de almacenamiento objetivo utilizando una red, tal como iWarp, ROCE, Infiniband, FC u omni-trayecto.
Opcionalmente, el puerto de red se conecta al dispositivo de almacenamiento objetivo utilizando por lo menos un conmutador.
Opcionalmente, el comando de entrada/salida se utiliza para escribir datos en el disco duro objetivo o leer datos desde el disco duro objetivo. El comando de gestión incluye, de forma no limitativa: leer información de dispositivo del disco duro objetivo, añadir o eliminar el disco duro objetivo, y similares.
Opcionalmente, el comando de entrada/salida o el comando de gestión que es compatible con el protocolo NVMe puede ser un campo o una carga útil que es compatible con el protocolo NVMe.
En un posible diseño, el puerto de bus soporta el protocolo de interconexión de componentes periféricos exprés PCIe; y
el puerto de bus está configurado para recibir el primer paquete enviado por el dispositivo de control, obtener el comando de entrada/salida o el comando de gestión que es compatible con el protocolo NVMe y que está incluido en el primer paquete, y enviar al procesador el comando de entrada/salida o el comando de gestión obtenido que es compatible con el protocolo NVMe y que está en el primer paquete; o
el puerto de bus está configurado para recibir el primer paquete enviado por el dispositivo de control, y enviar el primer paquete al procesador, donde el procesador obtiene el comando de entrada/salida o el comando de gestión que es compatible con el protocolo NVMe y que está incluido en el primer paquete.
En un posible diseño, cuando el primer paquete incluye un comando de escribir datos, el procesador modifica una dirección en otra dirección para generar el segundo paquete, donde la dirección está contenida en el comando de escribir datos y es de espacio de almacenamiento, de datos que tienen que ser almacenados, en el dispositivo de control, y la otra dirección es de espacio de almacenamiento que está en el dispositivo de transferencia y procesamiento, y en la que se almacenan los datos que tienen que ser almacenados; o
cuando el primer paquete incluye el comando de gestión y el comando de gestión requiere que se escriban datos de gestión en el disco duro objetivo, el procesador modifica una dirección en otra dirección para generar el segundo paquete, donde la dirección está contenida en el comando de gestión y es de espacio de almacenamiento que es de los datos de gestión y que está en el dispositivo de control, y la otra dirección es de espacio de almacenamiento en el que se almacenan los datos de gestión y que está en el dispositivo de transferencia y procesamiento.
Opcionalmente, el dispositivo de transferencia y procesamiento incluye además un almacenamiento principal. El procesador obtiene, del dispositivo de control de acuerdo con la dirección, incluida en el comando de escribir datos, del espacio de almacenamiento que está en el dispositivo de control y en el que se almacenan los datos que tienen que ser almacenados, los datos que tienen que ser almacenados; almacena los datos en el almacenamiento principal; y utiliza una dirección que está en el almacenamiento principal, y en el que se almacenan los datos que tienen que ser almacenados como la dirección, incluida en el segundo paquete, del espacio de almacenamiento que está en el dispositivo de transferencia y procesamiento y en la que se almacenan los datos que tienen que ser almacenados.
Opcionalmente, el almacenamiento principal se puede implementar utilizando un chip FPGA independiente.
Opcionalmente, los datos que tienen que ser almacenados y que son obtenidos por el procesador desde el dispositivo de control pueden ser transmitidos por medio de RDMA o DMA.
En un posible diseño, cuando el primer paquete incluye un comando de leer datos, el procesador modifica una dirección en otra dirección para generar el segundo paquete, donde la dirección está contenida en el comando de leer datos y es del espacio de almacenamiento, en el dispositivo de control, en la que se escriben los datos que tienen que ser leídos, y la otra dirección es de espacio de almacenamiento que está en el dispositivo de transferencia y procesamiento y en la que se almacenan los datos que se tienen que leer; o
cuando el primer paquete incluye el comando de gestión y el comando de gestión requiere que se lean datos de gestión, el procesador modifica una dirección en otra dirección para generar el segundo paquete, donde la dirección está contenida en el comando de gestión y es de espacio de almacenamiento en el que se tienen que escribir los datos de gestión y que está en el dispositivo de control, y la otra dirección es de espacio de almacenamiento en el que se almacenan los datos de gestión y que está en el dispositivo de transferencia y procesamiento.
Opcionalmente, cuando el dispositivo de transferencia y procesamiento recibe un paquete devuelto por el dispositivo de almacenamiento objetivo, el procesador desencapsula el paquete recibido, es decir, desencapsula, de acuerdo con un protocolo de red específico utilizado entre el dispositivo de transferencia y procesamiento y el dispositivo de almacenamiento objetivo, el paquete recibido devuelto por el dispositivo de almacenamiento objetivo, y devuelve al dispositivo de control información de comando obtenida o información de datos obtenida.
Opcionalmente, cuando el comando de gestión no requiere que se lea o escriba información de configuración relacionada, el procesador puede no modificar el comando de gestión, sino generar directamente un segundo paquete utilizado para ejecutar el comando de gestión. Cuando los datos que tienen que ser leídos o escritos están contenidos directamente en el comando de entrada/salida, el procesador no tiene que modificar la dirección de los datos que tienen que ser leídos o escritos, sino generar directamente un segundo paquete utilizado para ejecutar el comando de entrada/salida que es compatible con el protocolo NVMe y que está en el primer paquete.
Opcionalmente, el procesador puede obtener, de acuerdo con la identidad del disco duro objetivo, todos o algunos de los puertos de red que pueden llegar al disco duro objetivo.
Opcionalmente, el procesador puede seleccionar, de acuerdo con una política de selección preestablecida y a partir de los puertos de red que pueden llegar al disco duro objetivo, el puerto de red para transferir el segundo paquete. La política de selección incluye, de forma no limitativa, una política de selección activa/de espera, una política de compartición de carga, una política de prioridades y una política de QoS.
En un posible diseño, el encapsulamiento del segundo paquete en un paquete que cumple un requisito de transferencia de NVMe sobre tejido incluye:
encapsular, de acuerdo con un protocolo de red utilizado entre el dispositivo de transferencia y procesamiento y el dispositivo de almacenamiento, el segundo paquete en un paquete que cumple un requisito del protocolo de red utilizado entre el dispositivo de transferencia y procesamiento y el dispositivo de almacenamiento.
Opcionalmente, el procesador está configurado además para: gestionar descubrimiento de discos duros, establecimiento de enlace, desconexión de enlace y similares en el dispositivo de almacenamiento objetivo, y proporcionar una interfaz de funciones de gestión en banda o fuera de banda, y similares.
Opcionalmente, cuando el procesador lleva a cabo gestión en banda, el procesador recibe, utilizando el puerto de bus u otro puerto, el comando de gestión enviado por el dispositivo de control, e implementa configuración y gestión según el comando de gestión recibido, o cuando el procesador lleva a cabo gestión fuera de banda, el procesador recibe, utilizando un BMC, el comando de gestión enviado por el dispositivo de control.
Opcionalmente, el comando de gestión o configuración suministrado por el dispositivo de control incluye, de forma no limitativa: configuración de inicialización e interfaz del dispositivo de transferencia y procesamiento, y gestión y autenticación de descubrimiento de discos duros, establecimiento de enlace y desconexión de enlace en el dispositivo de almacenamiento objetivo.
De acuerdo con aspecto más, esta invención da a conocer un procedimiento de transferencia de paquetes, donde el procedimiento se aplica a transferencia de paquetes en NVMe sobre tejido, el NVMe sobre tejido incluye un dispositivo de transferencia y procesamiento y un dispositivo de control, y el procedimiento incluye:
recibir, mediante el dispositivo de transferencia y procesamiento, un primer paquete enviado por el dispositivo de control, y obtener un comando de entrada/salida o un comando de gestión que es compatible con el protocolo NVMe y que está incluido en el primer paquete, donde el comando de entrada/salida o el comando de gestión incluye una identidad de un disco duro objetivo al que se tiene que acceder;
generar un segundo paquete de acuerdo con el comando de entrada/salida o el comando de gestión, donde el comando de entrada/salida o el comando de gestión es compatible con el protocolo NVMe y está incluido en el primer paquete, y el segundo paquete es un paquete para ejecutar el comando de entrada/salida o el comando de gestión;
obtener, de acuerdo con la identidad del disco duro objetivo, múltiples puertos de red que están en los, por lo menos, dos puertos de red y que pueden llegar al disco duro objetivo, y seleccionar, a partir de los múltiples puertos de red, un puerto de red para transferir el segundo paquete; y
encapsular el segundo paquete en un paquete que cumple un requisito de transferencia de NVMe sobre tejido, y enviar el segundo paquete encapsulado, utilizando el puerto de red seleccionado.
De acuerdo con el procedimiento anterior, no es necesario instalar software multitrayecto en el dispositivo de control en la NVMe sobre tejido, eliminando de ese modo la complejidad provocada por la necesidad de ajustar entre sí varios posibles sistemas operativos durante la instalación del software multitrayecto en el dispositivo de control. Además, solamente es necesario instalar un controlador estándar NVMe genérico en el dispositivo de control para suministrar el comando de entrada/salida y el comando de gestión NVMe, y no es necesario llevar a cabo ajuste adaptativo sobre un sistema operativo de acuerdo con un requisito de transferencia específico de una red de NVMe sobre tejido, reduciendo de ese modo costes de mantenimiento del dispositivo de control.
En un posible diseño, la obtención de un comando de entrada/salida o de un comando de gestión que es compatible con el protocolo NVMe y que está incluido en el primer paquete incluye:
recibir, mediante el dispositivo de transferencia y procesamiento utilizando un puerto que soporta el protocolo de interconexión de componentes periféricos exprés PCIe, el primer paquete enviado por el dispositivo de control utilizando un bus PCIe, y obtener el comando de entrada/salida o el comando de gestión que es compatible con el protocolo NVMe y que está incluido en el primer paquete.
Opcionalmente, el puerto de red se conecta a un dispositivo de almacenamiento objetivo utilizando una red, tal como iWarp, ROCE, Infiniband, FC u omni-trayecto.
Opcionalmente, el puerto de red se conecta al dispositivo de almacenamiento objetivo utilizando por lo menos un conmutador.
Opcionalmente, el comando de entrada/salida se utiliza para escribir datos en el disco duro objetivo o leer datos desde el disco duro objetivo. El comando de gestión incluye, de forma no limitativa: leer información de dispositivo del disco duro objetivo, añadir o eliminar el disco duro objetivo, y similares.
Opcionalmente, el comando de entrada/salida o el comando de gestión que es compatible con el protocolo NVMe puede ser un campo o una carga útil que es compatible con el protocolo NVMe.
En un posible diseño, generar un segundo paquete de acuerdo con un comando de datos o con el comando de gestión que es compatible con el protocolo NVMe y que está incluido en el primer paquete, incluye:
cuando el primer paquete incluye un comando de escribir datos, modificar, mediante el procesador, una dirección en otra dirección para generar el segundo paquete, donde la dirección está contenida en el comando de escribir datos y es de espacio de almacenamiento, de datos que tienen que ser almacenados, en el dispositivo de control, y la otra dirección es de espacio de almacenamiento que está en el dispositivo de transferencia y procesamiento y en el que se almacenan los datos que tienen que ser almacenados; o
cuando el primer paquete incluye el comando de gestión y el comando de gestión requiere que se escriban datos de gestión en el disco duro objetivo, modificar, mediante el procesador, una dirección en otra dirección para generar el segundo paquete, donde la dirección está contenida en el comando de gestión y es de espacio de almacenamiento que es de los datos de gestión y que está en el dispositivo de control, y la otra dirección es de espacio de almacenamiento en el que se almacenan los datos de gestión y que está en el dispositivo de transferencia y procesamiento.
En un posible diseño, generar un segundo paquete de acuerdo con el comando de entrada/salida o el comando de gestión que es compatible con el protocolo NVMe y que está en el primer paquete, incluye:
cuando el primer paquete incluye un comando de leer datos, modificar, mediante el procesador, una dirección en otra dirección para generar el segundo paquete, donde la dirección está contenida en el comando de leer datos y es de espacio de almacenamiento, en el dispositivo de control, en la que se escriben los datos que tienen que ser leídos, y la otra dirección es de espacio de almacenamiento que está en el dispositivo de transferencia y procesamiento y en la que se almacenan los datos que se tienen que leer; o
cuando el primer paquete incluye el comando de gestión y el comando de gestión requiere que se lean datos de gestión, modificar, mediante el procesador, una dirección en otra dirección para generar el segundo paquete, donde la dirección está contenida en el comando de gestión y es de espacio de almacenamiento en el que se tienen que escribir los datos de gestión y que está en el dispositivo de control, y la otra dirección es de espacio de almacenamiento en el que se almacenan los datos de gestión y que está en el dispositivo de transferencia y procesamiento.
Opcionalmente, cuando el dispositivo de transferencia y procesamiento recibe un paquete devuelto por el dispositivo de almacenamiento objetivo, el procesador desencapsula el paquete recibido, es decir, desencapsula, de acuerdo con un protocolo de red específico utilizado entre el dispositivo de transferencia y procesamiento y el dispositivo de almacenamiento objetivo, el paquete recibido devuelto por el dispositivo de almacenamiento objetivo, y devuelve al dispositivo de control información de comando obtenida o información de datos obtenida.
Opcionalmente, cuando el comando de gestión no requiere que se lea o escriba información de configuración relacionada, el procesador puede no modificar el comando de gestión, sino generar directamente un segundo paquete utilizado para ejecutar el comando de gestión. Cuando los datos que tienen que ser leídos o escritos están contenidos directamente en el comando de entrada/salida, el procesador no tiene que modificar la dirección de los datos que tienen que ser leídos o escritos, sino generar directamente un segundo paquete utilizado para ejecutar el comando de entrada/salida que es compatible con el protocolo NVMe y que está en el primer paquete.
Opcionalmente, el procesador puede obtener, de acuerdo con la identidad del disco duro objetivo, todos o algunos de los puertos de red que pueden llegar al disco duro objetivo.
Opcionalmente, el procesador puede seleccionar, de acuerdo con una política de selección preestablecida y a partir de los puertos de red que pueden llegar al disco duro objetivo, el puerto de red para transferir el segundo paquete. La política de selección incluye, de forma no limitativa, una política de selección activa/de espera, una política de compartición de carga, una política de prioridades y una política de QoS.
En un posible diseño, el encapsulamiento del segundo paquete en un paquete que cumple un requisito de transferencia de NVMe sobre tejido incluye:
encapsular, de acuerdo con un protocolo de red utilizado entre el dispositivo de transferencia y procesamiento y el dispositivo de almacenamiento, el segundo paquete en un paquete que cumple un requisito del protocolo de red utilizado entre el dispositivo de transferencia y procesamiento y el dispositivo de almacenamiento.
Opcionalmente, el dispositivo de transferencia y procesamiento está configurado además para: gestionar el descubrimiento de discos duros, establecimiento de enlace, desconexión de enlace y similares en el dispositivo de almacenamiento objetivo, y proporcionar una interfaz de funciones de gestión en banda o fuera de banda, y similares.
Opcionalmente, cuando el dispositivo de transferencia y procesamiento lleva a cabo gestión en banda, el dispositivo de transferencia y procesamiento recibe, utilizando el puerto de bus u otro puerto, el comando de gestión enviado por el dispositivo de control, e implementa configuración y gestión según el comando de gestión recibido, o cuando el dispositivo de transferencia y procesamiento lleva a cabo gestión fuera de banda, el procesador recibe, utilizando un BMC, el comando de gestión enviado por el dispositivo de control.
Opcionalmente, el comando de gestión o configuración suministrado por el dispositivo de control incluye, de forma no limitativa: configuración de inicialización e interfaz del dispositivo de transferencia y procesamiento, y gestión y autenticación de descubrimiento de discos duros, establecimiento de enlace y desconexión de enlace en el dispositivo de almacenamiento objetivo.
Breve descripción de los dibujos
Para describir más claramente las soluciones técnicas de la presente invención, a continuación se introducen brevemente los dibujos adjuntos que describen realizaciones de la presente invención o de la técnica anterior. Evidentemente, los dibujos adjuntos en la siguiente descripción muestran tan sólo algunas realizaciones de la presente invención.
La figura 1 es un diagrama estructural esquemático de un sistema en una arquitectura de NVMe sobre tejido en la técnica anterior;
la figura 2 es un diagrama estructural esquemático de un dispositivo de transferencia y procesamiento 202, según una realización de la presente invención;
la figura 3 es un diagrama estructural esquemático de un sistema 200, según una realización de la presente invención;
la figura 4 es un diagrama estructural esquemático de otra implementación de un sistema 200, según una realización de la presente invención;
la figura 5 es un diagrama estructural esquemático de otra implementación más de un sistema 200, según una realización de la presente invención;
la figura 6 es un diagrama de flujo esquemático de una implementación específica de un procedimiento de transferencia de paquetes, según una realización de la presente invención;
la figura 7 es un diagrama estructural esquemático de un dispositivo de transferencia y procesamiento 700 en NVMe sobre tejido, según una realización de la presente invención;
la figura 8 es un diagrama estructural esquemático de un sistema 800 en una NVMe sobre tejido, según una realización de la presente invención; y
la figura 9 es un diagrama de flujo esquemático de un procedimiento de transferencia de paquetes, según una realización de la presente invención.
Descripción de realizaciones
Los términos "primero" y "segundo" en esta solicitud tienen tan sólo propósitos descriptivos, y no se deberán entender como una indicación o implicación de importancia relativa o indicación implícita de una cantidad de características técnicas indicadas.
En una arquitectura de NVMe sobre tejido, para evitar un único punto de fallo en un objetivo, se mejora la fiabilidad por medio de respaldo con redundancia. Además, se puede conseguir un rendimiento superior utilizando trayectos redundantes. Un sistema operativo de un anfitrión determina que cada trayecto está conectado a un disco duro que existe de hecho pero, realmente, llegan múltiples trayectos a un mismo disco duro. Cuando falla uno de los múltiples trayectos, el anfitrión puede llevar a cabo la transmisión utilizando otro trayecto, para mejorar la fiabilidad del sistema. Un fallo de trayecto puede estar provocado por daños en cables, un fallo de conmutación, un fallo de controlador de matriz redundante de discos independientes (inglés: Redundant Array of Independent Disks, RAID) de un dispositivo de almacenamiento objetivo, o similares.
La figura 1 es un diagrama estructural esquemático de un sistema en una arquitectura de NVMe sobre tejido convencional. El sistema incluye un anfitrión 101, un conmutador 102, un conmutador 103, un dispositivo de almacenamiento objetivo 105 y un dispositivo de almacenamiento objetivo de 106. El anfitrión 101 está conectado al dispositivo de almacenamiento objetivo 105 y al dispositivo de almacenamiento objetivo 106 utilizando el conmutador 102 y el conmutador 103, respectivamente. En la figura 1, se realiza la descripción utilizando un ejemplo en el que el sistema incluye un anfitrión, dos conmutadores y dos dispositivos de almacenamiento objetivo, y el anfitrión y todos los dispositivos de almacenamiento objetivo incluyen cada uno dos puertos.
El anfitrión 101 incluye una unidad central de procesamiento (inglés: Central Processing Unit, CPU) 1011, una memoria 1012, un adaptador de bus de anfitrión (inglés: Host Bus Adapter, HBA) 1016 y un bus PCIe 1015. La CPU 1011 y el HBA 1016 están conectados entre sí utilizando el bus PCIe 1015. El HBA 1016 incluye un puerto 1013 y un puerto 1014 que están conectados al conmutador 102 y al conmutador 103, respectivamente.
El dispositivo de almacenamiento objetivo 105 y el dispositivo de almacenamiento objetivo 106 incluyen cada uno una o varias memorias no volátiles. En la figura 1, una memoria no volátil está representada por un disco duro. La memoria no volátil puede ser un disco de estado sólido (inglés: Solid State Disk, SSD) o una unidad de disco duro (inglés: Hard Disk Driver, HDD). El dispositivo de almacenamiento objetivo 105 incluye un puerto 1051 y un puerto 1052. El puerto 1051 y el puerto 1052 están conectados al conmutador 102 y al conmutador 103, respectivamente. El dispositivo de almacenamiento objetivo 106 incluye un puerto 1061 y un puerto 1062 que están conectados al conmutador 102 y al conmutador 103, respectivamente.
En la figura 1, el anfitrión 101 y el dispositivo de almacenamiento objetivo 105 están conectados utilizando dos trayectos. Uno de los trayectos es "puerto 1013 m conmutador 102 m puerto 1051". El otro trayecto es "puerto 1014 m conmutador 103 m puerto 1052". Cuando uno de los trayectos falla, el anfitrión 101 y el dispositivo de almacenamiento objetivo 105 pueden comunicar entre sí utilizando el otro trayecto.
Pueden existir por lo menos dos trayectos entre el anfitrión y el dispositivo de almacenamiento objetivo. Cuando la totalidad de los por lo menos dos trayectos son normales, solamente uno o algunos trayectos activos de los trayectos pueden ser utilizados para transmitir datos, y los otros trayectos son trayectos de espera. Alternativamente, todos o algunos de los trayectos pueden ser utilizados para transmitir datos por medio de compartición de carga.
Cuando el anfitrión 101 está conectado a un mismo disco duro en el dispositivo de almacenamiento objetivo 105 utilizando dos trayectos, un sistema operativo que se ejecuta en el anfitrión 101 determina que el anfitrión 101 está conectado a dos discos duros lógicos en el dispositivo de almacenamiento objetivo utilizando los dos trayectos. Para hacer que el sistema operativo en el anfitrión 101 utilice correctamente los dos discos duros, es necesario desplegar software multitrayecto en el anfitrión 101, de tal modo que el sistema operativo en el anfitrión 101 utiliza los dos discos duros lógicos diferentes como un disco duro físico, para evitar el problema de que se produzca posiblemente una excepción de conexión o una sobreescritura de datos. Sin embargo, desplegar el software multitrayecto en el anfitrión 101 provoca un problema de ajuste de software entre diferentes sistemas operativos, y provoca asimismo un problema de compatibilidad entre el software multitrayecto y software existente en el anfitrión 101.
Para resolver los problemas anteriores, una realización de la presente invención da a conocer un dispositivo de transferencia y procesamiento. El dispositivo de transferencia y procesamiento puede implementar selección de trayecto cuando un anfitrión accede a un dispositivo de almacenamiento objetivo en la NVMe sobre tejido, de tal modo que el anfitrión puede acceder a, o controlar un recurso de almacenamiento por medio de NVMe sobre tejido, simplemente cargando un controlador de protocolo NVMe genérico.
Haciendo referencia a la figura 2, la figura 2 es un diagrama estructural esquemático de un dispositivo de transferencia y procesamiento 202, de acuerdo con una realización de la presente invención. El dispositivo de transferencia y procesamiento 202 incluye un procesador 2021, un puerto de bus 2022, un puerto de red 2024 y un puerto de red 2025. El procesador 2021 está conectado al puerto de bus 2022. El puerto de bus 2022 está conectado, utilizando un bus PCIe, a una CPU de un anfitrión que está en una NVMe sobre tejido y que sirve como un dispositivo de control, y recibe un paquete enviado por la CPU del anfitrión, o envía, a la CPU del anfitrión, un paquete enviado por el dispositivo de transferencia y procesamiento al anfitrión. El puerto de red 2024 y el puerto de red 2025 están conectados a un dispositivo de almacenamiento objetivo utilizando una red, y están configurados para transferir un paquete que es enviado al dispositivo de almacenamiento objetivo mediante el procesador 2021, o recibir un paquete que es enviado al dispositivo de transferencia y procesamiento 202 mediante el dispositivo de almacenamiento objetivo. El procesador 2021 recibe, utilizando el puerto de bus 2022, un primer paquete enviado por la CPU del anfitrión, donde el primer paquete incluye un comando de entrada/salida o un comando de gestión que es compatible con el protocolo NVMe. El procesador 2021 genera, de acuerdo con el comando de entrada/salida o el comando de gestión que es compatible con el protocolo NVMe y que está incluido en el primer paquete, un segundo paquete para ejecutar el comando de entrada/salida o el comando de gestión. Es decir, cuando el primer paquete incluye el comando de entrada/salida, el procesador 2021 genera, de acuerdo con el comando de entrada/salida incluido en el primer paquete, el segundo paquete para ejecutar el comando de entrada/salida, o cuando el primer paquete incluye el comando de gestión, el procesador 2021 genera, de acuerdo con el comando de gestión incluido en el primer paquete, el segundo paquete para ejecutar el comando de gestión. El comando de entrada/salida que es compatible con el protocolo NVMe puede ser un comando de leer datos que es compatible con el protocolo NVMe, un comando de escribir datos que es compatible con el protocolo NVMe, o similares.
El procesador 2021 está configurado además para seleccionar un trayecto para enviar el segundo paquete. Que el procesador 2021 seleccione el trayecto para enviar el segundo paquete puede ser implementado seleccionando un puerto de red para enviar el segundo paquete. Adicionalmente, el procesador 2021 está configurado además para encapsular el segundo paquete en un paquete en una forma que cumple un requisito de transferencia de la red de NVMe sobre tejido, y enviar el segundo paquete encapsulado. Es decir, el procesador 2021 selecciona un puerto de red a partir del puerto de red 2024 y el puerto de red 2025, encapsula el segundo paquete en el paquete en la forma que cumple el requisito de transferencia de la red de NVMe sobre tejido, y envía el segundo paquete encapsulado, utilizando el puerto de red seleccionado.
A continuación se describe en detalle una implementación del dispositivo de transferencia y procesamiento 202 dado a conocer en esta realización de la presente invención, utilizando un ejemplo en el que el dispositivo de transferencia y procesamiento 202 está conectado a un anfitrión y comunica con dos dispositivos de almacenamiento objetivo utilizando dos conmutadores. Haciendo referencia a la figura 3, la figura 3 es un diagrama estructural esquemático de un sistema 200 para implementar control multitrayecto según una realización de la presente invención. En la figura 3, el sistema 200 incluye un anfitrión 201, un conmutador 203, un conmutador 204, un dispositivo de almacenamiento objetivo 205 y un dispositivo de almacenamiento objetivo 206. El anfitrión 201 incluye una CPU 2011, una memoria 2012, un dispositivo de transferencia y procesamiento 202 y un bus 2013. La CPU 2011 y el dispositivo de transferencia y procesamiento 202 están conectados entre sí utilizando el bus 2013. El dispositivo de almacenamiento objetivo 205 y el dispositivo de almacenamiento objetivo 206 incluyen, cada uno, por lo menos un disco duro. Los discos duros pueden ser medios de almacenamiento, tales como SSD o HDD. El dispositivo de almacenamiento objetivo 205 incluye un puerto 2051 y un puerto 2052. El dispositivo de almacenamiento objetivo 206 incluye un puerto 2061 y un puerto 2062.
Un puerto de bus 2022 en el dispositivo de transferencia y procesamiento 202 está conectado al bus en el anfitrión 201, para implementar comunicación entre el dispositivo de transferencia y procesamiento 202 y el anfitrión 201. Un puerto de red 2024 en el dispositivo de transferencia y procesamiento 202 está conectado al conmutador 203, y está conectado, utilizando el conmutador 203, tanto al dispositivo de almacenamiento objetivo 205 como al dispositivo de almacenamiento objetivo 206, es decir, está conectado al puerto 2051 en el dispositivo de almacenamiento objetivo 205 para implementar comunicación entre el dispositivo de transferencia y procesamiento 202 y el dispositivo de almacenamiento objetivo 205, y conectado al puerto 2061 en el dispositivo de almacenamiento objetivo 206 para implementar comunicación entre el dispositivo de transferencia y procesamiento 202 y el dispositivo de almacenamiento objetivo 206. Un puerto de red 2025 en el dispositivo de transferencia y procesamiento 202 está conectado al conmutador 204, y está conectado, utilizando el conmutador 204, tanto al dispositivo de almacenamiento objetivo 205 como al dispositivo de almacenamiento objetivo 206, es decir, conectado al puerto 2052 en el dispositivo de almacenamiento objetivo 205 para implementar comunicación entre el dispositivo de transferencia y procesamiento 202 y el dispositivo de almacenamiento objetivo 205, y conectado al puerto 2062 en el dispositivo de almacenamiento objetivo 206 para implementar comunicación entre el dispositivo de transferencia y procesamiento 202 y el dispositivo de almacenamiento objetivo 206.
Se debe observar que, en la figura 3, la descripción se realiza utilizando un ejemplo en el que el dispositivo de transferencia y procesamiento 202 está conectado al dispositivo de almacenamiento objetivo utilizando dos puertos de red, es decir, el puerto de red 2024 y el puerto de red 2025. En una implementación específica, el dispositivo de transferencia y procesamiento 202 puede estar conectado al dispositivo de almacenamiento objetivo utilizando por lo menos dos puertos de red.
Se puede implementar conexión y comunicación entre el dispositivo de transferencia y procesamiento 202 y el dispositivo de almacenamiento objetivo (tal como el dispositivo de almacenamiento objetivo 205 y el dispositivo de almacenamiento objetivo 206) utilizando una red de tejido, tal como una red iWarp, ROCE, Infiniband, FC u omnitrayecto. El conmutador 203 y el conmutador 204 son conmutadores en una arquitectura de NVMe sobre tejido. Se debe entender que, en la figura 3, la descripción se realiza tan sólo utilizando dos conmutadores (el conmutador 203 y el conmutador 204) como un ejemplo, y en una implementación específica, la comunicación de red entre el dispositivo de transferencia y procesamiento 202 y los dispositivos de almacenamiento objetivo se puede implementar mediante, por lo menos, uno o dos conmutadores.
El puerto de bus 2022 en el dispositivo de transferencia y procesamiento 202 es un puerto de bus PCIe. El bus 2013 en el anfitrión 201 es un bus PCIe. El puerto de bus 2022 comunica con el bus 2013 basándose en el protocolo PCIe.
En esta realización de la presente invención, el puerto de bus 2022 recibe, utilizando el bus 2013, un primer paquete enviado por el anfitrión 201. El primer paquete es un paquete enviado en base al protocolo PCIe, y el primer paquete incluye un comando de entrada/salida o un comando de gestión que es compatible con el protocolo NVMe. El comando de entrada/salida o el comando de gestión que es compatible con el protocolo NVMe incluye una identidad de un disco duro objetivo que está en el dispositivo de almacenamiento objetivo (tal como el dispositivo de almacenamiento objetivo 205 o el dispositivo de almacenamiento objetivo 206) y al cual se tiene que acceder. El comando de entrada/salida se utiliza para escribir datos en el disco duro objetivo o leer datos desde el disco duro objetivo. El comando de gestión incluye, de forma no limitativa: leer información de dispositivo (tal como un número de serie y la temperatura) del disco duro objetivo, añadir o eliminar el disco duro objetivo, y similares. Opcionalmente, el comando de entrada/salida o el comando de gestión que es compatible con el protocolo NVMe puede ser un campo o una carga útil que es compatible con el protocolo NVMe.
Después de recibir el primer paquete, el puerto de bus 2022 obtiene el comando de entrada/salida o el comando de gestión que es compatible con el protocolo NVMe y que está incluido en el primer paquete, y envía, a un procesador 2021, el comando de entrada/salida o el comando de gestión obtenido, que es compatible con el protocolo NVMe. Específicamente, el primer paquete es un paquete PCIe, y el puerto de bus 2022 obtiene el comando de entrada/salida o el comando de gestión que es compatible con el protocolo NVMe y que está incluido en el primer paquete. Por ejemplo, el puerto de bus 2022 puede obtener, de acuerdo con el protocolo PCIe, contenido que es de un campo o de una carga útil relacionado con el protocolo NVMe y que está incluido en el primer paquete utilizado como el paquete PCIe, para obtener el comando de entrada/salida o el comando de gestión que es compatible con el protocolo NVMe y que está incluido en el primer paquete.
El procesador 2021 genera un segundo paquete de acuerdo con el comando de entrada/salida o el comando de gestión que se basa en el protocolo NVMe y que está en el primer paquete recibido. El segundo paquete es un paquete para ejecutar el comando de entrada/salida o el comando de gestión que está incluido en el primer paquete
En una implementación, que el procesador 2021 genere el segundo paquete se puede implementar del siguiente modo: el procesador 2021 genera, de acuerdo con el protocolo NVMe y de acuerdo con el comando de entrada/salida o el comando de gestión que es compatible con el protocolo NVMe y que está incluido en el primer paquete recibido, un paquete que es enviado por el dispositivo de transferencia y procesamiento 202 utilizado como un anfitrión en NVMe sobre tejido y que es para ejecutar el comando de entrada/salida o el comando de gestión que es compatible con el protocolo NVMe y que está incluido en el primer paquete. Por ejemplo, el procesador 2021 genera, de acuerdo con un requisito del protocolo NVMe y de acuerdo con el comando de entrada/salida que es compatible con el protocolo NVMe y que está incluido en el primer paquete recibido, un paquete que es enviado por el dispositivo de transferencia y procesamiento 202 utilizado como un dispositivo de transmisión de datos o un dispositivo de recepción de datos, y que es para ejecutar el comando de entrada/salida que es compatible con el protocolo NVMe y que está incluido en el primer paquete, es decir, genera el segundo paquete. Alternativamente, el procesador 2021 genera, de acuerdo con un requisito del protocolo NVMe y de acuerdo con el comando de gestión que es compatible con el protocolo NVMe y que está incluido en el primer paquete recibido, un paquete que es enviado por el dispositivo de transferencia y procesamiento 202 utilizado como un dispositivo que envía el comando de gestión y que es para ejecutar el comando de gestión que es compatible con el protocolo NVMe y que está incluido en el primer paquete, es decir, genera el segundo paquete.
Además, el procesador 2021 selecciona también, de acuerdo con la identidad del disco duro objetivo, un puerto de red para enviar el segundo paquete, encapsula el segundo paquete en un paquete que cumple un requisito de transferencia de NVMe sobre tejido, y envía el segundo paquete encapsulado, utilizando el puerto de red seleccionado. El procesador 2021 selecciona el puerto de red para enviar el segundo paquete, y puede enviar, utilizando el puerto de red, el segundo paquete por medio de un trayecto. La selección del puerto de red para el segundo paquete puede implementar selección entre múltiples trayectos que pueden llegar al dispositivo de almacenamiento objetivo.
De este modo, no es necesario instalar software multitrayecto en el anfitrión 201, eliminando de ese modo la complejidad provocada por la necesidad de ajustar entre sí varios posibles sistemas operativos durante la instalación del software multitrayecto en el anfitrión 201. Además, solamente es necesario instalar un controlador estándar NVMe genérico con el anfitrión 201 para suministrar el comando de entrada/salida y el comando de gestión NVMe, y no es necesario llevar a cabo un ajuste adaptativo sobre el sistema operativo de acuerdo con un requisito de transferencia específico de una red de NVMe sobre tejido, reduciendo de ese modo coste de mantenimiento del anfitrión 201. Para el anfitrión 201, el dispositivo de transferencia y procesamiento 202 es un dispositivo que es compatible con un estándar NVMe. Un controlador NVMe de código abierto estándar se puede cargar en el sistema operativo del anfitrión 201 para enviar, al dispositivo de transferencia y procesamiento 202, el comando de entrada/salida o el comando de gestión relacionado con NVMe.
Específicamente, las maneras específicas en las que el procesador 2021 genera el segundo paquete difieren en función de si el primer paquete incluye el comando de entrada/salida o el comando de gestión. A continuación se describe por separado una manera en la que el procesador 2021 genera el segundo paquete cuando el primer paquete incluye un comando de escribir datos, un comando de leer datos o un comando de gestión.
Cuando el primer paquete incluye un comando de escribir datos que es compatible con el protocolo NVMe, el comando de escribir datos lleva una SGL (inglés: Scatter Gather List) y la identidad del disco duro objetivo. El disco duro objetivo es un disco duro en el que se tienen que escribir datos, de acuerdo con el comando de escribir datos. En esta realización de la presente invención, los datos que se tienen que escribir en el disco duro objetivo se denominan datos que se tienen que almacenar. La SGL incluye un campo, que puede ser, por ejemplo, una entrada. El campo SGL incluye información, tal como una dirección de espacio de almacenamiento que está en el anfitrión 201 y en la que se almacenan los datos que tienen que ser almacenados, una longitud de los datos que tienen que ser almacenados, y una dirección que está en el disco duro objetivo y que es de los datos que tienen que ser almacenados. Se debe entender que la SGL puede incluir alternativamente múltiples campos, por ejemplo, múltiples entradas. Cada entrada incluye información, tal como una dirección de espacio de almacenamiento que está en el anfitrión 201 y en la que se almacenan los datos que tienen que ser almacenados, una longitud de los datos que tienen que ser almacenados, y una dirección que está en el disco duro objetivo y que es de los datos que tienen que ser almacenados. Cuando los datos que tienen que ser almacenados incluyen múltiples segmentos de dirección, es decir, cuando los datos que tienen que ser almacenados son discontinuos en el anfitrión 201 y existen en múltiples segmentos de dirección, son necesarias múltiples entradas para registrar los datos en los múltiples segmentos de dirección. En esta realización de la presente invención, se realiza una descripción utilizando un ejemplo en el que la SGL incluye una entrada.
Cuando se genera el segundo paquete, el procesador 2021 modifica una dirección en otra dirección para generar el segundo paquete, donde la dirección está contenida en el comando de escribir datos y es del espacio de almacenamiento, en el anfitrión 201, en el que se almacenan los datos que tienen que ser almacenados, y la otra dirección es de espacio de almacenamiento que está en el dispositivo de transferencia y procesamiento 202 y en el que se almacenan los datos que tienen que ser almacenados. Es decir, el segundo paquete generado por el procesador 2021 incluye información, tal como la dirección del espacio de almacenamiento que está en el dispositivo de transferencia y procesamiento 202 y en el que se almacenan los datos que tienen que ser almacenados, la longitud de los datos que tienen que ser almacenados, y la dirección que está en el disco duro objetivo y que es de los datos que tienen que ser almacenados. Específicamente, una SGL en el segundo paquete puede incluir la información, tal como la dirección del espacio de almacenamiento que está en el dispositivo de transferencia y procesamiento 202 y en la que se almacenan los datos que tienen que ser almacenados, la longitud de los datos que tienen que ser almacenados, y la dirección que está en el disco duro objetivo y que es de los datos que tienen que ser almacenados.
La dirección del espacio de almacenamiento que está en el dispositivo de transferencia y procesamiento 202 y en la que se almacenan los datos que tienen que ser almacenados puede ser una dirección de un almacenamiento principal (inglés: primary storage) en el dispositivo de transferencia y procesamiento 202. Tal como se muestra en la figura 4, el dispositivo de transferencia y procesamiento 202 incluye además el almacenamiento principal 2026. El procesador 2021 obtiene, del anfitrión 201 en función de la dirección, incluida en el comando de escribir datos, del espacio de almacenamiento que está en el anfitrión 201 y en la que se almacenan los datos que tienen que ser almacenados, los datos que tienen que ser almacenados; almacena los datos en el almacenamiento principal 2026; y utiliza una dirección que está en el almacenamiento principal 2026 y en la que se almacenan los datos que tienen que ser almacenados como la dirección, incluida en el segundo paquete, del espacio de almacenamiento que está en el dispositivo de transferencia y procesamiento 202 y en la que se almacenan los datos que tienen que ser almacenados.
Opcionalmente, los datos que tienen que ser almacenados y que son obtenidos por el procesador 2021 del anfitrión 201 pueden ser transmitidos por medio de RDMA o DMA. Los datos que tienen que ser almacenados pueden asimismo ser transmitidos entre el dispositivo de transferencia y procesamiento 202 y el dispositivo de almacenamiento objetivo por medio de RDMA o DMA.
Cuando el primer paquete incluye un comando de leer datos que es compatible con el protocolo NVMe, el comando de leer datos lleva una SGL y la identidad del disco duro objetivo. La SGL incluye información, tal como una dirección que está en el disco duro objetivo y que es de datos que hay que leer, la longitud los datos que hay que leer y una dirección del espacio de almacenamiento que está en el anfitrión 201 y en la que se tienen que escribir los datos que hay que leer.
Cuando se genera el segundo paquete, el procesador 2021 modifica una dirección en otra dirección, donde la dirección está contenida en el comando de leer datos y es del espacio de almacenamiento, en el anfitrión 201, en la que se escriben los datos que hay que leer, y la otra dirección es de espacio de almacenamiento que está en el dispositivo de transferencia y procesamiento 202 y en la que se almacenan los datos que se tienen que leer, por ejemplo, una dirección de espacio de almacenamiento que está en el almacenamiento principal 2026 y en la que se almacenan los datos que se tienen que leer. Es decir, el segundo paquete generado por el procesador 2021 incluye información, tal como una dirección de espacio de almacenamiento que está en el disco duro objetivo y que es de los datos que hay que leer, la longitud de los datos que se tienen que leer, y la dirección del espacio de almacenamiento que está en el dispositivo de transferencia y procesamiento 202 y en la que se almacenan los datos que se tienen que leer. Específicamente, una SGL en el segundo paquete puede incluir la información, tal como la dirección del espacio de almacenamiento que está en el disco duro objetivo y que es de los datos que se tienen que leer, la longitud los datos que se tienen que leer, y la dirección del espacio de almacenamiento que está en el dispositivo de transferencia y procesamiento 202 y en la que se almacenan los datos que se tienen que leer.
Cuando el primer paquete incluye el comando de gestión que es compatible con el protocolo NVMe, el comando de gestión es para llevar a cabo una operación de gestión relacionada sobre un disco duro específico, donde un objeto de la operación de gestión es un disco duro objetivo. Además, el comando de gestión puede requerir que se lea información relacionada del disco duro objetivo, o que se envíe información de configuración relacionada al disco duro objetivo. Cuando el comando de gestión requiere que la información de configuración relacionada se envíe al disco duro objetivo, el modo en que el procesador 2021 genera el segundo paquete es similar al modo de generación del segundo paquete según el comando de escribir datos. Cuando el comando de gestión requiere que se lea la información relacionada del disco duro objetivo, un modo en que el procesador 2021 genera el segundo paquete es similar al modo de generación del segundo paquete según el comando de leer datos. No se vuelven a describir los detalles en este caso.
Opcionalmente, cuando el comando de gestión no requiere que se lea o escriba la información de configuración relacionada, el procesador 2021 puede no modificar el comando de gestión, sino generar directamente un segundo paquete utilizado para ejecutar el comando de gestión. Cuando los datos que tienen que ser leídos o escritos están contenidos directamente en el comando de entrada/salida, el procesador 2021 no tiene que modificar la dirección de los datos que tienen que ser leídos o escritos, sino generar directamente un segundo paquete utilizado para ejecutar el comando de entrada/salida que es compatible con el protocolo NVMe y que está en el primer paquete.
Se debe observar que, en la figura 4, un modo en que el dispositivo de transferencia y procesamiento 202 almacena datos se describe tan sólo utilizando el almacenamiento principal como ejemplo. En una implementación específica, el almacenamiento principal 2026 puede ser implementado mediante otro medio de almacenamiento, por ejemplo, un dispositivo o un chip con una función de almacenamiento, tal como un chip FPGA. En la figura 4, la descripción se realiza tan sólo utilizando el almacenamiento principal 2026 como ejemplo. El medio o modo de almacenar datos mediante el dispositivo de transferencia y procesamiento 202 no se limita en esta realización de la presente invención.
En esta realización de la presente invención, que el procesador 2021 seleccione, de acuerdo con la identidad del disco duro objetivo, un puerto de red para enviar el segundo paquete incluye:
determinar, mediante el procesador 2021 según la identidad del disco duro objetivo, puertos de red que pueden llegar al disco duro objetivo, para seleccionar el puerto de red para enviar el segundo paquete. Opcionalmente, el procesador 2021 puede determinar, de acuerdo con la identidad del disco duro objetivo, todos o algunos puertos de red que pueden llegar al disco duro objetivo. Después de terminar todos o algunos de los puertos de red que pueden llegar al disco duro objetivo, el procesador 2021 puede además seleccionar, de acuerdo con una política de selección preestablecida, el puerto de red para enviar el segundo paquete.
A continuación se describe un modo en el que el procesador 2021 selecciona el puerto de red, utilizando un ejemplo en el que dos puertos de red llegan al disco duro objetivo. Por ejemplo, en la figura 3, un trayecto 1 "puerto de red 2024 m conmutador 203 m puerto 2051" y un trayecto 2 "puerto de red 2025 m conmutador 204 m puerto 2052" son trayectos entre el dispositivo de transferencia y procesamiento 202 y un disco duro 01 en el dispositivo de almacenamiento objetivo 205. Puesto que ambos trayectos pueden llegar al disco duro 01, el procesador 2021 registra una correspondencia entre una identidad única del disco duro 01 y el trayecto 1 y el trayecto 2. Cuando el disco duro objetivo es el disco duro 01, el procesador 2021 puede determinar, de acuerdo con la identidad única del disco duro 01, un trayecto conectado al disco duro 01, por ejemplo, determinar qué trayectos pueden llegar al disco duro 01 incluye el trayecto 1 y el trayecto 2. El trayecto 1 incluye el puerto de red 2024, y el trayecto 2 incluye el puerto de red 2025. En este caso, el procesador 2021 determina que los puertos de red que pueden llegar al disco duro objetivo incluye el puerto de red 2024 y el puerto de red 2025, y selecciona a continuación, de acuerdo con la política de selección de trayectos preestablecida, el puerto de red para enviar el comando, es decir, selecciona el puerto de red 2024 o el puerto de red 2025.
Opcionalmente, en esta realización de la presente invención, la identidad del disco duro objetivo es una identidad única del disco duro en el dispositivo de almacenamiento objetivo, e incluye, de forma no limitativa, un número de serie del disco duro, otro código característico único y similares.
En esta realización de la presente invención, la política de selección de trayecto incluye, de forma no limitativa, políticas tales como una política de selección activa/de espera, una política de composición de carga, una política de prioridad y una política de QoS.
La política de selección activa/de espera incluye: seleccionar, por defecto, un puerto de red en un trayecto activo preestablecido como un puerto de red para enviar; cuando el trayecto activo falla, seleccionar un puerto de red en un trayecto de espera como un puerto de red para enviar; y después de que se recupere el trayecto activo, seleccionar un puerto de red en el trayecto activo como un puerto de red para enviar.
La política de compartición de carga incluye: seleccionar por lo menos dos trayectos a partir de por lo menos dos trayectos, y utilizar cada puerto de red en dichos por lo menos dos trayectos como un puerto de red para enviar.
La política de prioridad incluye: si un paquete incluye información de prioridad, seleccionar, de acuerdo con la información de prioridad incluida en el paquete, un puerto de red en un trayecto correspondiente a una prioridad en el paquete como el puerto de red para enviar. Un trayecto con alta prioridad proporciona una alta fiabilidad y/o eficiencia de la transmisión.
La política de QoS incluye: si un paquete incluye información de QoS, seleccionar, de acuerdo con la información de QoS incluida en el paquete, un puerto de red en un trayecto correspondiente a una clase de QoS en el paquete como un puerto de red para enviar. Un trayecto con alta QoS proporciona una alta fiabilidad y/o eficiencia de transmisión.
En esta realización de la presente invención, que el procesador 2021 encapsule el segundo paquete en un paquete que cumple un requisito de transferencia de NVMe sobre tejido, incluye:
encapsular, mediante el procesador 2021 según un protocolo de red utilizado entre el dispositivo de transferencia y procesamiento 202 y el dispositivo de almacenamiento objetivo (tal como el dispositivo de almacenamiento objetivo 205 o el dispositivo de almacenamiento objetivo 206), el segundo paquete en un paquete que cumple un requisito del protocolo de red utilizado entre el dispositivo de transferencia y procesamiento 202 y el dispositivo de almacenamiento objetivo.
El NVMe sobre tejido es un término general de una conexión implementada entre el anfitrión y el dispositivo de almacenamiento objetivo utilizando una red, tal como iWarp, ROCE, Infiniband, FC u omni-trayecto. Por lo tanto, la transmisión entre el anfitrión y el dispositivo de almacenamiento objetivo se implementa utilizando diferentes redes, de acuerdo con casos de implementación específicos. Después de generar el segundo paquete, el procesador 2021 tiene que encapsular el segundo paquete en un paquete en una forma requerida por una red específica utilizada entre el dispositivo de transferencia y procesamiento 202 y el dispositivo de almacenamiento objetivo. Solamente de este modo puede el dispositivo de transferencia y procesamiento 202 enviar el segundo paquete al dispositivo de almacenamiento objetivo utilizando una red de NVMe sobre tejido.
Opcionalmente, el procesador 2021 está configurado además para: gestionar descubrimiento de discos duros, establecimiento de enlace, desconexión de enlace y similares en el dispositivo de almacenamiento objetivo, y proporcionar una interfaz de funciones de gestión en banda o fuera de banda, y similares.
Opcionalmente, en esta realización de la presente invención, cuando el procesador 2021 lleva a cabo una gestión en banda, el procesador 2021 recibe, utilizando el puerto de bus 2022 u otro puerto, el comando de gestión enviado por la CPU 2011, e implementa configuración y gestión de acuerdo con el comando de gestión recibido, o cuando el procesador 2021 lleva a cabo gestión fuera de banda, el procesador 2021 recibe, utilizando un controlador de gestión de placa base (inglés: BMC, baseboard management controller), el comando de gestión enviado por la CPU 2011. Tal como se muestra en la figura 5, el sistema 200 incluye además el BMC 207. El BMC 207 está conectado a la CPU 2011 en el anfitrión 201 utilizando un bus PCIe, tal como el bus 2013. El BMC 207 puede estar conectado además al procesador 2021 en el dispositivo de transferencia y procesamiento 202 utilizando un bus. El bus que conecta el BMC 207 y el procesador 2021 puede ser un circuito inter-integrado (inglés: I2C, Inter-Integrated Circuit), un bus PCIe o similares. El BMC 207 recibe el comando de gestión o configuración suministrado por la CPU 2011, y envía el comando de gestión o configuración recibido al procesador 2021 para su procesamiento. El comando de gestión o configuración suministrado por la CPU 2011 incluye, de forma no limitativa: una configuración de inicialización e interfaz del dispositivo de transferencia y procesamiento 202, y gestión y autenticación de descubrimiento de discos duros, establecimiento de enlace y desconexión de enlace en el dispositivo de almacenamiento objetivo.
Opcionalmente, en la figura 5, se puede incluir además un adaptador de interfaz de red 2023. El adaptador de interfaz de red 2023 está conectado al procesador 2021, y está conectado al puerto de red 2024 y al puerto de red 2025. El adaptador interfaz de red 2023 está configurado para transferir, a una red utilizando el puerto de red 2024 o el puerto de red 2025, el paquete encapsulado por el procesador 2021. Cuando el dispositivo de transferencia y procesamiento 202 incluye el adaptador de interfaz de red 2023, el adaptador de interfaz de red 2023 está configurado para ejecutar algunas funciones de un puerto de red, es decir, transferir el paquete encapsulado por el procesador 2021, de tal modo que el paquete encapsulado por el procesador 2021 puede ser enviado a la red de NVMe sobre tejido utilizando el puerto de red (tal como el puerto de red 2024 o el puerto de red 2025).
En la realización anterior, después de recibir el primer paquete, el puerto de bus 2022 obtiene, de acuerdo con el protocolo PCIe, el comando de entrada/salida o el comando de gestión que es compatible con el protocolo NVMe y que está incluido en el primer paquete, y envía, al procesador 2021, el comando de entrada/salida o el comando de gestión obtenido que es compatible con el protocolo NVMe. En este caso, el puerto de bus 2022 ejecuta microcódigo o un programa que está relacionado con el protocolo PCIe, analiza sintácticamente un paquete PCIe recibido, y obtiene el comando de entrada/salida o el comando de gestión que es compatible con el protocolo NVMe y que está incluido en el paquete PCIe enviado por la CPU 2011 utilizando el bus 2013.
En una implementación específica, el puerto de bus 2022 puede alternativamente no procesar el primer paquete, sino enviar de manera transparente el primer paquete al procesador 2021, y el procesador 2021 obtiene el comando de entrada/salida o el comando de gestión que es compatible con el protocolo NVMe y que está incluido en el primer paquete. En este caso, el procesador 2021 ejecuta el programa relacionado con PCIe, para obtener el comando de entrada/salida o el comando de gestión que es compatible con el protocolo NVMe y que está incluido en el paquete PCIe enviado por la CPU 2011 utilizando el bus 2013.
Además, cuando el dispositivo de transferencia y procesamiento 202 recibe un paquete devuelto por el dispositivo de almacenamiento objetivo, el procesador 2021 recibe el paquete devuelto por el dispositivo de almacenamiento objetivo, y desencapsula el paquete recibido, es decir, desencapsula, de acuerdo con un protocolo de red específico utilizado entre el dispositivo de transferencia y procesamiento 202 y el dispositivo de almacenamiento objetivo, el paquete recibido devuelto por el dispositivo de almacenamiento objetivo. Después de desencapsular el paquete recibido devuelto por el dispositivo de almacenamiento objetivo, el procesador 2021 obtiene información de comandos o información de datos que está incluida en el paquete devuelto por el dispositivo de almacenamiento objetivo, y devuelve la información de comandos obtenida o la información de datos obtenida al anfitrión 201.
A continuación se describe por separado un modo en que el procesador 2021 devuelve al anfitrión 201 la información de comandos obtenida o información de datos obtenida, cuando el paquete devuelto por el dispositivo de almacenamiento objetivo es un paquete devuelto para el comando de escribir datos, un paquete devuelto para el comando de leer datos o un paquete devuelto para el comando de gestión.
Cuando el paquete devuelto por el dispositivo de almacenamiento objetivo es el paquete devuelto para el comando de escribir datos, el paquete devuelto es información de éxito o fallo de escritura de datos, y el procesador 2021 genera, de acuerdo con el paquete devuelto por el dispositivo de almacenamiento objetivo, un comando de respuesta que es compatible con el protocolo NVMe, encapsula el comando de respuesta en un comando de respuesta en una forma que cumple un requisito de transferencia PCIe, y devuelve el comando de respuesta encapsulado al anfitrión 201 utilizando el puerto 2022 u otro puerto que soporte el protocolo PCIe.
Cuando el paquete devuelto por el dispositivo de almacenamiento objetivo son datos devueltos para el comando de leer datos, los datos devueltos son los datos que hay que leer, y el procesador almacena, en el almacenamiento principal 2026, los datos recibidos que se tienen que leer, y devuelve, al anfitrión 201 por medio de CDMA y utilizando el puerto 2022 u otro puerto que soporta el protocolo PCIe, los datos que tienen que leerse y que están almacenados en el almacenamiento principal 2026.
Cuando el paquete devuelto por el dispositivo de almacenamiento objetivo es el paquete devuelto para el comando de gestión, el paquete devuelto puede incluir datos relacionados o solamente un mensaje de respuesta de gestión. Cuando paquete devuelto incluye solamente el mensaje de respuesta de gestión y no incluye datos, un modo en que el procesador 2021 envía el mensaje de respuesta de gestión obtenido al anfitrión 201 es similar al modo utilizado cuando el paquete devuelto es el comando de escribir datos. Cuando el paquete devuelto incluye datos, un modo en que el procesador 2021 envía datos obtenidos e información al anfitrión 201 es similar a un modo de procesamiento utilizado cuando el paquete devuelto es el comando de leer datos. No se vuelven a describir los detalles en este caso.
Opcionalmente, en esta realización de la presente invención, el dispositivo de transferencia y procesamiento 202 puede ser un dispositivo HBA. El procesador 2021 en el dispositivo de transferencia y procesamiento 202 puede ser una CPU (tal como una CPU en una arquitectura ARM o un procesador en una arquitectura que x86), una matriz de puertas programables in situ (inglés: Field Programmable Gate Array, FPGA), un circuito integrado de aplicación específica (inglés: Application-Specific Integrated Circuit, ASIC) o cualquier combinación de los mismos.
Se debe observar que, en esta realización de la presente invención, el paquete, tal como el segundo paquete, puede incluir un comando o datos, o puede incluir tanto un comando como datos. Cualquier implementación que puede implementar transferencia o transmisión del comando, de los datos o de otra información en una arquitectura de NVMe sobre tejido es una implementación del paquete en esta realización de la presente invención.
Utilizando la estructura de sistema mostrada en la figura 3 como ejemplo, a continuación se describe un procedimiento de transferencia de paquetes dado a conocer en una realización de la presente invención.
Tal como se muestra en la figura 6, la figura 6 es un diagrama de flujo esquemático de una implementación específica de un procedimiento de transferencia de paquetes, según una realización de la presente invención. El procedimiento incluye las etapas siguientes.
Etapa 100: un anfitrión 201 genera un primer paquete que es compatible con el protocolo NVMe, y envía el primer paquete a un dispositivo de transferencia y procesamiento 202, donde el primer paquete incluye un comando de entrada/salida o un comando de gestión, y el comando de entrada/salida o el comando de gestión es compatible con el protocolo NVMe e incluye una identidad de un disco duro objetivo al que se tiene que acceder.
Solamente es necesario instalar un controlador estándar NVMe genérico en el anfitrión 201 para añadir, al primer paquete, el comando de entrada/salida o el comando de gestión que es compatible con el protocolo NVMe. Por ejemplo, un controlador NVMe estándar de código abierto se puede cargar en el sistema operativo del anfitrión 201. No es necesario llevar a cabo un ajuste adaptativo específico sobre el anfitrión 201 para una red de NVMe sobre tejido. Además, no es necesario instalar software multitrayecto en el anfitrión 201, eliminando de ese modo el problema de que el software multitrayecto necesita ser compatible con diferentes versiones de sistema operativo durante la instalación del software multitrayecto.
Además, un bus 2013 es un bus basado en el protocolo PCIe, y el anfitrión 201 puede enviar, en base al bus PCIe, un paquete basado en PCIe al dispositivo de transferencia y procesamiento 202. Es decir, una CPU 2011 envía, al dispositivo de transferencia y procesamiento 202 utilizando el bus 2013, el primer paquete obtenido después del encapsulamiento utilizando el protocolo PCIe.
Etapa 102: el dispositivo de transferencia y procesamiento 202 recibe el primer paquete, y obtiene la identidad del disco duro objetivo y obtiene el comando de entrada/salida o el comando de gestión, donde el comando de entrada/salida o el comando de gestión es compatible con el protocolo NVMe y está incluido en el primer paquete.
Específicamente, un puerto de bus 2022 es un puerto que soporta el protocolo PCIe, es decir, el puerto de bus 2022 está conectado físicamente al bus 2013 utilizando el protocolo PCIe. En este caso, el dispositivo de transferencia y procesamiento 202 puede recibir, utilizando el puerto de bus 2022, el primer paquete que se obtiene después del encapsulamiento utilizando el protocolo PCIe y que es enviado por la CPU 2011.
En una implementación específica, después de recibir el primer paquete, el puerto de bus 2022 puede obtener el comando de entrada/salida o el comando de gestión que es compatible con el protocolo NVMe y que está incluido en el primer paquete, y enviar, a un procesador 2021, el comando de entrada/salida o el comando de gestión obtenido que es compatible con el protocolo NVMe. Alternativamente, el puerto de bus 2022 puede enviar directamente el primer paquete a un procesador 2021, y el procesador 2021 obtiene el comando de entrada/salida o el comando de gestión que es compatible con el protocolo NVMe y que está incluido en el primer paquete.
Etapa 104: el dispositivo de transferencia y procesamiento 202 genera un segundo paquete de acuerdo con el comando de entrada/salida o el comando de gestión, donde el comando de entrada/salida o el comando de gestión es compatible con el protocolo NVMe y está incluido en el primer paquete, y el segundo paquete es un paquete para ejecutar el comando de entrada/salida o el comando de gestión, y selecciona, de acuerdo con la identidad del disco duro objetivo, un puerto de red para transferir el segundo paquete.
El modo en que el procesador 2021 genera el segundo paquete es similar al modo anterior implementado por la CPU 2021 cuando el comando de entrada/salida o el comando de gestión que es compatible con el protocolo NVMe y que está en el primer paquete es un comando de escribir datos, un comando de leer datos o un comando de gestión. No se vuelven a describir los detalles en este caso.
Que el procesador 2021 seleccione, de acuerdo con la identidad del disco duro objetivo, el puerto de red para transferir el segundo paquete, es similar al modo anterior de selección del puerto de red para transferir el segundo paquete. No se vuelven a describir los detalles en este caso.
Etapa 106: el dispositivo de transferencia y procesamiento 202 encapsula el segundo paquete en un paquete que cumple un requisito de transferencia de NVMe sobre tejido, y envía el segundo paquete encapsulado utilizando el puerto de red seleccionado.
Específicamente, el procesador 2021 en el dispositivo de transferencia y procesamiento 202 encapsula, de acuerdo con un protocolo de red utilizado entre el dispositivo de transferencia y procesamiento 202 y un dispositivo de almacenamiento objetivo (tal como un dispositivo de almacenamiento objetivo 205 o un dispositivo de almacenamiento objetivo 206), el segundo paquete en un paquete que cumple un requisito del protocolo de red utilizado entre el dispositivo de transferencia y procesamiento 202 y el dispositivo de almacenamiento objetivo.
De acuerdo con el procedimiento anterior, no es necesario instalar software multitrayecto en el anfitrión 201, eliminando de ese modo la complejidad provocada por la necesidad de ajustar entre sí varios posibles sistemas operativos durante la instalación del software multitrayecto en el anfitrión 201. Además, solamente es necesario instalar un controlador estándar NVMe genérico en el anfitrión 201 para suministrar el comando de entrada/salida y el comando de gestión NVMe, y no es necesario llevar a cabo un ajuste adaptativo sobre un sistema operativo de acuerdo con un requisito de transferencia específico de una red de NVMe sobre tejido, reduciendo de ese modo costes de mantenimiento del anfitrión 201. Para el anfitrión 201, el dispositivo de transferencia y procesamiento 202 es un dispositivo que es compatible con un estándar NVMe. Un controlador NVMe de código abierto estándar se puede cargar en el sistema operativo del anfitrión 201 para enviar, al dispositivo de transferencia y procesamiento 202, el comando de entrada/salida o el comando de gestión relacionado con NVMe.
Además, el procedimiento anterior incluye también la etapa 108 (no mostrada en la figura): cuando el dispositivo de transferencia y procesamiento 202 recibe un mensaje de respuesta o datos devueltos por el dispositivo de almacenamiento objetivo (tal como en dispositivo de almacenamiento objetivo 205 o el dispositivo de almacenamiento objetivo 206), el procesador 2021 recibe un paquete devuelto por el dispositivo de almacenamiento objetivo, desencapsula el paquete recibido y devuelve al anfitrión 201 el mensaje de respuesta o los datos obtenidos después del desencapsulamiento. Es decir, el procesador 2021 desencapsula, de acuerdo con el protocolo de red específico utilizado entre el dispositivo de transferencia y procesamiento 202 y el dispositivo de almacenamiento objetivo, el paquete recibido devuelto por el dispositivo de almacenamiento objetivo, obtiene el mensaje de respuesta o los datos que están incluidos en el paquete devuelto por el dispositivo de almacenamiento objetivo, y devuelve el mensaje de respuesta obtenido o los datos al anfitrión 201.
Haciendo referencia a la figura 7, la figura 7 es un diagrama estructural esquemático de un dispositivo de transferencia y procesamiento 700 en NVMe sobre tejido, de acuerdo con una realización de la presente invención. El dispositivo de transferencia y procesamiento 700 incluye un procesador 701, un puerto de bus 702 y por lo menos dos puertos de red: un puerto de red 703 y un puerto de red 704. El puerto de bus 702 está conectado a un bus PCIe. El puerto de red 703 y el puerto de red 704 están conectados, cada uno, a una red. El procesador 701 está configurado para llevar a cabo las etapas siguientes:
recibir, utilizando el puerto de bus 702, un primer paquete enviado por un dispositivo de control en la NVMe sobre tejido, y obtener un comando de entrada/salida o un comando de gestión que es compatible con el protocolo NVMe y que está incluido en el primer paquete, donde el comando de entrada/salida o el comando de gestión incluye una identidad de un disco duro objetivo al que se tiene que acceder;
generar un segundo paquete de acuerdo con el comando de entrada/salida o el comando de gestión, donde el comando de entrada/salida o el comando de gestión es compatible con el protocolo NVMe y está incluido en el primer paquete, y el segundo paquete es un paquete para ejecutar el comando de entrada/salida o el comando de gestión;
obtener, de acuerdo con la identidad del disco duro objetivo, múltiples puertos de red que están en los, por lo menos, dos puertos de red y que pueden llegar al disco duro objetivo, y seleccionar, a partir de los múltiples puertos de red, un puerto de red para transferir el segundo paquete; y
encapsular el segundo paquete en un paquete que cumple un requisito de transferencia de NVMe sobre tejido, y enviar el segundo paquete encapsulado, utilizando el puerto de red seleccionado.
Específicamente, el dispositivo de transferencia y procesamiento 700 se puede implementar haciendo referencia a la implementación del dispositivo de transferencia y procesamiento 202 en las figuras 2 a 5, o se puede implementar haciendo referencia a la implementación del dispositivo de transferencia y procesamiento 202 de la figura 6. No se vuelven a describir los detalles en este caso. Por ejemplo, el puerto de bus 702 se puede implementar haciendo referencia a la implementación del puerto de bus 2022 en las figuras 2 a 5, y el puerto de red 703 o el puerto de red 704 se puede implementar haciendo referencia a la implementación del puerto de red 2024 o del puerto de red 2025 en las figuras 2 a 5. No se vuelven a describir los detalles en este caso.
Haciendo referencia a la figura 8, la figura 8 es un diagrama estructural esquemático de un sistema 800 en NVMe sobre tejido, según una realización de la presente invención. Tal como se muestra en la figura 8, el sistema 800 incluye un dispositivo de transferencia y procesamiento 801 y un dispositivo de control 802. El dispositivo de transferencia y procesamiento 801 y el dispositivo de control 802 están conectados utilizando un bus PCIe.
El dispositivo de control 802 está configurado para enviar un primer paquete al dispositivo de transferencia y procesamiento 801 utilizando el bus PCIe, donde el primer paquete incluye un comando de entrada/salida o un comando de gestión, y el comando de entrada/salida o el comando de gestión es compatible con el protocolo NVMe e incluye una identidad de un disco duro objetivo al que se tiene que acceder.
El dispositivo de transferencia y procesamiento 801 está configurado para: recibir el primer paquete; obtener la identidad del disco duro objetivo y obtener el comando de entrada/salida o el comando de gestión, donde el comando de entrada/salida o el comando de gestión es compatible con el protocolo NVMe y está incluido en el primer paquete; generar un segundo paquete de acuerdo con el comando de entrada/salida o el comando de gestión que es compatible con el protocolo NVMe, donde el segundo paquete es un paquete para ejecutar el comando de entrada/salida o el comando de gestión; obtener, de acuerdo con la identidad del disco duro objetivo, múltiples puertos de red que están en los por lo menos dos puertos de red y que pueden llegar al disco duro objetivo; seleccionar, a partir de los múltiples puertos de red, un puerto de red para transferir el segundo paquete, encapsular el segundo paquete en un paquete que cumple un requisito de transferencia de NVMe sobre tejido; y enviar el segundo paquete encapsulado utilizando el puerto de red seleccionado.
Específicamente, el sistema 800 se puede implementar haciendo referencia a la implementación del sistema 200 en las figuras 3 a 5. Es decir, el dispositivo de transferencia y procesamiento 801 se puede implementar haciendo referencia a la implementación del dispositivo de transferencia y procesamiento 202 en las figuras 3 a 5, y el dispositivo de control 802 se puede implementar haciendo referencia a la implementación del anfitrión 201 en las figuras 3 a 5. Alternativamente, el sistema 800 se puede implementar haciendo referencia a la implementación de la figura 6. No se vuelven a describir los detalles en este caso.
Haciendo referencia a la figura 9, la figura 9 es un diagrama de flujo esquemático de un procedimiento de transferencia de paquetes según una realización de la presente invención. El procedimiento se aplica a transferencia de paquetes en NVMe sobre tejido. La arquitectura de NVMe sobre tejido incluye además un dispositivo de transferencia y procesamiento y un dispositivo de control. Tal como se muestra en la figura 9, el procedimiento incluye las etapas siguientes.
Etapa 900: el dispositivo de transferencia y procesamiento recibe un primer paquete enviado por el dispositivo de control, y obtiene un comando de entrada/salida o un comando de gestión que es compatible con el protocolo NVMe y que está incluido en el primer paquete, donde el comando de entrada/salida o el comando de gestión incluye una identidad de un disco duro objetivo al que se tiene que acceder.
Etapa 902: generar un segundo paquete según el comando de entrada/salida o el comando de gestión, donde el comando de entrada/salida o el comando de gestión es compatible con el protocolo NVMe y está incluido en el primer paquete, y el segundo paquete es un paquete para ejecutar el comando de entrada/salida o el comando de gestión.
Etapa 904: obtener, de acuerdo con la identidad del disco duro objetivo, múltiples puertos de red que están en los por lo menos dos puertos de red y que pueden llegar al disco duro objetivo, y seleccionar, a partir de los múltiples puertos de red, un puerto de red para transferir el segundo paquete.
Etapa 906: encapsular el segundo paquete en un paquete que cumple un requisito de transferencia de NVMe sobre tejido, y enviar el segundo paquete encapsulado, utilizando el puerto de red seleccionado.
Se puede implementar asimismo una implementación específica del proceso mostrado en la figura 9, haciendo referencia a la implementación descrita en las figuras 2 a 6. No se vuelven a describir los detalles en este caso.
Los procedimientos o etapas descritos en el contenido dado a conocer de las realizaciones de la presente invención se pueden implementar mediante hardware, o se pueden implementar mediante un procesador que ejecuta una instrucción de software. La instrucción de software puede estar formada por un correspondiente módulo de software. El módulo de software se puede almacenar en una memoria de acceso aleatorio (inglés: Random Access Memory, RAM), una memoria flash, una memoria de sólo lectura (inglés: Read-Only Memory, ROM), una memoria de sólo lectura programable borrable (inglés: Erasable Programmable ROM, EPROM), una memoria de sólo lectura programable borrable eléctricamente (inglés: Electrically EPROM, EEPROM), un disco duro, un disco óptico o un medio de almacenamiento en cualquier otro formato que sea bien conocido en la técnica. Por ejemplo, un medio de almacenamiento está acoplado a un procesador, de tal modo que el procesador puede leer información del medio de almacenamiento o escribir información en el medio de almacenamiento. Por supuesto, el medio de almacenamiento puede ser un componente del procesador.
Las unidades descritas como partes independientes pueden o no ser físicamente independientes, y las partes mostradas como unidades pueden estar situadas en una posición, o pueden estar distribuidas en una serie de unidades de red. Algunas o todas las unidades se pueden seleccionar en función de necesidades reales para conseguir los objetivos de las soluciones de las realizaciones de la presente invención.
Las anteriores descripciones son tan sólo realizaciones específicas de la presente invención, pero no están destinadas a limitar la presente invención.

Claims (15)

REIVINDICACIONES
1. Un dispositivo de transferencia y procesamiento (700) en memoria no volátil exprés sobre tejido, NVMe sobre tejido, en el que el dispositivo de transferencia y procesamiento (700) comprende un procesador (701), un puerto de bus (702) y por lo menos dos puertos de red (703, 704), donde el puerto de bus (702) está conectado a un bus de interconexión de componentes periféricos exprés, PCIe, los por lo menos dos puertos de red (703, 704) están conectados por separado a una red, y el procesador (701) está configurado para:
recibir, utilizando el puerto de bus, un primer paquete enviado por un dispositivo de control en la NVMe sobre tejido, y obtener un comando de entrada/salida o un comando de gestión, donde el comando de entrada/salida o el comando de gestión es compatible con el protocolo NVMe, está comprendido en el primer paquete y comprende una identidad de un disco duro objetivo al que se tiene que acceder;
generar un segundo paquete de acuerdo con el comando de entrada/salida o el comando de gestión, donde el comando de entrada/salida o el comando de gestión es compatible con el protocolo NVMe y está comprendido en el primer paquete, y el segundo paquete es un paquete para ejecutar el comando de entrada/salida o el comando de gestión;
obtener, de acuerdo con la identidad del disco duro objetivo, múltiples puertos de red que están en los, por lo menos, dos puertos de red y que pueden llegar al disco duro objetivo, y seleccionar, a partir de los múltiples puertos de red, un puerto de red para transferir el segundo paquete; y
encapsular el segundo paquete en un paquete que cumple un requisito de transferencia de NVMe sobre tejido, y enviar el segundo paquete encapsulado, utilizando el puerto de red seleccionado.
2. El dispositivo de transferencia y procesamiento (700) según la reivindicación 1, en el que el puerto de bus (702) soporta el protocolo PCIe; y
el puerto de bus (702) está configurado para: recibir el primer paquete enviado por el dispositivo de control, obtener el comando de entrada/salida o el comando de gestión que es compatible con el protocolo NVMe y que está comprendido en el primer paquete, y enviar, al procesador (701), el comando de entrada/salida o el comando de gestión obtenido que es compatible con el protocolo NVMe y que está en el primer paquete; o
el puerto de bus (702) está configurado para: recibir el primer paquete enviado por el dispositivo de control, y enviar el primer paquete al procesador (701), donde el procesador (701) obtiene el comando de entrada/salida o el comando de gestión que es compatible con el protocolo NVMe y que está comprendido en el primer paquete.
3. El dispositivo de transferencia y procesamiento (700) según la reivindicación 1 o 2, en el que el primer paquete comprende un comando de escribir datos, el procesador (701) modifica una dirección en otra dirección para generar el segundo paquete, en el que la dirección está contenida en el comando de escribir datos y es de espacio de almacenamiento, de datos que se tienen que almacenar, en el dispositivo de control, y la otra dirección es de espacio de almacenamiento que está en el dispositivo de transferencia y procesamiento (700) y en la que se almacenan los datos que tienen que ser almacenados; o
cuando el primer paquete comprende el comando de gestión y el comando de gestión requiere que se escriban datos de gestión en el disco duro objetivo, el procesador (701) modifica una dirección en otra dirección para generar el segundo paquete, donde la dirección está contenida en el comando de gestión y es de espacio de almacenamiento que es de los datos de gestión y que está en el dispositivo de control, y la otra dirección es de espacio de almacenamiento en el que se almacenan los datos de gestión y que está en el dispositivo de transferencia y procesamiento (700).
4. El dispositivo de transferencia y procesamiento (700) según la reivindicación 1 o 2, en el que cuando el primer paquete comprende un comando de leer datos, el procesador (701) modifica una dirección en otra dirección para generar el segundo paquete, en el que la dirección está contenida en el comando de leer datos y es de espacio de almacenamiento, en el dispositivo de control, en la que se han de escribir los datos que se tienen que leer, y la otra dirección es de espacio de almacenamiento que está en el dispositivo de transferencia y procesamiento (700) y en la que se almacenan los datos que se tienen que leer; o
cuando el primer paquete comprende el comando de gestión y el comando de gestión requiere que se lean datos de gestión, el procesador (701) modifica una dirección en otra dirección para generar el segundo paquete, donde la dirección está contenida en el comando de gestión y es de espacio de almacenamiento en el que se tienen que escribir los datos de gestión y que está en el dispositivo de control, y la otra dirección es de espacio de almacenamiento en el que se almacenan los datos de gestión y que está en el dispositivo de transferencia y procesamiento (700).
5. El dispositivo de transferencia y procesamiento (700) según una cualquiera de las reivindicaciones 1 a 4, en el que encapsular el segundo paquete en un paquete que cumple un requisito de transferencia de NVMe sobre tejido comprende:
encapsular, de acuerdo con un protocolo de red utilizado entre el dispositivo de transferencia y procesamiento (700) y un dispositivo de almacenamiento objetivo, el segundo paquete en un paquete que cumple un requisito del protocolo de red utilizado entre el dispositivo de transferencia y procesamiento (700) y el dispositivo de almacenamiento objetivo.
6. Un sistema (800) en memoria no volátil exprés sobre tejido, NVMe sobre tejido, en el que el sistema (800) comprende un dispositivo de control (802) y un dispositivo de transferencia y procesamiento (700, 801) según la reivindicación 1, y el dispositivo de transferencia y procesamiento (700, 801) y el dispositivo de control (802) están conectados utilizando un bus de interconexión de componentes periféricos exprés, PCIe, en el que
el dispositivo de control (802) está configurado para enviar un primer paquete al dispositivo de transferencia y procesamiento (700, 801) utilizando el bus PCIe, en el que el primer paquete comprende un comando de entrada/salida o un comando de gestión, y el comando de entrada/salida o el comando de gestión es compatible con el protocolo NVMe y comprende una identidad de un disco duro objetivo al que se tiene que acceder; y
el dispositivo de transferencia y procesamiento (700, 801) está configurado para: recibir el primer paquete; obtener la identidad del disco duro objetivo y obtener el comando de entrada/salida o el comando de gestión, donde el comando de entrada/salida o el comando de gestión es compatible con el protocolo NVMe y está comprendido en el primer paquete; generar un segundo paquete de acuerdo con el comando de entrada/salida o el comando de gestión que es compatible con el protocolo NVMe, donde el segundo paquete es un paquete para ejecutar el comando de entrada/salida o el comando de gestión; obtener, de acuerdo con la identidad del disco duro objetivo, múltiples puertos de red que están en los por lo menos dos puertos de red y que pueden llegar al disco duro objetivo; seleccionar, a partir de los múltiples puertos de red, un puerto de red para transferir el segundo paquete, encapsular el segundo paquete en un paquete que cumple el requisito de transferencia de NVMe sobre tejido; y enviar el segundo paquete encapsulado utilizando el puerto de red seleccionado.
7. El sistema (800) según la reivindicación 6, en el que el dispositivo de transferencia y procesamiento (700, 801) comprende un procesador, un puerto de bus, y los por lo menos dos puertos de red, en el que el puerto de bus está conectado al bus PCIe, los por lo menos dos puertos de red están conectados a una red, y el procesador está configurado para:
recibir, utilizando el puerto de bus, el primer paquete enviado por el dispositivo de control (802), y obtener el comando de entrada/salida o el comando de gestión que es compatible con el protocolo NVMe y que está comprendido en el primer paquete;
generar el segundo paquete de acuerdo con el comando de entrada/salida o el comando de gestión, donde el comando de entrada/salida o el comando de gestión es compatible con el protocolo NVMe y está comprendido en el primer paquete, y el segundo paquete es el paquete para ejecutar el comando de entrada/salida o el comando de gestión;
obtener, de acuerdo con la identidad del disco duro objetivo, los puertos de red que pueden llegar al disco duro objetivo, y seleccionar, a partir de los puertos de red que pueden llegar al disco duro objetivo, el puerto de red para transferir el segundo paquete; y
encapsular el segundo paquete en el paquete que cumple el requisito de transferencia de NVMe sobre tejido, y enviar el segundo paquete encapsulado, utilizando el puerto de red seleccionado.
8. El sistema (800) según la reivindicación 7, en el que el puerto de bus soporta protocolo PCIe; y
el puerto de bus está configurado para: recibir el primer paquete enviado por el dispositivo de control (802), obtener el comando de entrada/salida o el comando de gestión que es compatible con el protocolo NVMe y que está comprendido en el primer paquete, y enviar, al procesador, el comando de entrada/salida o el comando de gestión obtenido que es compatible con el protocolo NVMe y que está en el primer paquete; o
el puerto de bus está configurado para recibir el primer paquete enviado por el dispositivo de control (802), y enviar el primer paquete al procesador, en el que el procesador obtiene el comando de entrada/salida o el comando de gestión que es compatible con el protocolo NVMe y que está comprendido en el primer paquete.
9. El sistema (800) según la reivindicación 7 o 8, en el que cuando el primer paquete comprende un comando de escribir datos, el procesador modifica una dirección en otra dirección para generar el segundo paquete, en el que la dirección está contenida en el comando de escribir datos y es de espacio de almacenamiento, de datos que se tienen que almacenar, en el dispositivo de control (802), y la otra dirección es de espacio de almacenamiento que está en el dispositivo de transferencia y procesamiento (700, 801) y en la que se almacenan los datos que tienen que ser almacenados; o
cuando el primer paquete comprende el comando de gestión y el comando de gestión requiere que se escriban datos de gestión en el disco duro objetivo, el procesador modifica una dirección en otra dirección para generar el segundo paquete, donde la dirección está contenida en el comando de gestión y es de espacio de almacenamiento que es de los datos de gestión y que está en el dispositivo de control, y la otra dirección es de espacio de almacenamiento en el que se almacenan los datos de gestión y que está en el dispositivo de transferencia y procesamiento (700, 801).
10. El sistema (800) según la reivindicación 7 u 8, en el que cuando el primer paquete comprende un comando de leer datos, el procesador modifica una dirección en otra dirección para generar el segundo paquete, en el que la dirección está contenida en el comando de leer datos y es de espacio de almacenamiento, en el dispositivo de control, en la que se han de escribir los datos que tienen que ser leídos, y la otra dirección es de espacio de almacenamiento que está el dispositivo de transferencia y procesamiento (700, 801) y en la que se almacenan los datos que se tienen que leer; o
cuando el primer paquete comprende el comando de gestión y el comando de gestión requiere que se lean datos de gestión, el procesador modifica una dirección en otra dirección para generar el segundo paquete, donde la dirección está contenida en el comando de gestión y es de espacio de almacenamiento en el que se tienen que escribir los datos de gestión y que está en el dispositivo de control, y la otra dirección es de espacio de almacenamiento en el que se almacenan los datos de gestión y que está en el dispositivo de transferencia y procesamiento (700, 801).
11. El sistema (800) según una cualquiera de las reivindicaciones 6 a 10, en el que el encapsulamiento del segundo paquete en un paquete que cumple un requisito de transferencia de NVMe sobre tejido comprende:
encapsular, de acuerdo con un protocolo de red utilizado entre el dispositivo de transferencia y procesamiento (700, 801) y un dispositivo de almacenamiento objetivo, el segundo paquete en un paquete que cumple un requisito del protocolo de red utilizado entre el dispositivo de transferencia y procesamiento (801) y el dispositivo de almacenamiento objetivo.
12. Un procedimiento de transferencia de paquetes, donde el procedimiento se aplica a transferencia de paquetes en memoria no volátil exprés sobre tejido, NVMe sobre tejido, el NVMe sobre tejido comprende un dispositivo de transferencia y procesamiento y un dispositivo de control, y el procedimiento comprende:
recibir (900), mediante el dispositivo de transferencia y procesamiento, un primer paquete enviado por el dispositivo de control, y obtener un comando de entrada/salida o un comando de gestión que es compatible con el protocolo NVMe y que está comprendido en el primer paquete, donde el comando de entrada/salida o el comando de gestión comprende una identidad de un disco duro objetivo al que se tiene que acceder,
generar (902) un segundo paquete de acuerdo con el comando de entrada/salida o el comando de gestión, donde el comando de entrada/salida o el comando de gestión es compatible con el protocolo NVMe y está comprendido en el primer paquete, y el segundo paquete es un paquete para ejecutar el comando de entrada/salida o el comando de gestión;
obtener (904), de acuerdo con la identidad del disco duro objetivo, múltiples puertos de red que están en los, por lo menos, dos puertos de red y que pueden llegar al disco duro objetivo, y seleccionar, a partir de los múltiples puertos de red, un puerto de red para transferir el segundo paquete; y
encapsular (906) el segundo paquete en un paquete que cumple un requisito de transferencia de NVMe sobre tejido, y enviar el segundo paquete encapsulado, utilizando el puerto de red seleccionado.
13. El procedimiento según la reivindicación 12, en el que obtener un comando de entrada/salida o un comando de gestión que es compatible con el protocolo NVMe y que está comprendido en el primer paquete, comprende:
recibir, mediante el dispositivo de transferencia y procesamiento utilizando un puerto que soporta el protocolo de interconexión de componentes periféricos exprés, PCIe, el primer paquete enviado por el dispositivo de control utilizando un bus PCIe, y obtener el comando de entrada/salida o el comando de gestión que es compatible con el protocolo NVMe y que está comprendido en el primer paquete.
14. El procedimiento según la reivindicación 12 o 13, en el que generar el segundo paquete de acuerdo con el comando de entrada/salida o el comando de gestión que es compatible con el protocolo NVMe y que está comprendido en el primer paquete, comprende:
cuando el primer paquete comprende un comando de escribir datos, modificar, mediante un procesador, una dirección en otra dirección para generar el segundo paquete, donde la dirección está contenida en el comando de escribir datos y es de espacio de almacenamiento, de datos que tienen que ser almacenados, en el dispositivo de control, y la otra dirección es de espacio de almacenamiento que está en el dispositivo de transferencia y procesamiento y en el que se almacenan los datos que tienen que ser almacenados; o
cuando el primer paquete comprende el comando de gestión y el comando de gestión requiere que se escriban datos de gestión en el disco duro objetivo, modificar, mediante el procesador, una dirección en otra dirección para generar el segundo paquete, donde la dirección está contenida en el comando de gestión y es de espacio de almacenamiento que es de los datos de gestión y que está en el dispositivo de control, y la otra dirección es de espacio de almacenamiento en el que se almacenan los datos de gestión y que está en el dispositivo de transferencia y procesamiento.
15. El procedimiento según la reivindicación 12 o 13, en el que generar un segundo paquete de acuerdo con el comando de entrada/salida o el comando de gestión que es compatible con el protocolo NVMe y que está en el primer paquete, comprende:
cuando el primer paquete comprende un comando de leer datos, modificar, mediante el procesador, una dirección en otra dirección para generar el segundo paquete, donde la dirección está contenida en el comando de leer datos y es de espacio de almacenamiento, en el dispositivo de control, en la que se escriben los datos que tienen que ser leídos, y la otra dirección es de espacio de almacenamiento que está en el dispositivo de transferencia y procesamiento y en la que se almacenan los datos que se tienen que leer; o
cuando el primer paquete comprende el comando de gestión y el comando de gestión requiere que se lean datos de gestión, modificar, mediante el procesador, una dirección en otra dirección para generar el segundo paquete, donde la dirección está contenida en el comando de gestión y es de espacio de almacenamiento en el que se tienen que escribir los datos de gestión y que está en el dispositivo de control, y la otra dirección es de espacio de almacenamiento en el que se almacenan los datos de gestión y que está en el dispositivo de transferencia y procesamiento.
ES16909743T 2016-12-28 2016-12-28 Procedimiento, dispositivo y sistema para transferencia de paquetes en NVME sobre tejido Active ES2800064T3 (es)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2016/112630 WO2018119742A1 (zh) 2016-12-28 2016-12-28 NVMe over Fabric中转发报文的方法、设备和系统

Publications (1)

Publication Number Publication Date
ES2800064T3 true ES2800064T3 (es) 2020-12-23

Family

ID=61600924

Family Applications (1)

Application Number Title Priority Date Filing Date
ES16909743T Active ES2800064T3 (es) 2016-12-28 2016-12-28 Procedimiento, dispositivo y sistema para transferencia de paquetes en NVME sobre tejido

Country Status (5)

Country Link
US (2) US10585628B2 (es)
EP (2) EP3367635B1 (es)
CN (2) CN112422394B (es)
ES (1) ES2800064T3 (es)
WO (1) WO2018119742A1 (es)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10733137B2 (en) * 2017-04-25 2020-08-04 Samsung Electronics Co., Ltd. Low latency direct access block storage in NVME-of ethernet SSD
US10310745B2 (en) 2017-05-19 2019-06-04 Samsung Electronics Co., Ltd. Method and apparatus for fine tuning and optimizing NVMe-oF SSDs
US11003618B1 (en) * 2017-06-27 2021-05-11 Amazon Technologies, Inc. Out-of-band interconnect control and isolation
KR102646616B1 (ko) * 2018-06-15 2024-03-11 삼성전자주식회사 판독 명령 실행을 위한 NVMeoF RAID 구현 방법
CN109983449B (zh) * 2018-06-30 2022-03-29 华为技术有限公司 数据处理的方法和存储系统
CN110941576B (zh) * 2018-09-21 2021-11-19 苏州库瀚信息科技有限公司 具有多模pcie功能的存储控制器的系统、方法和设备
CN109814845B (zh) * 2019-01-30 2022-02-18 郑州云海信息技术有限公司 一种基于OOP编程的NVMe模型
US11068424B2 (en) * 2019-02-04 2021-07-20 American Megatrends International, Llc Enablement of software defined storage solution for NVME over ethernet fabric management on a processor
CN113452538B (zh) 2020-03-26 2022-12-13 华为技术有限公司 控制设备、执行设备、设备管理方法和设备管理系统
CN112291259B (zh) * 2020-11-12 2022-05-10 苏州浪潮智能科技有限公司 一种协议转换方法、网关、设备及可读存储介质
CN112506744B (zh) * 2020-12-11 2023-08-25 浪潮电子信息产业股份有限公司 一种NVMe硬盘的运行状态监测方法、装置及设备
US11829602B2 (en) * 2022-03-16 2023-11-28 Dell Products L.P. Intelligent path selection in a distributed storage system

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1296845C (zh) * 2003-01-24 2007-01-24 华为技术有限公司 一种磁盘存储系统
US8145785B1 (en) * 2004-02-13 2012-03-27 Habanero Holdings, Inc. Unused resource recognition in real time for provisioning and management of fabric-backplane enterprise servers
US8351442B1 (en) * 2008-07-18 2013-01-08 Qlogic, Corporation Method and system for network communication
CN101763221B (zh) * 2008-12-24 2013-01-30 成都市华为赛门铁克科技有限公司 一种存储方法、存储系统及控制器
US9467512B2 (en) * 2012-01-17 2016-10-11 Intel Corporation Techniques for remote client access to a storage medium coupled with a server
CN103019622B (zh) * 2012-12-04 2016-06-29 华为技术有限公司 一种数据的存储控制方法、控制器、物理硬盘,及系统
US10063638B2 (en) * 2013-06-26 2018-08-28 Cnex Labs, Inc. NVM express controller for remote access of memory and I/O over ethernet-type networks
US9311110B2 (en) * 2013-07-08 2016-04-12 Intel Corporation Techniques to initialize from a remotely accessible storage device
US9529773B2 (en) * 2014-05-02 2016-12-27 Cavium, Inc. Systems and methods for enabling access to extensible remote storage over a network as local storage via a logical storage controller
US9294567B2 (en) * 2014-05-02 2016-03-22 Cavium, Inc. Systems and methods for enabling access to extensible storage devices over a network as local storage via NVME controller
CN104038550B (zh) * 2014-06-18 2018-01-23 华为技术有限公司 数据通信方法及其装置、存储系统
CN104111907B (zh) * 2014-06-27 2018-01-02 华为技术有限公司 一种访问NVMe存储设备的方法和NVMe存储设备
US9565269B2 (en) * 2014-11-04 2017-02-07 Pavilion Data Systems, Inc. Non-volatile memory express over ethernet
KR102238652B1 (ko) 2014-11-12 2021-04-09 삼성전자주식회사 데이터 저장 장치, 이의 작동 방법, 및 이를 포함하는 데이터 처리 시스템의 작동 방법
CN104951252B (zh) 2015-06-12 2018-10-16 北京联想核芯科技有限公司 一种数据访问方法及PCIe存储设备
CN105245576B (zh) 2015-09-10 2019-03-19 浪潮(北京)电子信息产业有限公司 一种基于全共享交换的存储架构系统
US10230544B1 (en) * 2016-11-23 2019-03-12 Pure Storage, Inc. Efficient data forwarding in a networked device

Also Published As

Publication number Publication date
EP3757810A3 (en) 2021-03-03
EP3757810A2 (en) 2020-12-30
EP3367635B1 (en) 2020-04-22
CN112422394A (zh) 2021-02-26
WO2018119742A1 (zh) 2018-07-05
CN107820693B (zh) 2020-11-06
CN107820693A (zh) 2018-03-20
CN112422394B (zh) 2024-03-05
US10983731B2 (en) 2021-04-20
EP3757810B1 (en) 2023-04-05
US10585628B2 (en) 2020-03-10
EP3367635A4 (en) 2019-03-13
EP3367635A1 (en) 2018-08-29
US20200183591A1 (en) 2020-06-11
US20180239539A1 (en) 2018-08-23

Similar Documents

Publication Publication Date Title
ES2800064T3 (es) Procedimiento, dispositivo y sistema para transferencia de paquetes en NVME sobre tejido
US8255607B2 (en) SAS expander-based SAS/SATA bridging
US7457902B2 (en) Lock and release mechanism for out-of-order frame prevention and support of native command queueing in FC-SATA
US8966135B2 (en) Methods of providing access to I/O devices
US9152591B2 (en) Universal PCI express port
US7430630B2 (en) Routing mechanism in PCI multi-host topologies using destination ID field
US7969989B2 (en) High performance ethernet networking utilizing existing fibre channel arbitrated loop HBA technology
US7743178B2 (en) Method and apparatus for SATA tunneling over fibre channel
US10574477B2 (en) Priority tagging based solutions in fc sans independent of target priority tagging capability
CN108701004A (zh) 一种数据处理的系统、方法及对应装置
US20060242312A1 (en) Tunneling SATA targets through fibre channel
CN108139982B (zh) 多信道输入/输出虚拟化
WO2016101287A1 (zh) 一种存储系统数据分发的方法、分发装置与存储系统
KR20040054620A (ko) 엔드 노드 파티션 방법, 시스템 및 컴퓨터 프로그램 제품
US20070253384A1 (en) Wireless switch with bootable flash memory storage device
US20160267035A1 (en) Methods and apparatus for augmented bus numbering
US20220350767A1 (en) Flexible high-availability computing with parallel configurable fabrics
EP4075730A1 (en) Method and device for multi-cloud interconnection
US20230421451A1 (en) Method and system for facilitating high availability in a multi-fabric system
US8402195B2 (en) Storage system mounted with plurality of processors
US20070254710A1 (en) Wireless switch with integrated universal serial bus interface
JP2003044421A (ja) 仮想ストレージシステム及び同システムに使用されるスイッチングノード
US20230244417A1 (en) Storage node, storage device, and network chip
US20060059269A1 (en) Transparent recovery of switch device
US20200084138A1 (en) Controller, method for adjusting flow rule, and network communication system