DE112021000246T5 - MESSAGING FROM THE PEER STORAGE DEVICE VIA THE CONTROL BUS - Google Patents

MESSAGING FROM THE PEER STORAGE DEVICE VIA THE CONTROL BUS Download PDF

Info

Publication number
DE112021000246T5
DE112021000246T5 DE112021000246.5T DE112021000246T DE112021000246T5 DE 112021000246 T5 DE112021000246 T5 DE 112021000246T5 DE 112021000246 T DE112021000246 T DE 112021000246T DE 112021000246 T5 DE112021000246 T5 DE 112021000246T5
Authority
DE
Germany
Prior art keywords
peer
data
control bus
storage
host
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.)
Pending
Application number
DE112021000246.5T
Other languages
German (de)
Inventor
Eran Moshe
Danny Berler
Daniel Helmick
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.)
Western Digital Technologies Inc
Original Assignee
Western Digital Technologies Inc
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 Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of DE112021000246T5 publication Critical patent/DE112021000246T5/en
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1451Management of the data involved in backup or backup restore by selection of backup contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3034Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a storage system, e.g. DASD based or network based
    • 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/061Improving I/O performance
    • 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/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0653Monitoring storage devices or 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/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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices

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)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Physics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)

Abstract

Systeme und Verfahren zur Nachrichtenübertragung von Peer-Speicherungsvorrichtungen über einen Steuerbus zum Auslagern und Sichern interner Betriebsdaten werden offenbart. Speicherungsvorrichtungen können eine Host-Schnittstelle einschließen, die für den Anschluss an ein Steuerungssystem und eine Steuerbusschnittstelle für den Anschluss an einen Steuerbus eingerichtet ist. Peer-Speicherungsvorrichtungen können eine Peer-Kommunikation über die Steuerbusschnittstelle aufbauen, interne Betriebsdaten auswählen und die internen Betriebsdaten über den Steuerbus an andere Peer-Speicherungsvorrichtungen senden. Als Reaktion auf ein Wiederherstellungsereignis können die Peer-Speicherungsvorrichtungen die ausgelagerten internen Betriebsdaten von einer anderen Peer-Speicherungsvorrichtung empfangen.Systems and methods for messaging peer storage devices over a control bus to swap out and save internal operational data are disclosed. Storage devices may include a host interface configured for connection to a control system and a control bus interface for connection to a control bus. Peer storage devices can establish peer communication via the control bus interface, select internal operational data, and send the internal operational data to other peer storage devices via the control bus. In response to a recovery event, the peer storage devices may receive the paged out internal operational data from another peer storage device.

Description

TECHNISCHES GEBIETTECHNICAL AREA

Die vorliegende Offenbarung bezieht sich im Allgemeinen auf Rechnersystemvorrichtungen, die über einen Bus mit geringer Bandbreite miteinander verbunden sind, und insbesondere auf die Kommunikation von Peer-Vorrichtungen über einen Steuerbus mit geringer Bandbreite ohne Eingriff in das Host-System.The present disclosure relates generally to computing system devices that are interconnected via a low-bandwidth bus, and more particularly to communication of peer devices via a low-bandwidth control bus without interference with the host system.

HINTERGRUNDBACKGROUND

Einige Rechnersysteme, wie beispielsweise Speicher-Arrays, können mehrere Speicherungsvorrichtungen einschließen, die ein oder mehrere Host-Systeme über einen Peripherie- oder Speicherschnittstellen-Bus unterstützen, wie beispielsweise PCle (Peripheral Component Interconnect Express), SATA (Serial Advanced Technology Attachment) oder SAS (Serial Attached [Small Computer Serial Interface - SCSI]). Diese Schnittstellen können für Übertragungsraten mit hoher Bandbreite eingerichtet werden, wie beispielsweise 3 Gigabit (Gb)/Sekunde (s), 6 Gb/s, 8 Gb/s, 12 Gb/s, 16 Gb/s usw., um eine schnelle und zuverlässige Datenübertragung zu und von Speicherungsvorrichtungen zu ermöglichen, wobei einige Versionen sogar 512 Gb/s unterstützen.Some computing systems, such as storage arrays, may include multiple storage devices that support one or more host systems via a peripheral or storage interface bus, such as PCIe (Peripheral Component Interconnect Express), SATA (Serial Advanced Technology Attachment), or SAS (Serial Attached [Small Computer Serial Interface - SCSI]). These interfaces can be set up for high-bandwidth transfer rates, such as 3 Gigabit (Gb)/second (s), 6 Gb/s, 8 Gb/s, 12 Gb/s, 16 Gb/s, etc. to provide fast and to enable reliable data transfer to and from storage devices, with some versions even supporting 512 Gb/s.

Multivorrichtungsspeicherungssysteme verwenden mehrere diskrete Speicherungsvorrichtungen, in der Regel Plattenlaufwerke (Solid-State-Laufwerke, Festplattenlaufwerke, Hybridlaufwerke, Bandlaufwerke usw.) zum Speichern großer Datenmengen. Diese Multivorrichtungsspeicherungssysteme sind im Allgemeinen in einer Anordnung von Laufwerken angeordnet, die durch eine gemeinsame Kommunikationsstruktur miteinander verbunden sind und in vielen Fällen durch eine Speicherungssteuerung, eine Steuerung für eine redundante Anordnung von unabhängigen Festplatten (RAID) oder eine allgemeine Steuerung gesteuert werden, um Speicherungs- und Systemaktivitäten über die Anordnung von Laufwerken zu koordinieren. Die in der Anordnung gespeicherten Daten können gemäß einem definierten RAID-Level, einer Kombination von RAID-Schemata oder anderen Konfigurationen gespeichert werden, um die gewünschte Datenredundanz, Leistung und Kapazitätsauslastung zu erreichen. Im Allgemeinen können diese Datenspeicherkonfigurationen eine Kombination aus redundanten Kopien (Spiegelung), Daten-Striping und/oder Parität (Berechnung und Speicherung) sowie andere Datenverwaltungs-, Fehlerkorrektur- und Datenwiederherstellungsprozesse beinhalten, die manchmal spezifisch für den Typ der verwendeten Laufwerke sind (z. B. Solid-State-Laufwerke im Vergleich zu Festplattenlaufwerken).Multi-device storage systems use multiple discrete storage devices, typically disk drives (solid state drives, hard drives, hybrid drives, tape drives, etc.) to store large amounts of data. These multi-device storage systems are generally arranged in an array of drives that are linked by a common communications fabric and in many cases controlled by a storage controller, redundant array of independent disks (RAID) controller, or general controller to provide storage and coordinate system activities about the placement of drives. The data stored in the array can be stored according to a defined RAID level, a combination of RAID schemes, or other configurations to achieve the desired data redundancy, performance, and capacity utilization. In general, these data storage configurations may involve a combination of redundant copies (mirroring), data striping and/or parity (computation and storage), as well as other data management, error correction, and data recovery processes that are sometimes specific to the type of drives used (eg. B. Solid State Drives versus Hard Disk Drives).

Jede Speicherungsvorrichtung in einem Speicherungssystem mit mehreren Vorrichtungen kann über mindestens eine Schnittstelle mit hoher Bandbreite, wie beispielsweise PCle, an ein Host-System angeschlossen werden, wobei ein für die Speicherungsvorrichtung geeignetes Speicherprotokoll verwendet wird, wie beispielsweise ein nichtflüchtiges Speicher-Express-Protokoll (NVMe) für den Zugriff auf Solid-State-Laufwerke (SSDs) oder die Storage-Blades aller Flash-Arrays. Einige Speicherungssysteme mit mehreren Vorrichtungen verwenden Speicherungsvorrichtungen, die in der Lage sind, miteinander und/oder mit Host-Systemen über die Verbindungs- und/oder Netzwerkstruktur und eine Schnittstelle mit hoher Bandbreite zu kommunizieren. Solche strukturbasierten verteilten Speicherungssysteme können Speicherungsvorrichtungen einschließen, die eingerichtet sind, um über einen direkten Speicherzugriff eine effizientere Datenübertragung zu und von Hosts und anderen Systemen zu ermöglichen.Each storage device in a multiple-device storage system can be connected to a host system via at least one high-bandwidth interface, such as PCle, using a storage protocol appropriate to the storage device, such as a non-volatile memory express protocol (NVMe ) to access solid-state drives (SSDs) or the storage blades of any flash array. Some multiple device storage systems utilize storage devices capable of communicating with each other and/or with host systems via the interconnect and/or network fabric and a high bandwidth interface. Such fabric-based distributed storage systems may include storage devices configured to allow more efficient data transfer to and from hosts and other systems via direct memory access.

In einigen Konfigurationen kann jede Speicherungsvorrichtung auch eine andere Schnittstelle einschließen, die für die Leistungsverwaltung und/oder die Kommunikation mit Rechnervorrichtungen mit geringer Bandbreite eingerichtet ist, die denselben Versorgungs- oder Steuerbus nutzen. So können Speichervorrichtungen zum Beispiel eine Steuerbusschnittstelle einschließen, die mit dem I2C (Inter-integrated Circuit), dem I3C (Improved Inter-integrated Circuit), dem SMBus (System Management Bus) oder ähnlichen Steuerbusprotokollen mit niedriger Bandbreite übereinstimmt. Diese Kommandobusse können die Speicherungsvorrichtungen innerhalb eines Speichersystems mit mehreren Vorrichtungen miteinander verbinden und einen synchronen, paketvermittelten, seriellen Kommunikationsbus mit mehreren Mastern bereitstellen. In einigen Rechnersystemen können die Steuerbusstifte als Teil des physischen Verbinders der Peripherieschnittstelle eingeschlossen sein. So kann zum Beispiel ein physikalischer PCIe-Schnittstellenverbinder einen Satz von I2C-, I3C- oder SMBus-Stiften an einem Ende des Verbinders einschließen, um die Steuerschnittstelle mit niedriger Bandbreite bereitzustellen. Im Vergleich zu den Peripherieschnittstellen mit hoher Bandbreite, die zur Datenübertragung verwendet werden, können diese Steuerbusschnittstellen mit niedriger Bandbreite ~3 bis 30 Megabit (Mb)/s unterstützen und mit bis zu 100 Kilobit (kb)/s betrieben werden.In some configurations, each storage device may also include a different interface configured for power management and/or communication with low-bandwidth computing devices sharing the same power or control bus. For example, memory devices may include a control bus interface that conforms to I2C (inter-integrated circuit), I3C (improved inter-integrated circuit), SMBus (system management bus), or similar low-bandwidth control bus protocols. These command buses can interconnect the storage devices within a multi-device storage system and provide a synchronous, packet-switched, serial communication bus with multiple masters. In some computer systems, the control bus pins may be included as part of the physical connector of the peripheral interface. For example, a PCIe physical interface connector may include a set of I2C, I3C, or SMBus pins at one end of the connector to provide the low-bandwidth control interface. Compared to the high-bandwidth peripheral interfaces used for data transfer, these low-bandwidth control bus interfaces can support ~3 to 30 megabits (Mb)/s and operate at up to 100 kilobits (kb)/s.

In einigen Systemen kann der Steuerbus mit geringer Bandbreite bereits zu Beginn des Boot-Zyklus der Speicherungsvorrichtungen für die Kommunikation initialisiert werden, um die Leistungsverwaltung, die Erkennung und den Zugriff auf externe Ressourcen wie Temperatursensoren, Lüftersteuerungen, Leuchtdiodenanzeigen (LED) usw. zu unterstützen. Speicherungsvorrichtungen können Zugriff auf den Steuerbus haben, bevor die Kommunikation mit dem Host oder die Steuerung über den Peripheriebus mit hoher Bandbreite erfolgt.In some systems, the low-bandwidth control bus can be initialized early in the boot cycle of the storage devices for communication, to facilitate power management, detection, and access to external resources such as temperature sensors, fan controls, light emitting diode (LED) displays, etc support. Storage devices may have access to the control bus prior to communication with the host or control over the high bandwidth peripheral bus.

Bei Speicherungsvorrichtungen können vor dem Aufbau der Host-Kommunikation über den Peripheriebus mit hoher Bandbreite Fehler und/oder Ausfälle auftreten, die eine Host-Kommunikation verhindern. Infolgedessen können interne Betriebsdaten, wie beispielsweise Zurücksetzungsereignisse, Debug-Daten, Geräteprotokolle und Konfigurationsinformationen, in einzelnen Speicherungsvorrichtungen verloren gehen, insbesondere im Falle eines nicht behebbaren Fehlers, der ein Zurücksetzen des Systems oder der Speicherungsvorrichtung erzwingt.Storage devices may encounter errors and/or failures that prevent host communication prior to establishing host communication over the high bandwidth peripheral bus. As a result, internal operational data such as reset events, debug data, device logs, and configuration information may be lost in individual storage devices, particularly in the event of an unrecoverable error that forces a system or storage device reset.

Es kann vorteilhaft sein, interne Betriebsdaten auszulagern und/oder zu sichern, ohne auf das Host-System zu warten oder sich auf dieses zu verlassen. Möglicherweise ist eine zuverlässige Methode erforderlich, um interne Betriebsdaten während des Vor-Host-Betriebs auszulagern und/oder ohne auf die Kommunikation mit dem Host über Peripherie- oder Speicherbusse angewiesen zu sein.It may be advantageous to offload and/or back up internal operational data without waiting for or relying on the host system. A reliable method may be required to offload internal operational data during pre-host operation and/or without relying on communication with the host via peripheral or memory buses.

KURZDARSTELLUNGEXECUTIVE SUMMARY

Es werden verschiedene Gesichtspunkte für die Kommunikation von Peer-Speicherungsvorrichtungen beschrieben, insbesondere zur Nachrichtenübermittlung zwischen Peer-Speicherungsvorrichtungen über einen Steuerbus mit geringer Bandbreite zur Auslagerung oder Sicherung interner Betriebsdaten.Various aspects of peer storage device communication are described, particularly messaging between peer storage devices over a low-bandwidth control bus for offloading or backing up internal operational data.

Ein allgemeiner Gesichtspunkt schließt ein System ein, das eine erste Vorrichtung einschließt, die Folgendes einschließen kann: einen Prozessor; einen Speicher; eine Host-Schnittstelle, die für die Verbindung mit einem Host-System eingerichtet ist; eine Steuerbusschnittstelle, die so eingerichtet ist, dass sie mit einem Steuerbus verbunden werden kann, wobei eine Vielzahl von Peer-Vorrichtungen so eingerichtet ist, dass sie mit dem Steuerbus verbunden werden kann; und einen Peer-Freigabedienst. Der Peer-Freigabedienst kann eingerichtet sein, um über die Steuerbusschnittstelle eine Peer-Kommunikation mit einer Peer-Zielvorrichtung aus der Vielzahl der Peer-Vorrichtungen herzustellen; interne Betriebsdaten für die erste Vorrichtung auszuwählen; die ausgewählten internen Betriebsdaten an die Peer-Zielvorrichtung zu senden; und als Reaktion auf ein Wiederherstellungsereignis die ausgewählten internen Betriebsdaten von der Peer-Zielvorrichtung zu empfangen.A general aspect includes a system including a first device that may include: a processor; a memory; a host interface configured to connect to a host system; a control bus interface arranged to be connected to a control bus, wherein a plurality of peer devices arranged to be connected to the control bus; and a peer sharing service. The peer enabling service may be configured to establish peer communication with a target peer device of the plurality of peer devices via the control bus interface; select internal operating data for the first device; send the selected internal operational data to the target peer device; and receive the selected internal operational data from the target peer device in response to a recovery event.

Implementierungen können eines oder mehrere der folgenden Merkmale einschließen. Die erste Vorrichtung kann weiterhin Folgendes einschließen: ein Speichermedium, das eingerichtet ist, um Host-Daten zu speichern, die über die Host-Schnittstelle empfangen werden; ein Speicherschnittstellenprotokoll, das für die Kommunikation mit dem Host-System über die Host-Schnittstelle eingerichtet ist; und eine Steuerung für eine nichtflüchtige Speicherungsvorrichtung, die so eingerichtet ist, dass sie die Eingabe/Ausgabe von Daten in das Speichermedium verwaltet. Das Speichermedium kann mindestens eine nichtflüchtige Speicherungsvorrichtung einschließen. Das Speicherschnittstellenprotokoll kann ein nichtflüchtiges Speicher-Express-Protokoll (NVMe) sein. Die Vielzahl von Peer-Vorrichtungen kann eine Vielzahl von Peer-Speicherungsvorrichtungen einschließen, und jede Peer-Speicherungsvorrichtung aus der Vielzahl von Peer-Speicherungsvorrichtungen kann Folgendes einschließen: eine Peer-Host-Schnittstelle, die so eingerichtet ist, dass sie sich unter Verwendung des NVMe-Protokolls mit dem Host-System verbindet; ein Peer-Speichermedium kann mindestens einen nichtflüchtigen Speicher einschließen; und eine Peer-Steuerbusschnittstelle, die eingerichtet ist, um eine Verbindung mit dem Steuerbus herzustellen. Der Peer-Freigabedienst kann weiterhin einen Erkennungsdienst einschließen, der eingerichtet ist, um: über die Steuerbusschnittstelle eine Vorrichtungskennung für die erste Vorrichtung zu senden; über die Steuerbusschnittstelle Vorrichtungskennungen aus der Vielzahl der Peer-Vorrichtungen zu empfangen; und die Peer-Vorrichtungskennungen in einem Peer-Vorrichtungsregister zu speichern. Der Peer-Freigabedienst kann weiterhin eingerichtet sein, um: eine Peer-Vorrichtungskennung für die Peer-Zielvorrichtung zu bestimmen; und eine Peer-Nachricht zu formatieren, die die ausgewählten internen Betriebsdaten als Nachrichten-Payload einzuschließen. Das Senden der ausgewählten internen Betriebsdaten kann das Senden der Peer-Nachricht an die Peer-Zielvorrichtung einschließen, wobei die Peer-Vorrichtungskennung zur Adressierung verwendet wird. Der Peer-Freigabedienst kann weiterhin einen Verschlüsselungsdienst einschließen, der eingerichtet ist, um vor dem Senden der Peer-Nachricht die ausgewählten internen Betriebsdaten zu verschlüsseln. Die internen Betriebsdaten können aus Folgendem ausgewählt werden: zurückgesetzte Ereignisdaten; Debug-Daten; Protokolldaten zum Betrieb der Vorrichtung; oder letzte gute Konfigurationsdaten. Der Peer-Freigabedienst kann weiterhin eingerichtet sein, um über die Steuerbusschnittstelle interne Betriebsdaten von mindestens einer Peer-Vorrichtung aus der Vielzahl der Peer-Vorrichtungen zu empfangen; die internen Peer-Betriebsdaten in einer Peer-Datenpartition im Speicher zu speichern; und als Reaktion auf ein Peer-Wiederherstellungsereignis die internen Peer-Betriebsdaten an die mindestens eine Peer-Vorrichtung zu senden. Das System kann weiterhin eine Vielzahl von Peer-Vorrichtungen einschließen, wobei die Vielzahl von Peer-Vorrichtungen die internen Betriebsdaten speichert, die von der ersten Vorrichtung empfangen wurden, und der Peer-Freigabedienst kann weiterhin einen Wiederherstellungsdienst einschließen, der eingerichtet ist, um: das Wiederherstellungsereignis zu bestimmen; als Reaktion auf das Wiederherstellungsereignis und über die Steuerbusschnittstelle eine Wiederherstellungsanforderung an mindestens eine Peer-Vorrichtung aus der Vielzahl der Peer-Vorrichtungen zu senden; von der mindestens einen Peer-Vorrichtung interne Wiederherstellungsbetriebsdaten zu empfangen; und die internen Wiederherstellungsbetriebsdaten in einem internen Betriebsspeicherort zu speichern. Das Wiederherstellungsereignis kann in einem Vor-Host-Betriebszustand auftreten. Die internen Wiederherstellungsbetriebsdaten können eine letzte gute Konfigurationsdatenseite einschließen, und die erste Vorrichtung kann weiterhin so eingerichtet sein, dass sie Vor-Host-Vorgänge unter Verwendung der letzten guten Konfigurationsdatenseite, die von der mindestens einen Peer-Vorrichtung empfangen wurde, abschließt.Implementations may include one or more of the following features. The first device may further include: a storage medium configured to store host data received via the host interface; a memory interface protocol configured to communicate with the host system over the host interface; and a non-volatile storage device controller configured to manage input/output of data to the storage medium. The storage medium may include at least one non-volatile storage device. The memory interface protocol may be a non-volatile memory express protocol (NVMe). The plurality of peer devices may include a plurality of peer storage devices, and each peer storage device of the plurality of peer storage devices may include: a peer host interface configured to communicate using the NVMe -Protocol connects to the host system; a peer storage medium may include at least one non-volatile memory; and a peer control bus interface configured to connect to the control bus. The peer sharing service may further include a discovery service configured to: transmit a device identifier for the first device over the control bus interface; receive device identifiers from the plurality of peer devices via the control bus interface; and store the peer device identifiers in a peer device register. The peer sharing service may be further configured to: determine a peer device identifier for the target peer device; and format a peer message including the selected internal operational data as a message payload. Sending the selected internal operational data may include sending the peer message to the target peer device using the peer device identifier for addressing. The peer sharing service may further include an encryption service configured to encrypt the selected internal operational data prior to sending the peer message. The internal operational data can be selected from: reset event data; debug data; log data related to the operation of the device; or last good configuration data. The peer enabling service may be further configured to receive internal operational data from at least one of the plurality of peer devices via the control bus interface; store the internal peer operational data in a peer data partition in memory; and send the internal peer operational data to the at least one peer device in response to a peer recovery event. The system can continue to support a variety of peer Include devices, wherein the plurality of peer devices store the internal operational data received from the first device, and the peer sharing service may further include a recovery service configured to: determine the recovery event; in response to the recovery event and via the control bus interface, send a recovery request to at least one peer device of the plurality of peer devices; receive internal recovery mode data from the at least one peer device; and store the internal recovery operation data in an internal operation storage location. The recovery event may occur in a pre-host operational state. The internal recovery mode data may include a last good configuration data page, and the first device may be further configured to complete pre-host operations using the last good configuration data page received from the at least one peer device.

Ein weiterer allgemeiner Gesichtspunkt schließt ein computerimplementiertes Verfahren ein: Aufbau einer Peer-Kommunikation über eine erste Vorrichtung aus einer Vielzahl von Peer-Zielvorrichtung aus einer Vielzahl von Peer-Vorrichtungen, wobei die erste Vorrichtung und jede Peer-Vorrichtung der Vielzahl von Peer-Vorrichtungen Folgendes einschließt: eine Host-Schnittstelle, die so eingerichtet ist, dass sie mit einem Host-System verbunden ist, und eine Steuerbusschnittstelle, die so eingerichtet ist, dass sie mit einem Steuerbus verbunden ist; Auswählen von internen Betriebsdaten für die erste Vorrichtung; Senden der ausgewählten internen Betriebsdaten von der ersten Vorrichtung und über die Steuerbusschnittstelle an die Peer-Zielvorrichtung; und Empfangen der ausgewählten internen Betriebsdaten von der Peer-Zielvorrichtung an die erste Vorrichtung und über die Steuerbusschnittstelle, wobei der Empfang der ausgewählten internen Betriebsdaten auf ein Wiederherstellungsereignis reagiert.Another general aspect includes a computer-implemented method of: establishing a peer communication via a first device of a plurality of peer target devices of a plurality of peer devices, wherein the first device and each peer device of the plurality of peer devices includes: a host interface arranged to be connected to a host system and a control bus interface arranged to be connected to a control bus; selecting internal operating data for the first device; sending the selected internal operational data from the first device and over the control bus interface to the target peer device; and receiving the selected internal operational data from the target peer device to the first device and over the control bus interface, the receipt of the selected internal operational data being responsive to a recovery event.

Implementierungen können eines oder mehrere der folgenden Merkmale einschließen. Die erste Vorrichtung und jede Peer-Vorrichtung aus der Vielzahl von Peer-Vorrichtungen kann Folgendes einschließen: ein Speichermedium, das eingerichtet ist, um Host-Daten zu speichern, die über die Host-Schnittstelle empfangen werden; ein Speicherschnittstellenprotokoll, das für die Kommunikation mit dem Host-System über die Host-Schnittstelle eingerichtet ist; und eine Steuerung für eine nichtflüchtige Speicherungsvorrichtung, die so eingerichtet ist, dass sie die Eingabe/Ausgabe von Daten in das Speichermedium verwaltet. Das computerimplementierte Verfahren kann weiterhin Folgendes einschließen: Senden einer Vorrichtungskennung für die erste Vorrichtung über die Steuerbusschnittstelle; Empfangen von Peer-Vorrichtungserkennungen von einer Vielzahl von Peer-Vorrichtungen über die Steuerbusschnittstelle; und Speichern der Peer-Vorrichtungskennungen in der ersten Vorrichtung in einem Peer-Vorrichtungsregister. Das computerimplementierte Verfahren kann weiterhin Folgendes einschließen: Bestimmen einer Peer-Vorrichtungskennung für die Peer-Zielvorrichtung durch die erste Vorrichtung; und Formatieren einer Peer-Nachricht, die die ausgewählten internen Betriebsdaten als Nachrichten-Payload einschließt, wobei das Senden der ausgewählten internen Betriebsdaten das Senden der Peer-Nachricht an die Peer-Zielvorrichtung unter Verwendung der Peer-Vorrichtungskennung zur Adressierung einschließt. Das computerimplementierte Verfahren kann weiterhin einschließen, dass die ausgewählten internen Betriebsdaten vor dem Senden der Peer-Nachricht verschlüsselt werden. Die internen Betriebsdaten können aus Folgendem ausgewählt werden: zurückgesetzte Ereignisdaten; Debug-Daten; Protokolldaten zum Betrieb der Vorrichtung; oder letzte gute Konfigurationsdaten. Das computerimplementierte Verfahren kann Folgendes einschließen: Empfangen von internen Betriebsdaten von mindestens einer Peer-Vorrichtung aus der Vielzahl der Peer-Vorrichtungen an die erste Vorrichtung über die Steuerbusschnittstelle; Speichern der internen Betriebsdaten des Peers in einem Speicher der ersten Vorrichtung in einer Peer-Datenpartition im Speicher; und Senden der internen Betriebsdaten des Peers durch die erste Vorrichtung und in Reaktion auf ein Peer-Wiederherstellungsereignis an die mindestens eine Peer-Vorrichtung. Das computerimplementierte Verfahren kann weiterhin Folgendes einschließen: Bestimmen des Wiederherstellungsereignisses durch die erste Vorrichtung; Senden einer Wiederherstellungsanforderung über die Steuerbusschnittstelle an mindestens eine Peer-Vorrichtung aus der Vielzahl der Peer-Vorrichtungen als Reaktion auf das Wiederherstellungsereignis; Empfangen von internen Wiederherstellungsbetriebsdaten von mindestens einer Peer-Vorrichtung und über die Steuerbusschnittstelle; und Speichern der internen Wiederherstellungsbetriebsdaten in einem internen Betriebsspeicherort. Das computerimplementierte Verfahren kann weiterhin den Abschluss von Vor-Host-Vorgängen durch die erste Vorrichtung unter Verwendung einer letzten guten Konfigurationsdatenseite, die von der Peer-Zielvorrichtung empfangen wurde, einschließen, wobei das Wiederherstellungsereignis in einem Vor-Host-Betriebszustand eintritt und die ausgewählten internen Betriebsdaten die letzte gute Konfigurationsdatenseite einschließen.Implementations may include one or more of the following features. The first device and each peer device of the plurality of peer devices may include: a storage medium configured to store host data received via the host interface; a memory interface protocol configured to communicate with the host system over the host interface; and a non-volatile storage device controller configured to manage input/output of data to the storage medium. The computer-implemented method may further include: sending a device identifier for the first device over the control bus interface; receiving peer device identifiers from a plurality of peer devices over the control bus interface; and storing the peer device identifiers in the first device in a peer device register. The computer-implemented method may further include: determining, by the first device, a peer device identifier for the target peer device; and formatting a peer message including the selected internal operational data as a message payload, wherein sending the selected internal operational data includes sending the peer message to the target peer device using the peer device identifier for addressing. The computer-implemented method may further include encrypting the selected internal operational data prior to sending the peer message. The internal operational data can be selected from: reset event data; debug data; log data related to the operation of the device; or last good configuration data. The computer-implemented method may include: receiving internal operational data from at least one peer device of the plurality of peer devices to the first device via the control bus interface; storing the peer's internal operational data in a memory of the first device in a peer data partition in the memory; and sending, by the first device and in response to a peer recovery event, the peer's internal operational data to the at least one peer device. The computer-implemented method may further include: determining, by the first device, the recovery event; sending a recovery request over the control bus interface to at least one peer device of the plurality of peer devices in response to the recovery event; receiving internal recovery mode data from at least one peer device and over the control bus interface; and storing the internal recovery operation data in an internal operation storage location. The computer-implemented method may further include the first device completing pre-host operations using a last good configuration data page received from the peer target device, the recovery event occurring in a pre-host operational state and the selected internal Operational data include the last good configuration data page.

Noch ein weiterer allgemeiner Gesichtspunkt schließt ein Speicherungssystem ein, das einen Steuerbus und eine Vielzahl von Speicherungsvorrichtungen einschließt, wobei jede Speicherungsvorrichtung der Vielzahl von Speicherungsvorrichtungen Folgendes einschließen kann: einen Prozessor; einen Speicher; eine Host-Schnittstelle, die für die Verbindung mit einem Host-System eingerichtet ist; eine Steuerbusschnittstelle, die für die Verbindung mit dem Steuerbus eingerichtet ist; Mittel, um über die Steuerbusschnittstelle eine Peer-Kommunikation zwischen der Vielzahl von Speicherungsvorrichtungen herzustellen; Mittel zum Auswählen interner Betriebsdaten aus einem internen Betriebsspeicherort; Mittel zum Senden der ausgewählten internen Betriebsdaten an mindestens eine andere Speicherungsvorrichtung aus der Vielzahl der Speicherungsvorrichtungen; und Mittel zum Empfangen der ausgewählten internen Betriebsdaten von mindestens einer anderen Peer-Speicherungsvorrichtung aus der Vielzahl der Peer-Speicherungsvorrichtungen als Reaktion auf ein Wiederherstellungsereignis.Yet another general aspect includes a storage system having a control bus and a plurality of storage devices, wherein each storage device of the plurality of storage devices may include: a processor; a memory; a host interface configured to connect to a host system; a control bus interface configured to connect to the control bus; means for establishing peer communication between the plurality of storage devices via the control bus interface; means for selecting internal operational data from an internal operational storage location; means for sending the selected internal operational data to at least one other storage device of the plurality of storage devices; and means for receiving the selected internal operational data from at least one other peer storage device of the plurality of peer storage devices in response to a recovery event.

Die verschiedenen Ausführungsformen wenden vorteilhaft die Prinzipien von Speicherungsvorrichtungen und/oder Speicherungssystemen mit mehreren Vorrichtungen an, um die Funktionalität solcher Computersysteme zu verbessern. Die verschiedenen Ausführungsformen schließen Vorgänge ein, die die Probleme, die bisher bei Speicher-Arrays und/oder -Systemen aufgetreten sind, überwinden oder mindestens verringern und dementsprechend zuverlässiger und/oder effizienter sind als andere Rechnersysteme. Das heißt, die verschiedenen hierin offenbarten Ausführungsformen schließen Hardware und/oder Software mit Funktionen zur Verbesserung der Kommunikation und Sicherung interner Betriebsdaten ein, wie beispielsweise durch Verwendung von Peer-Nachrichten über einen Steuerbus zwischen Speicherungsvorrichtungen. Entsprechend stellen die hierin offenbarten Ausführungsformen verschiedene Verbesserungen an Speichernetzwerken und/oder Speicherungssystemen bereit.The various embodiments advantageously apply the principles of storage devices and/or multi-device storage systems to enhance the functionality of such computing systems. The various embodiments include operations that overcome or at least reduce the problems previously encountered with storage arrays and/or systems and are accordingly more reliable and/or efficient than other computing systems. That is, the various embodiments disclosed herein include hardware and/or software with functions to enhance communication and security of internal operational data, such as by using peer messages over a control bus between storage devices. Accordingly, the embodiments disclosed herein provide various improvements to storage area networks and/or storage systems.

Es sei klargestellt, dass die in der vorliegenden Offenbarung verwendete Ausdrucksweise hauptsächlich für Lesbarkeits- und Anweisungszwecke gewählt wurde und den Schutzumfang des hierin offenbarten Gegenstands nicht beschränken soll.It should be understood that the terminology used in the present disclosure is primarily selected for convenience and instructional purposes and is not intended to limit the scope of the subject matter disclosed herein.

Figurenlistecharacter list

  • 1 veranschaulicht schematisch ein Speichersystem mit mehreren Vorrichtungen, das über einen Speicherschnittstellenbus und einen Steuerbus verfügt. 1 FIG. 12 schematically illustrates a multiple device memory system having a memory interface bus and a control bus.
  • 2 veranschaulicht schematisch eine Peer-Erkennungsarchitektur, die von dem Speicherungssystem mit mehreren Vorrichtungen aus 1 verwendet werden kann. 2 FIG. 12 schematically illustrates a peer discovery architecture implemented by the multi-device storage system 1 can be used.
  • 3 veranschaulicht schematisch eine Peer-Nachrichtenarchitektur, die von dem Speicherungssystem mit mehreren Vorrichtungen aus 1 verwendet werden kann. 3 FIG. 12 schematically illustrates a peer messaging architecture emanating from the multi-device storage system 1 can be used.
  • 4 veranschaulicht schematisch einen Host-Knoten des Speicherungssystems mit mehreren Vorrichtungen aus 1. 4 FIG. 12 schematically illustrates a host node of the multi-device storage system 1 .
  • 5 veranschaulicht schematisch einige Elemente der Speicherungsvorrichtungen aus 1-5 genauer. 5 Figure 1 schematically illustrates some elements of the storage devices 1-5 more accurate.
  • 6 ist das Flussdiagramm eines beispielhaften Verfahrens zum Versenden von Peer-Nachrichten zwischen Speicherungsvorrichtungen unter Verwendung eines Steuerbusses. 6 Figure 12 is a flow diagram of an example method for peer messaging between storage devices using a control bus.
  • 7 ist das Flussdiagramm eines Beispiels für ein Verfahren zur Wiederherstellung interner Betriebsdaten von einer Peer-Speicherungsvorrichtung. 7 Figure 12 is a flow diagram of an example method for restoring internal operational data from a peer storage device.
  • 8 ist das Flussdiagramm eines beispielhaften Verfahrens zur Unterstützung von der Peer-Wiederherstellung interner Betriebsdaten. 8th Figure 12 is a flow diagram of an example method for supporting peer recovery of internal operational data.

DETAILLIERTE BESCHREIBUNGDETAILED DESCRIPTION

1 zeigt eine Ausführungsform eines beispielhaften Datenspeicherungssystems 100 mit Datenspeicherungsvorrichtungen 120, die sowohl über den Speicherschnittstellenbus 108 als auch über den Steuerbus 110 miteinander verbunden sind. Obgleich einige beispielhafte Merkmale veranschaulicht sind, wurden verschiedene andere Merkmale zum Zwecke der Kürze, und um nicht unnötig von den sachdienlichen Gesichtspunkten der hierin beschriebenen Ausführungsbeispiele abzulenken, nicht veranschaulicht. Zu diesem Zweck schließt das Datenspeicherungssystem 100, als nicht einschränkendes Beispiel, eine oder mehrere Datenspeicherungsvorrichtungen 120 ein (manchmal auch Informationsspeicherungsvorrichtugnen, Speicherungsvorrichtungen, Plattenlaufwerke oder Laufwerke genannt). In einigen Ausführungsformen können die Speicherungsvorrichtungen 120 in einem Server- oder Speicherarray-Blade oder einer ähnlichen Speichereinheit eingerichtet werden, um in Speicherracks oder -gehäusen von Rechenzentren verwendet zu werden. Die Speicherungsvorrichtungen 120 können mit einem oder mehreren Hosts 102 verbunden werden und Funktionen zur Datenspeicherung und -abfrage für oder über diese Host-Systeme bereitstellen. In einigen Ausführungsformen können die Speicherungsvorrichtungen 120 in einer Speicherungshierarchie eingerichtet werden, die Speicherungsknoten, Speicherungssteuerungen und/oder andere Zwischenkomponenten zwischen den Speicherungsvorrichtungen 120 und dem Host 102 einschließt. Zum Beispiel kann jede Steuerung für einen entsprechenden Satz von Speicherknoten und ihre jeweiligen Speichervorrichtungen verantwortlich sein, die über ein entsprechendes Backplane-Netzwerk verbunden sind, obwohl nur die Speichervorrichtungen 120 und der Host 102 dargestellt sind. 1 1 shows one embodiment of an exemplary data storage system 100 having data storage devices 120 interconnected via both memory interface bus 108 and control bus 110. FIG. Although some exemplary features are illustrated, various other features have not been illustrated for the sake of brevity and so as not to unnecessarily distract from the pertinent aspects of the embodiments described herein. To this end, data storage system 100 includes, by way of non-limiting example, one or more data storage devices 120 (sometimes also called information storage devices, storage devices, disk drives, or disk drives). In some embodiments, the storage devices 120 may be implemented in a server or storage array blade or similar storage unit for use in data center storage racks or enclosures. Storage devices 120 may be coupled to one or more hosts 102 and provide data storage and retrieval functions to or through those host systems. In some embodiments, storage devices 120 may be arranged in a storage hierarchy that includes storage nodes, storage controllers, and/or other intermediate components between storage devices 120 and host 102 . For example, each controller may be responsible for a corresponding set of storage nodes and their respective storage devices literal, connected via a corresponding backplane network, although only storage devices 120 and host 102 are shown.

In der gezeigten Ausführungsform sind mehrere Speicherungsvorrichtungen 120 an einen gemeinsamen Speicherschnittstellenbus 108 für die Host-Kommunikation montiert. Zum Beispiel können die Speicherungsvorrichtungen 120 eine Anzahl von Laufwerken einschließen, die in einem Speicher-Array angeordnet sind, wie beispielsweise Speicherungsvorrichtungen, die sich ein gemeinsames Rack, eine Einheit oder ein Blade in einem Rechenzentrum teilen, oder die SSDs in einem All-Flash-Array. In einigen Ausführungsformen können sich Speicherungsvorrichtungen 120 ein Backplane-Netzwerk, Netzwerk-Switch(es) und/oder andere Hardware- und Softwarekomponenten teilen, auf die über den Speicherschnittstellenbus 108 und/oder den Steuerbus 110 zugegriffen wird. Zum Beispiel können die Speicherungsvorrichtungen 120 mit dem Speicherschnittstellenbus 108 und/oder dem Steuerbus 110 über eine Vielzahl von physischen Anschlussverbindungen verbunden werden, die physische, Transport- und andere logische Kanäle für die Kommunikation mit den unterschiedlichen Komponenten und Unterkomponenten definieren, um einen Kommunikationskanal zum Host 102 bereitzustellen. In einigen Ausführungsformen kann der Speicherschnittstellenbus 108 die primäre Host-Schnittstelle für die Verwaltung von Speicherzbgsvorrichtungen und die Datenübertragung des Hosts bereitstellen, und der Steuerschnittstellenbus 110 kann eine begrenzte Konnektivität zum Host für niedrigstufige Steuerfunktionen einschließen.In the embodiment shown, multiple storage devices 120 are mounted on a common storage interface bus 108 for host communication. For example, storage devices 120 may include a number of drives arranged in a storage array, such as storage devices that share a common rack, unit, or blade in a data center, or the SSDs in an all-flash array. In some embodiments, storage devices 120 may share a backplane network, network switch(es), and/or other hardware and software components accessed via storage interface bus 108 and/or control bus 110 . For example, storage devices 120 may be coupled to storage interface bus 108 and/or control bus 110 via a variety of physical connectors that define physical, transport, and other logical channels for communication with the various components and subcomponents to provide a communication channel to the host 102 to provide. In some embodiments, memory interface bus 108 may provide the primary host interface for memory device management and host data transfer, and control interface bus 110 may include limited connectivity to the host for low-level control functions.

In einigen Ausführungsformen können die Speicherungsvorrichtungen 120 als Peer-Gruppe oder Peer-Speicherungsvorrichtungen bezeichnet werden, da sie über den Speicherschnittstellenbus 108 und/oder den Steuerbus 110 miteinander verbunden sind. In einigen Ausführungsformen können die Speicherungsvorrichtungen 120 für die Peer-Kommunikation zwischen den Speicherungsvorrichtungen 120 über den Speicherschnittstellenbus 108 eingerichtet werden, mit oder ohne Unterstützung des Hosts 102. Zum Beispiel können Speicherungsvorrichtungen 120 für den direkten Speicherzugriff eingerichtet werden, indem ein oder mehrere Protokolle verwendet werden, wie beispielsweise nichtflüchtiger Express-Speicher (NVMe), direkter Fernspeicherzugriff (RDMA), NVMe über Struktur (NVMeOF) usw., um Befehlsnachrichten und Datenübertragungen zwischen Speicherungsvorrichtungen über die Speicherschnittstelle mit hoher Bandbreite und den Speicherschnittstellenbus 108 bereitzustellen.In some embodiments, storage devices 120 may be referred to as a peer group or peer storage devices because they are interconnected via memory interface bus 108 and/or control bus 110 . In some embodiments, storage devices 120 may be configured for peer communication between storage devices 120 over memory interface bus 108, with or without host 102 assistance. For example, storage devices 120 may be configured for direct memory access using one or more protocols , such as express non-volatile memory (NVMe), remote direct memory access (RDMA), NVMe over fabric (NVMeOF), etc., to provide command messages and data transfers between storage devices over the high-bandwidth memory interface and memory interface bus 108 .

In einigen Ausführungsformen können die Speicherungsvorrichtungen 120 für eine Peer-Kommunikation eingerichtet werden, bei der eine Multi-Master-Erkennung und Nachrichten gemäß einem Schnittstellenstandard mit geringer Bandbreite verwendet werden. Zum Beispiel können die Speicherungsvorrichtungen 120 für paketbasierte Nachrichten über den Steuerbus 110 eingerichtet werden, der ein Busprotokoll mit geringer Bandbreite verwendet, wie beispielsweise I2C (Inter-integrated Circuit), I3C (Improved Inter-integrated Circuit), SMBus (System Management Bus) usw. Speicherungsvorrichtungen 120 können über einen gemeinsamen Steuerbus miteinander verbunden werden, um einen Kommunikationskanal mit geringer Bandbreite zum Host 102 und anderen Systemkomponenten bereitzustellen, um die Leistungsverwaltung, die Erkennung und den Zugriff auf externe Ressourcen wie Temperatursensoren, Lüftersteuerungen, Leuchtdiodenanzeigen usw. zu unterstützen. Zum Beispiel kann der Steuerbus 110 die Speicherungsvorrichtungen 120 mit einer Baseboard-Verwaltungscontroller (BMC) verbinden, um den physischen Zustand der Speicherungsvorrichtungen 120 für den Host 102 zu überwachen. Die Speicherungsvorrichtungen 120 können aufgrund ihrer Verbindung zu einem gemeinsamen Steuerbus 110 als Peer-Speicherungsvorrichtungen definiert werden.In some embodiments, the storage devices 120 may be configured for peer communication using multi-master discovery and messages according to a low-bandwidth interface standard. For example, the storage devices 120 for packet-based messages may be implemented over the control bus 110 using a low-bandwidth bus protocol such as I2C (Inter-integrated Circuit), I3C (Improved Inter-integrated Circuit), SMBus (System Management Bus), etc Storage devices 120 may be interconnected via a common control bus to provide a low-bandwidth communication channel to host 102 and other system components to aid in power management, detection and access to external resources such as temperature sensors, fan controls, LED displays, etc. For example, the control bus 110 may connect the storage devices 120 to a baseboard management controller (BMC) to monitor the physical state of the storage devices 120 for the host 102 . The storage devices 120 can be defined as peer storage devices due to their connection to a common control bus 110 .

In einigen Ausführungsformen sind die Datenspeicherungsvorrichtungen 120 Solid-State-Laufwerke (SSDs) oder schließen diese ein. Jede Datenspeicherungsvorrichtung 120.1 bis 120.n kann eine nichtflüchtige Speichervorrichtung (NVM-Vorrichtung) oder Vorrichtungssteuerung 130 basierend auf Rechenressourcen (Prozessor und Speicher) einschließen und eine Vielzahl von NVM- oder Medienvorrichtungen 140 zur Datenspeicherung (z. B. eine oder mehrere NVM-Vorrichtung(en), wie eine oder mehrere Flash-Speichervorrichtungen). In einigen Ausführungsformen schließt eine jeweilige Datenspeicherungsvorrichtung 120 der einen oder der mehreren Datenspeicherungsvorrichtungen eine oder mehrere NVM-Steuerungen, wie Flash-Steuerungen oder Kanal-Steuerungen (z. B. für Speicherungsvorrichtungen mit NVM-Vorrichtungen in mehreren Speicherkanälen), ein. In einigen Ausführungsformen können die Datenspeicherungsvorrichtungen 120 jeweils in einem Gehäuse untergebracht sein, beispielsweise in einem mehrteiligen versiegelten Gehäuse mit einem definierten Formfaktor und Anschlüssen und/oder Verbindern zur Verbindung mit dem Speicherschnittstellenbus 108 und/oder dem Steuerbus 110.In some embodiments, data storage devices 120 are or include solid state drives (SSDs). Each data storage device 120.1 to 120.n may include a non-volatile memory device (NVM device) or device controller 130 based on computing resources (processor and memory) and a plurality of NVM or media devices 140 for data storage (e.g. one or more NVM devices (en), such as one or more flash memory devices). In some embodiments, a respective data storage device 120 of the one or more data storage devices includes one or more NVM controllers, such as flash controllers or channel controllers (e.g., for storage devices with NVM devices in multiple memory channels). In some embodiments, data storage devices 120 may each be housed in an enclosure, such as a multi-piece sealed enclosure having a defined form factor and ports and/or connectors for connection to memory interface bus 108 and/or control bus 110.

In einigen Ausführungsformen kann eine jeweilige Datenspeicherungsvorrichtung 120 ein einzelnes Medium einschließen, während in anderen Ausführungsformen die jeweilige Datenspeicherungsvorrichtung 120 eine Vielzahl von Medienvorrichtungen einschließt. In einigen Ausführungsformen schließen die Medienvorrichtungen einen NAND-Flash-Speicher oder einen NOR-Flash-Speicher ein. In einigen Ausführungsformen kann die Datenspeicherungsvorrichtung 120 eine oder mehrere Festplattenlaufwerke (HDDs) einschließen. In einigen Ausführungsformen können die Datenspeicherungsvorrichtungen 120 eine Flash-Speichervorrichtung einschließen, die wiederum einen oder mehrere Flash-Speicherchips, ein oder mehrere Flash-Speicherpakete, einen oder mehrere Flash-Speicherkanäle oder dergleichen einschließt. In einigen Ausführungsformen können jedoch eine oder mehrere der Datenspeicherungsvorrichtungen 120 andere Arten von nichtflüchtigen Datenspeichermedien innehaben (z. B. Phasenänderungs-Direktzugriffsspeicher (PCRAM), resistive Direktzugriffsspeicher (ReRAM), Spin-Transfer-Drehmoment-Direktzugriffsspeicher (STT-RAM), magnetoresistive Direktzugriffsspeicher (MRAM) usw.).In some embodiments, a respective data storage device 120 may include a single medium, while in other embodiments, the respective data storage device 120 may include a plurality of media includes directions. In some embodiments, the media devices include NAND flash memory or NOR flash memory. In some embodiments, data storage device 120 may include one or more hard disk drives (HDDs). In some embodiments, data storage devices 120 may include a flash memory device, which in turn includes one or more flash memory chips, one or more flash memory packages, one or more flash memory channels, or the like. However, in some embodiments, one or more of the data storage devices 120 may hold other types of non-volatile data storage media (e.g., phase change random access memory (PCRAM), resistive random access memory (ReRAM), spin transfer torque random access memory (STT-RAM), magnetoresistive random access memory). (MRAM), etc.).

In einigen Ausführungsformen schließt jede Speicherungsvorrichtung 120 eine Vorrichtungssteuerung 130 ein, die eine oder mehrere Verarbeitungseinheiten (manchmal auch CPUs oder Prozessoren oder Mikroprozessoren oder Mikrocontroller genannt) enthält, die zur Ausführung von Anweisungen in einem oder mehreren Programmen eingerichtet sind. In einigen Ausführungsformen werden der eine oder die mehreren Prozessoren von einer oder mehreren Komponenten innerhalb und in einigen Fällen über die Funktion der Vorrichtungsteuerungen hinaus gemeinsam genutzt. Die Medienvorrichtungen 140 sind mit den Vorrichtungssteuerungen 130 über Verbindungen gekoppelt, die üblicherweise zusätzlich zu den Daten Befehle und optional zusätzlich zu den in den Medienvorrichtungen zu speichernden Datenwerten und den von den Medienvorrichtungen 140 gelesenen Datenwerten Metadaten, Fehlerkorrekturinformationen und/oder andere Informationen übermitteln. Die Medienvorrichtungen 140 können eine beliebige Anzahl von (d. h. eine oder mehrere) Arbeitsspeichervorrichtungen einschließen, einschließlich, ohne Einschränkung, nichtflüchtiger Halbleiterspeichervorrichtungen, wie Flash-Speichervorrichtung(en).In some embodiments, each storage device 120 includes a device controller 130 that includes one or more processing units (sometime called CPUs or processors or microprocessors or microcontrollers) configured to execute instructions in one or more programs. In some embodiments, the one or more processors are shared by one or more components within and, in some cases, beyond the function of the device controllers. The media devices 140 are coupled to the device controllers 130 via connections that convey commands, typically in addition to the data, and optionally, metadata, error correction information, and/or other information in addition to the data values to be stored in the media devices and the data values read from the media devices 140 . Media devices 140 may include any number of (i.e., one or more) memory devices including, without limitation, non-volatile solid-state memory devices such as flash memory device(s).

In einigen Ausführungsformen sind die Medienvorrichtungen 140 in den Speicherungsvorrichtungen 120 in eine Anzahl adressierbarer und einzeln auswählbarer Blöcke unterteilt, die manchmal als Löschblöcke bezeichnet werden. In einigen Ausführungsformen sind die individuell auswählbaren Blöcke die löschbaren Einheiten mit minimaler Größe in einer Flash-Speichervorrichtung. Mit anderen Worten: jeder Block enthält die minimale Anzahl von Speicherzellen, die gleichzeitig gelöscht werden können (d. h. in einer einzigen Löschoperation). Jeder Block wird in der Regel weiter unterteilt in eine Vielzahl von Seiten und/oder Wortleitungen, wobei jede Seite oder Wortleitung in der Regel eine Instanz des kleinsten individuell zugänglichen (lesbaren) Abschnitts in einem Block ist. In einigen Ausführungsformen (z. B. unter Verwendung einiger Arten von Flash-Speichern) ist die kleinste individuell zugängliche Einheit eines Datensatzes jedoch ein Sektor oder Codewort, der bzw. das eine Untereinheit einer Seite ist. Das heißt, ein Block schließt eine Vielzahl von Seiten ein, wobei jede Seite eine Vielzahl von Sektoren oder Codewörtern enthält, und jeder Sektor oder jedes Codewort die minimale Dateneinheit zum Lesen von Daten aus der Flash-Speichervorrichtung ist.In some embodiments, media devices 140 in storage devices 120 are divided into a number of addressable and individually selectable blocks, sometimes referred to as erase blocks. In some embodiments, the individually selectable blocks are the minimum sized erasable units in a flash memory device. In other words, each block contains the minimum number of memory cells that can be erased simultaneously (i.e., in a single erase operation). Each block is typically further divided into a plurality of pages and/or wordlines, with each page or wordline typically being an instance of the smallest individually accessible (readable) portion in a block. However, in some embodiments (e.g., using some types of flash memory), the smallest individually accessible unit of a data set is a sector or codeword, which is a subunit of a page. That is, a block includes a plurality of pages, each page containing a plurality of sectors or codewords, and each sector or codeword is the minimum data unit for reading data from the flash memory device.

Eine Dateneinheit kann eine beliebige Größenzuweisung von Daten beschreiben, wie beispielsweise einen Host-Block, ein Datenobjekt, einen Sektor, eine Seite, eine Seite mit mehreren Ebenen, einen Lösch-/Programmierblock, eine Medienvorrichtung/ein Medienpaket, usw. Speicherplätze können physische und/oder logische Standorte auf den Speicherungsvorrichtungen 120 einschließen und je nach Speichermedium, Konfiguration der Speicherungsvorrichtung/des Systems und/oder Kontext auf unterschiedlichen Stufen der Granularität beschrieben und/oder zugewiesen werden. Beispielsweise können Speicherorte bei einer logischen Blockadressierungsdateneinheit (LBA-Dateneinheit) eines Hosts Größe und Adressierbarkeit für Host-Lese/Schreibzwecke zugewiesen werden, aber als Seiten mit Speicherungsvorrichtungsadressierung verwaltet werden, die in der Medien-Flash-Translationsschicht (FTL) in anderen Kontexten verwaltet wird. Mediensegmente können physische Speicherplätze auf Speicherungsvorrichtungen 120 einschließen, die auch einem oder mehreren logischen Speicherplätzen entsprechen können. In einigen Ausführungsformen können Mediensegmente eine kontinuierliche Reihe von physikalischem Speicherort wie benachbarte Dateneinheiten auf einem Speichermedium einschließen und können bei Flash-Speichern einem oder mehreren Medien zum Löschen oder Programmieren der Blöcke entsprechen. Eine logische Datengruppe kann eine Vielzahl logischer Dateneinheiten einschließen, die unabhängig von dem Speicherort auf einer logischen Basis gruppiert sein können, wie Datenobjekte, Dateien oder andere logische Datenkonstrukte, die aus mehreren Host-Blöcken zusammengesetzt sind.A data unit can describe any size assignment of data, such as a host block, a data object, a sector, a page, a multilevel page, an erase/programming block, a media device/packet, etc. Storage spaces can be physical and /or include logical locations on the storage devices 120 and are described and/or assigned at different levels of granularity depending on the storage medium, configuration of the storage device/system, and/or context. For example, storage locations in a host's logical block addressing data unit (LBA data unit) may be allocated size and addressability for host read/write purposes, but managed as pages with storage device addressing managed in the media flash translation layer (FTL) in other contexts . Media segments may include physical storage locations on storage devices 120, which may also correspond to one or more logical storage locations. In some embodiments, media segments may include a continuous series of physical storage locations such as contiguous data units on a storage medium, and in the case of flash memory, may correspond to one or more media for erasing or programming the blocks. A logical data group may include a plurality of logical data entities that may be grouped on a logical basis regardless of storage location, such as data objects, files, or other logical data constructs composed of multiple host blocks.

In einigen Ausführungsformen kann der Host oder das Host-System 102 mit dem Datenspeicherungssystem 100 über eine Netzwerkschnittstelle verbunden sein, die Teil des Strukturnetzwerks des Hosts ist und den Speicherschnittstellenbus 108 als Host-Strukturschnittstelle einschließt. In einigen Ausführungsformen sind mehrere Host-Systeme 102 (von denen in 1 nur eines dargestellt ist) über das Strukturnetzwerk mit dem Datenspeicherungssystem 100 verbunden. Das Netzwerk kann eine Speichernetzwerkschnittstelle oder eine andere Schnittstelle einschließen, die die Kommunikation mit mehreren Host-Systemen 102 unterstützt. Das Strukturnetzwerk kann ein drahtgebundenes und/oder drahtloses Netzwerk (z. B. öffentliche und/oder private Computernetzwerke in beliebiger Anzahl und/oder Konfiguration) einschließen, das auf geeignete Art und Weise zur Datenübertragung gekoppelt werden kann. Das Strukturnetzwerk kann zum Beispiel jedes Mittel eines konventionellen Datenkommunikationsnetzes einschließen, wie ein lokales Bereichsnetz (LAN), ein Weitverkehrsnetz (WAN), ein Telefonnetz, wie das öffentliche Telefonnetz (PSTN), ein Intranet, das Internet oder jedes andere geeignete Kommunikationsnetz oder jede Kombination von Kommunikationsnetzen.In some embodiments, host or host system 102 may be connected to data storage system 100 via a network interface that is part of the host fabric network and includes storage interface bus 108 as a host fabric interface. In some embodiments, multiple host systems 102 (of which 1 only one is shown) over the structure network with the data storage system 100 connected. The network may include a storage network interface or other interface that supports communication with multiple host systems 102 . The fabric network may include a wired and/or wireless network (e.g., public and/or private computer networks of any number and/or configuration) that may be coupled in any suitable manner for data transmission. The fabric network may include, for example, any means of a conventional data communications network, such as a local area network (LAN), a wide area network (WAN), a telephone network such as the public switched telephone network (PSTN), an intranet, the Internet, or any other suitable communications network, or any combination of communication networks.

Das Host-System 102 oder ein entsprechender Host in einem System mit mehreren Hosts kann eine beliebige geeignete Rechenvorrichtung sein, wie beispielsweise ein Computer, ein Computerserver, ein Laptop, ein Tablet, ein Netbook, ein Internet-Kiosk, ein persönlicher digitaler Assistent, ein Mobiltelefon, ein Smartphone, eine Spielvorrichtung oder eine andere Rechnervorrichtung. Das Host-System 102 wird manchmal auch als Host-, Client oder Client-System bezeichnet. In einigen Ausführungsformen ist das Host-System 102 ein Serversystem, wie beispielsweise ein Serversystem in einem Rechenzentrum, oder ein Speicherungssystem, wie beispielsweise ein Speicher-Array in einem Rechenzentrum. In einigen Ausführungsformen handelt es sich bei dem einen oder den mehreren Host-Systemen 102 um eine oder mehrere Host-Vorrichtungen, die sich von einer Speicherungssteuerung oder einem Speicherungsknoten unterscheiden, in dem die Vielzahl der Speicherungsvorrichtungen 120 untergebracht ist. Das eine oder die mehreren Host-Systeme 102 können so eingerichtet sein, dass sie Daten in der Vielzahl von Speicherungsvorrichtungen 120 speichern und darauf zugreifen.Host system 102, or a corresponding host in a multiple host system, may be any suitable computing device such as a computer, computer server, laptop, tablet, netbook, internet kiosk, personal digital assistant, a Mobile phone, smartphone, gaming device or other computing device. The host system 102 is also sometimes referred to as a host, client, or client system. In some embodiments, host system 102 is a server system, such as a server system in a data center, or a storage system, such as a storage array in a data center. In some embodiments, the one or more host systems 102 is one or more host devices other than a storage controller or storage node that houses the plurality of storage devices 120 . The one or more host systems 102 may be configured to store and access data on the plurality of storage devices 120 .

Das Host-System 102 kann eine oder mehrere Zentralverarbeitungseinheiten (CPUs) 104 zur Ausführung von Rechenvorgängen oder Anweisungen für den Zugriff auf Speicherungsvorrichtungen 120 über den Speicherschnittstellenbus 108 einschließen. In einigen Ausführungsformen kann die CPU 104 einen Prozessor einschließen und mit einem Betriebsspeicher (nicht abgebildet) verbunden sein, um sowohl Speichervorgänge als auch ein Speicherschnittstellenprotokoll auszuführen, das mit dem Speicherschnittstellenbus 108 und den Speicherungsvorrichtungen 120 kompatibel ist. In einigen Ausführungsformen kann eine separate Speicherschnittstelleneinheit (nicht abgebildet) das Speicherschnittstellenprotokoll und die zugehörigen Prozessor- und Speicherressourcen bereitstellen. Aus Sicht der Speicherungsvorrichtungen 120 kann der Speicherschnittstellenbus 108 als Host-Schnittstellenbus bezeichnet werden und stellt einen Pfad für Host-Daten zwischen den Speicherungsvorrichtungen 120 und dem Host 102 bereit.Host system 102 may include one or more central processing units (CPUs) 104 for performing computations or instructions to access storage devices 120 via memory interface bus 108 . In some embodiments, CPU 104 may include a processor and may be coupled to operational memory (not shown) to perform both memory operations and a memory interface protocol compatible with memory interface bus 108 and storage devices 120 . In some embodiments, a separate memory interface unit (not shown) may provide the memory interface protocol and associated processor and memory resources. From the storage devices 120 perspective, the storage interface bus 108 may be referred to as a host interface bus and provides a path for host data between the storage devices 120 and the host 102 .

Das Host-System 102 kann eine BMC 106 einschließen, die so eingerichtet ist, dass sie den physischen Zustand des Hosts 102, der Speicherungsvorrichtungen 120 und/oder anderer Komponenten des Datenspeicherungssystems 100 überwacht. In einigen Ausführungsformen kann die BMC 106 Prozessor, Speicher, Sensor und andere Ressourcen einschließen, die in die BMC 106 integriert und/oder über den Steuerbus 110 zugänglich sind. BMC 106 kann so eingerichtet werden, dass sie interne Variablen innerhalb eines Gehäuses, benachbarter Komponenten und/oder von den Komponenten selbst innerhalb des Host 102 oder des Datenspeicherungssystems 100 misst, wie beispielsweise Temperatur, Luftfeuchtigkeit, Versorgungsspannung, Lüfterdrehzahlen, Kommunikationsparameter und/oder Funktionen des Betriebssystems (OS). BMC 106 kann es ermöglichen, Systeme und Komponenten bei Bedarf durch Steuersignale über den Steuerbus 110 aus- und wieder einzuschalten oder neu zu starten. In einigen Ausführungsformen kann BMC 106 so eingerichtet sein, dass sie während der Boot-Zyklen Statuskommunikation von Speicherungsvorrichtungen 120 über den Steuerbus 110 empfängt, bevor die Host-Kommunikation über den Speicherschnittstellenbus 108 initialisiert wird.Host system 102 may include a BMC 106 configured to monitor the physical condition of host 102, storage devices 120, and/or other components of data storage system 100. In some embodiments, BMC 106 may include processor, memory, sensor, and other resources that are integrated into BMC 106 and/or accessible via control bus 110 . BMC 106 may be configured to measure internal variables within a chassis, adjacent components, and/or the components themselves within host 102 or data storage system 100, such as temperature, humidity, supply voltage, fan speeds, communication parameters, and/or functions of the operating system (OS). BMC 106 may allow systems and components to be cycled on and off or restarted as needed by control signals over control bus 110 . In some embodiments, BMC 106 may be configured to receive status communications from storage devices 120 over control bus 110 during boot cycles before host communications over memory interface bus 108 are initiated.

In einigen Ausführungsformen schließt das Datenspeicherungssystem 100 einen oder mehrere Prozessoren, eine oder mehrere Arten von Speicher, ein Display und/oder andere Benutzerschnittstellenkomponenten wie eine Tastatur, einen Touchscreen, eine Maus, ein Trackpad, eine digitale Kamera und/oder eine beliebige Anzahl von zusätzlichen Vorrichtungen ein, um Funktionalität hinzuzufügen. In einigen Ausführungsformen hat das Datenspeicherungssystem 100 kein Display und keine anderen Benutzerschn ittstellenkom ponenten.In some embodiments, data storage system 100 includes one or more processors, one or more types of memory, a display, and/or other user interface components such as a keyboard, touch screen, mouse, trackpad, digital camera, and/or any number of additional ones devices to add functionality. In some embodiments, data storage system 100 has no display or other user interface components.

2 zeigt eine schematische Darstellung eines beispielhaften Speicherungssystems 200, wie beispielsweise das Datenspeicherungssystem mit mehreren Vorrichtungen 100 aus 1, das mit einer Peer-Erkennungsarchitektur eingerichtet ist, um die Nachrichtenübermittlung unter Gleichgestellten über den Steuerbus 110 zu unterstützen. Die Speicherungsvorrichtungen 120 können jeweils an den Steuerbus 110 angeschlossen werden, um mit einem Subsystem für die physische Verwaltung und Leistungsverwaltung auf niedriger Stufe zu kommunizieren, beispielsweise die BMC 106 in 1In einigen Ausführungsformen unterstützt der Steuerbus 110 ein paketbasiertes Multi-Master-Nachrichtensystem, damit er es den Speicherungsvorrichtungen 120.1 ermöglichen kann, zusätzlich zu ihrer Kommunikation mit BMC 106 oder anderen Komponenten des Systems über den Steuerbus 110 mit Peer-Speicherungsvorrichtungen zu kommunizieren. Peer-Nachrichten über den Steuerbus 110 können unabhängig von der Kommunikation über eine primäre Host-Schnittstelle oder eine Strukturschnittstelle, wie beispielsweise den Speicherschnittstellenbus 108 in 1, sein. 2 FIG. 12 shows a schematic representation of an exemplary storage system 200, such as the multiple device data storage system 100 of FIG 1 , which is implemented with a peer discovery architecture to support peer messaging over the control bus 110. Storage devices 120 may each be coupled to control bus 110 to communicate with a low-level physical and power management subsystem, such as BMC 106 in FIG 1 in In some embodiments, control bus 110 supports a multi-master packet-based messaging system to allow storage devices 120.1, in addition to their communi communication with BMC 106 or other components of the system via control bus 110 with peer storage devices. Peer messages over control bus 110 may be independent of communications over a primary host interface or a fabric interface such as memory interface bus 108 in 1 , be.

Jede Peer-Speicherungsvorrichtung 120.1-120.n, die mit dem Steuerbus 110 verbunden ist, kann so eingerichtet werden, dass sie eine Erkennungsnachricht 210 initiiert. Die Erkennungsnachricht 210 kann während des Starts oder der Initialisierung an den Steuerbus 110 gesendet werden. Zum Beispiel kann die Speicherungsvorrichtung 120 das Steuerbusprotokoll verwenden, um eine vorrangige oder vorübergehende Master-Steuerung des Steuerbusses 110 einzurichten und eine Broadcast-Nachricht zu senden, die von allen anderen an den Steuerbus 110 angeschlossenen Vorrichtungen empfangen wirdDie Speicherungsvorrichtung 120.1 kann dabei die Erkennungsnachricht 210.1 an die Speicherungsvorrichtungen 120.2-120.n senden, und jede Peer-Speicherungsvorrichtung kann während einer Systeminitialisierung, eines Leistungszyklus oder eines Neustarts dasselbe tun. Jede an den Steuerbus 110 angeschlossene Peer-Speicherungsvorrichtung 120 kann eine Erkennungsnachricht von jeder anderen Peer-Speicherungsvorrichtung 120 empfangen.Each peer storage device 120.1-120.n connected to the control bus 110 can be arranged to initiate a discovery message 210. The detection message 210 may be sent to the control bus 110 during startup or initialization. For example, storage device 120 may use the control bus protocol to establish primary or temporary master control of control bus 110 and send a broadcast message to be received by all other devices connected to control bus 110. Storage device 120.1 may thereby send discovery message 210.1 the storage devices 120.2-120.n send, and each peer storage device may do the same during system initialization, power cycle, or reboot. Each peer storage device 120 connected to the control bus 110 may receive a discovery message from any other peer storage device 120 .

In einigen Ausführungsformen kann die Erkennungsnachricht 210 eine Vorrichtungskennung 212 und eine Absenderkennung 214 einschließen. Die Vorrichtungskennung 212 kann eine eindeutige Kennung für diese Speicherungsvorrichtung im Verhältnis zu allen anderen an den Steuerbus 110 angeschlossenen Vorrichtungen einschließen. In einigen Ausführungsformen kann die Vorrichtungskennung 212 eine Produktseriennummer und/oder eine eindeutige Adresse einschließen, die der jeweiligen Speicherungsvorrichtung zugewiesen ist. Zum Beispiel kann jeder Vorrichtung, die an den Steuerbus 110 angeschlossen ist, eine 7-Bit-Adresse zugewiesen werden, die diese Vorrichtung am Steuerbus 110 eindeutig identifiziert. Nachrichten, die für diese Speicherungsvorrichtung bestimmt sind, schließen die Adresse in die Nachrichtensequenz ein, und nur die Speicherungsvorrichtung mit der passenden Adresse verarbeitet den Inhalt der Nachricht. Nachrichten können auch mit einer reservierten Broadcast- oder allgemeinen Rufadresse gesendet werden, damit die Nachricht von allen Vorrichtungen empfangen und verarbeitet werden kann.In some embodiments, the discovery message 210 may include a device identifier 212 and a sender identifier 214 . Device identifier 212 may include a unique identifier for that storage device relative to all other devices connected to control bus 110 . In some embodiments, device identifier 212 may include a product serial number and/or a unique address assigned to the respective storage device. For example, each device attached to control bus 110 may be assigned a 7-bit address that uniquely identifies that device on control bus 110. Messages destined for that storage device include the address in the message sequence and only the storage device with the matching address processes the content of the message. Messages can also be sent with a reserved broadcast or public address to allow all devices to receive and process the message.

Die Anbieterkennung 214 kann eine Gruppenkennung einschließen, die Speicherungsvorrichtungen kennzeichnet, die bestimmte Kriterien erfüllen, wie beispielsweise Speicherungsvorrichtungen, die von einem bestimmten Unternehmen hergestellt oder verkauft werden oder die gemäß einem bestimmten Peer-Nachrichtenprotokoll oder -standard eingerichtet sind. Die Anbieterkennung 214 kann zum Beispiel eine numerische Kennung für Speicherungsvorrichtungen eines bestimmten Anbieters einschließen, die für Peer-Nachrichten über den Steuerbus aktiviert sind. Anbieterkennungen können von bestimmten Herstellern gemäß Arbeitsgruppen- oder Standardvereinbarungen oder auf andere Art und Weise definiert und zugewiesen werden, um sicherzustellen, dass die Anbieterkennungen eindeutig sind und dazu dienen, Speicherungsvorrichtungen, die mit bestimmten Peer-Nachrichtenprotokollen und - inhalten kompatibel sind, korrekt zu identifizieren.Vendor identifier 214 may include a group identifier that identifies storage devices that meet certain criteria, such as storage devices that are manufactured or sold by a particular company or that are configured according to a particular peer messaging protocol or standard. Vendor identifier 214 may include, for example, a numeric identifier for storage devices from a particular vendor that are enabled for peer messaging over the control bus. Provider identifiers may be defined and assigned by certain manufacturers pursuant to working group or standard agreements or otherwise to ensure that the provider identifiers are unique and used to correctly identify storage devices that are compatible with specific peer messaging protocols and content .

In einigen Ausführungsformen kann jede Speicherungsvorrichtung 120 Erkennungsnachrichten 210 verwenden, die von Peer-Speicherungsvorrichtungen empfangen werden, um eine interne Datenstruktur zum Speichern der Adressen einer oder mehrerer Peer-Speicherungsvorrichtungen aufzufüllen. Zum Beispiel kann jede Speicherungsvorrichtung 120 eine Peer-Vorrichtungstabelle 220 in einem internen Speicherort führen, um die Adressen, Vorrichtungskennungen 212 und/oder Anbieterkennungen 214 jeder anderen Peer-Speicherungsvorrichtung aufzulisten, die an den Steuerbus 110 angeschlossen ist. In einigen Ausführungsformen kann die Peer-Vorrichtungstabelle 220 eine Reihe, Liste oder ein Array von Peer-Vorrichtungskennungseinträgen 222 einschließen. Zum Beispiel kann jedes Mal, wenn eine Erkennungsnachricht mit einer anderen Vorrichtungskennung 212 empfangen wird (und eine entsprechende Anbieterkennung 214 einschließt, die die Vorrichtung als Peer-Speicherungsvorrichtung für Nachrichtenzwecke kennzeichnet), diese Vorrichtungskennung 212 als ein neuer Peer-Vorrichtungskennungseintrag 222 in die Peer-Vorrichtungstabelle 220 eingetragen werden. Nachdem alle Erkennungsnachrichten 210 empfangen wurden, kann jede Speicherungsvorrichtung 120 eine vollständige Peer-Vorrichtungstabelle 220 mit den Informationen einschließen, die erforderlich sind, um über den Steuerbus 110 Nachrichten an jede andere Peer-Speicherungsvorrichtung zu senden.In some embodiments, each storage device 120 may use discovery messages 210 received from peer storage devices to populate an internal data structure for storing the addresses of one or more peer storage devices. For example, each storage device 120 may maintain a peer device table 220 in an internal memory location to list the addresses, device identifiers 212 and/or provider identifiers 214 of every other peer storage device connected to the control bus 110 . In some embodiments, peer device table 220 may include a row, list, or array of peer device identifier entries 222 . For example, each time a discovery message is received with a different device identifier 212 (and includes a corresponding provider identifier 214 identifying the device as a peer storage device for message purposes), that device identifier 212 can be included as a new peer device identifier entry 222 in the peer Device table 220 are entered. After all discovery messages 210 have been received, each storage device 120 may include a complete peer device table 220 with the information required to send messages over the control bus 110 to every other peer storage device.

3 zeigt eine schematische Darstellung eines beispielhaften Speicherungssystems 300, wie das Datenspeicherungssystem mit mehreren Vorrichtungen 100 in 1, eingerichtet mit einer Peer-Nachrichtenarchitektur zur Unterstützung verschiedener Typen von Peer-Nachrichten 310, 320, 330 über den Steuerbus 110. Die Speicherungsvorrichtungen 120 können jeweils an den Steuerbus 110 angeschlossen werden, um mit einem Subsystem für die physische Verwaltung und Leistungsverwaltung auf niedriger Stufe zu kommunizieren, beispielsweise die BMC 106 in 1. 3 12 shows a schematic representation of an exemplary storage system 300, such as the data storage system with multiple devices 100 in FIG 1 , implemented with a peer message architecture to support various types of peer messages 310, 320, 330 over the control bus 110. The storage devices 120 can each be connected to the control bus 110 to communicate with a subsystem for physical management and low-level power management to communicate, for example the BMC 106 in 1 .

In einigen Ausführungsformen unterstützt der Steuerbus 110 ein paketbasiertes Multi-Master-Nachrichtensystem, das es den Speicherungsvorrichtungen 120.1 ermöglichen kann, zusätzlich zu ihrer Kommunikation mit BMC 106 oder anderen an den Steuerbus 110 angeschlossenen Systemkomponenten über den Steuerbus 110 mit anderen Speicherungsvorrichtungen zu kommunizieren. Zum Beispiel kann jede Vorrichtung in der Lage sein, die Master-Steuerung oder Priorität anzufordern oder durchzusetzen, um Nachrichten über den Steuerbus 110 an Peer-Speicherungsvorrichtungen zu senden, die als Slaves arbeiten. Peer-Nachrichten über den Steuerbus 110 können unabhängig von der Kommunikation über eine primäre Host-Schnittstelle oder eine Strukturschnittstelle, wie beispielsweise den Speicherschnittstellenbus 108 in 1, sein.In some embodiments, control bus 110 supports a multi-master packet-based messaging system that may allow storage devices 120.1 to communicate with other storage devices via control bus 110 in addition to communicating with BMC 106 or other system components connected to control bus 110. For example, each device may be able to request or enforce master control or priority to send messages over control bus 110 to peer storage devices operating as slaves. Peer messages over control bus 110 may be independent of communications over a primary host interface or a fabric interface such as memory interface bus 108 in 1 , be.

Jede an den Steuerbus 110 angeschlossene Peer-Speicherungsvorrichtung 120.1-120.n kann so eingerichtet werden, dass sie unter Verwendung der vom Steuerbus 110 unterstützten Adressen und Nachrichtensyntax eine oder mehrere Nachrichten 310, 320, 330 initiiert. Obwohl jede beispielhafte Nachricht von einer bestimmten Speicherungsvorrichtung 120 stammt, kann jede Speicherungsvorrichtung 120 so eingerichtet werden, dass sie einen oder alle Typen von Nachrichten verwendet. Die Peer-Nachricht 310 kann von den Speicherungsvorrichtungen 120 verwendet werden, um direkte Nachrichten an eine Speicherungsvorrichtung des Ziels zu senden, wie beispielsweise eine Nachricht, die ausgewählte interne Betriebsdaten zum Auslagern oder Sichern enthält und/oder die zuvor gespeicherten internen Wiederherstellungsbetriebsdaten anfordert. Die Broadcast-Nachricht 320 kann von den Speicherungsvorrichtungen 120 verwendet werden, um Nachrichten an alle Peer-Speicherungsvorrichtungen gleichzeitig zu senden, wie beispielsweise eine Nachricht, die interne Betriebsdaten enthält, die redundant gespeichert werden sollen, oder eine Anforderung zur Wiederherstellung von zuvor gespeicherten internen Wiederherstellungsbetriebsdaten, wenn mehr als eine Peer-Speicherungsvorrichtung die benötigten Daten enthält. Die Antwortnachricht 330 kann von den Speicherungsvorrichtungen 120 verwendet werden, um Nachrichten an eine andere Speicherungsvorrichtung zu senden, die Daten angefordert hat, wie beispielsweise die Antwort auf eine Wiederherstellungsanforderung durch Senden der angeforderten internen Betriebsdaten. Es ist zu beachten, dass die Antwortnachricht 330 Datennutzlast einschließt und in einigen Ausführungsformen voraussetzt, dass die sendende Speicherungsvorrichtung die Kontrolle oder Priorität des Masters hat, und dass sie sich von einfachen Bestätigungsnachrichten unterscheidet, die Teil des Protokolls zur Behandlung von Nachrichten des Slaves sein können.Each peer storage device 120.1-120.n connected to the control bus 110 can be configured to initiate one or more messages 310, 320, 330 using the addresses and message syntax supported by the control bus 110. Although each example message originates from a particular storage device 120, each storage device 120 may be configured to use any or all types of messages. The peer message 310 may be used by the storage devices 120 to send direct messages to a destination storage device, such as a message containing selected internal operational data for swapping or backup and/or requesting the previously stored internal recovery operational data. Broadcast message 320 may be used by storage devices 120 to broadcast messages to all peer storage devices simultaneously, such as a message containing internal operational data to be redundantly stored or a request to restore previously stored internal recovery operational data , if more than one peer storage device contains the required data. Response message 330 may be used by storage devices 120 to send messages to another storage device that has requested data, such as responding to a restore request by sending the requested internal operational data. Note that the response message 330 includes data payload and, in some embodiments, assumes that the sending storage device has control or priority of the master, and is distinct from simple acknowledgment messages, which may be part of the slave's message handling protocol .

In einigen Ausführungsformen kann die Nachricht 310 eine Senderkennung (312), eine Zielkennung (314), eine Absenderkennung (316) und Nutzdaten (318) einschließen. Die Senderkennung 312 kann zum Beispiel die Vorrichtungskennung für die sendende Speicherungsvorrichtung und/oder die Steuerbusadresse der sendenden Speicherungsvorrichtung einschließen. Die Zielkennung 314 kann die Vorrichtungskennung für die Speicherungsvorrichtung und/oder die Steuerbusadresse der Speicherungsvorrichtung einschließen. In einigen Ausführungsformen kann die Zielkennung 314 eine Vorrichtungskennung einschließen, die von der Steuerbusadresse getrennt ist, die von den Vorrichtungen auf dem Steuerbus 110 verwendet wird, um das Ziel zu bestimmen. Die Absenderkennung 316 kann eine Absenderkennung einschließen, wie sie vorstehend in Bezug auf die Absenderkennungen 214 in 2 beschrieben wurde. Die Nutzdaten 318 können Daten einschließen, die von der sendenden Speicherungsvorrichtung, wie beispielsweise der Speicherungsvorrichtung 120.1, erstellt und von der Speicherungsvorrichtung des Ziels gespeichert werden. Die Nutzdaten 318 können zum Beispiel interne Betriebsdaten einschließen, die zum Auslagern oder Sichern auf anderen Speicherungsvorrichtungen identifiziert wurden. In einigen Ausführungsformen können die Nutzdaten 318 Wiederherstellungsparameter einschließen, die zuvor ausgelagerte oder gespeicherte Daten beschreiben, die von der sendenden Speicherungsvorrichtung zur Rückgewinnung von Daten benötigt werden, wie beispielsweise die Wiederherstellung von verlorenen Ereignisprotokollen, Debug-Daten oder Daten der letzten guten Seite.In some embodiments, message 310 may include a sender identifier (312), a destination identifier (314), a sender identifier (316), and payload (318). The sender identifier 312 may include, for example, the device identifier for the sending storage device and/or the control bus address of the sending storage device. The destination identifier 314 may include the device identifier for the storage device and/or the control bus address of the storage device. In some embodiments, destination identifier 314 may include a device identifier, separate from the control bus address, used by devices on control bus 110 to determine the destination. Sender identifier 316 may include a sender identifier as described above with respect to sender identifiers 214 in 2 was described. Payload 318 may include data created by the sending storage device, such as storage device 120.1, and stored by the destination storage device. For example, payload 318 may include internal operational data identified for offloading or backup to other storage devices. In some embodiments, payload 318 may include recovery parameters describing previously swapped or stored data required by the sending storage device to recover data, such as recovery of lost event logs, debug data, or last good page data.

In einigen Ausführungsformen kann die Broadcast-Nachricht 320 eine Senderkennung 322, eine Broadcast-Adresse 324, eine Absenderkennung 326 und Nutzdaten 328 einschließen. Die Senderkennung 322 kann zum Beispiel die Vorrichtungskennung für die sendende Speicherungsvorrichtung und/oder die Steuerbusadresse der sendenden Speicherungsvorrichtung einschließen. Die Broadcast-Adresse 324 kann eine reservierte Adresse, ein Header-Tag oder eine ähnliche Kennung einschließen, um eine Broadcast-Nachricht zu kennzeichnen, die an alle Vorrichtungen am Steuerbus 110 gesendet werden soll. Die Absenderkennung 326 kann eine Absenderkennung einschließen, wie sie vorstehend in Bezug auf die Absenderkennungen 214 in 2 beschrieben wurde. Die Nutzdaten 328 können Daten einschließen, die von der sendenden Speicherungsvorrichtung, wie beispielsweise der Speicherungsvorrichtung 120.1, erstellt wurden, um von einer oder mehreren Peer-Speicherungsvorrichtungen gespeichert zu werden. Die Nutzdaten 328 können zum Beispiel interne Betriebsdaten einschließen, die zum Auslagern oder Sichern auf anderen Speicherungsvorrichtungen identifiziert wurden. In einigen Ausführungsformen können die Nutzdaten 318 Wiederherstellungsparameter einschließen, die zuvor ausgelagerte oder gespeicherte Daten beschreiben, die von der sendenden Speicherungsvorrichtung zur Rückgewinnung von Daten benötigt werden, wie beispielsweise die Wiederherstellung von verlorenen Ereignisprotokollen, Debug-Daten oder Daten der letzten guten Seite.In some embodiments, broadcast message 320 may include sender identifier 322 , broadcast address 324 , sender identifier 326 , and payload 328 . The sender identifier 322 may include, for example, the device identifier for the sending storage device and/or the control bus address of the sending storage device. Broadcast address 324 may include a reserved address, header tag, or similar identifier to identify a broadcast message to be sent to all devices on control bus 110 . Sender identifier 326 may include a sender identifier as described above with respect to sender identifiers 214 in 2 was described. Payload 328 may include data created by the sending storage device, such as storage device 120.1, for storage by one or more peer storage devices. For example, payload 328 may include internal operational data identified for offloading or backing up to other storage devices became. In some embodiments, payload 318 may include recovery parameters describing previously swapped or stored data required by the sending storage device to recover data, such as recovery of lost event logs, debug data, or last good page data.

In einigen Ausführungsformen kann die Antwortnachricht 330 eine Senderkennung (332), eine Zielkennung (334), eine Absenderkennung (336) und eine Datennutzlast (338) einschließen. Die Antwortnachricht 330 kann sich von der Peer-Nachricht 310 dadurch unterscheiden, dass sie auf den Empfang der Peer-Nachricht 310 reagiert. Zum Beispiel kann die Peer-Nachricht 310 eine Wiederherstellungsanforderung einschließen, die Parameter enthält, die zuvor gespeicherte interne Betriebsdaten beschreiben, und die Antwortnachricht 330 kann auf die Peer-Nachricht 310 mit den angeforderten Wiederherstellungsdaten antworten. Die Senderkennung 332 kann die Vorrichtungskennung für die sendende Speicherungsvorrichtung und/oder die Steuerbusadresse der sendenden Speicherungsvorrichtung einschließen. Die Zielkennung 334 kann die Vorrichtungskennung für die Speicherungsvorrichtung und/oder die Steuerbusadresse der Speicherungsvorrichtung einschließen, im Allgemeinen die Speicherungsvorrichtung, von der die Anforderung zur Wiederherstellung empfangen wurde. Die Absenderkennung 336 kann eine Absenderkennung einschließen, wie sie vorstehend in Bezug auf die Absenderkennungen 214 in 2 beschrieben wurde. Die Nutzdaten 338 können Daten einschließen, die zuvor von der sendenden Speicherungsvorrichtung von und über die anfragende Speicherungsvorrichtung gespeichert wurden, die nun das Ziel der Speicherungsvorrichtung für die Antwortnachricht 330 sein kann. Die Nutzdaten 318 können zum Beispiel interne Betriebsdaten einschließen, die für die Wiederherstellung der Zielspeicherungsvorrichtung, die die Wiederherstellungsdaten angefordert hat, identifiziert wurden.In some embodiments, the response message 330 may include a sender identifier (332), a destination identifier (334), a sender identifier (336), and a data payload (338). The response message 330 may differ from the peer message 310 in that it is responsive to the peer message 310 being received. For example, peer message 310 may include a restore request containing parameters describing previously stored internal operational data, and response message 330 may respond to peer message 310 with the requested restore data. The sender identifier 332 may include the device identifier for the sending storage device and/or the control bus address of the sending storage device. The destination identifier 334 may include the device identifier for the storage device and/or the control bus address of the storage device, generally the storage device from which the request for restoration was received. Sender identifier 336 may include a sender identifier as described above with respect to sender identifiers 214 in 2 was described. Payload 338 may include data previously stored by the sending storage device from and about the requesting storage device, which may now be the target of the response message 330 storage device. For example, payload 318 may include internal operational data identified for recovery of the target storage device that requested the recovery data.

4 zeigt eine schematische Darstellung eines beispielhaften Host-Systems 102. Das Host-System 102 kann einen Bus 410, einen Prozessor 420, einen lokalen Speicher 430, eine oder mehrere optionale Eingabeeinheiten 440, eine oder mehrere optionale Ausgabeeinheiten 450 und eine Kommunikationsschnittstelle 460 aufweisen. Bus 410 kann einen oder mehrere Leiter einschließen, die die Kommunikation zwischen den Komponenten von Host 102 ermöglichen. Prozessor 420 kann einen beliebigen Typ von herkömmlichem Prozessor oder Mikroprozessor einschließen, der Anweisungen interpretiert und ausführt. Der lokale Speicher 430 kann einen Speicher mit wahlfreiem Zugriff (Random Access Memory, RAM) oder einen anderen Typ von dynamischer Speicherungsvorrichtung, die Informationen und Anweisungen zur Ausführung durch den Prozessor 420 speichert, und/oder einen Festwertspeicher (Read Only Memory, ROM) oder einen anderen Typ von statischer Speichervorrichtung, die statische Informationen und Anweisungen zur Verwendung durch den Prozessor 420 speichert, und/oder ein beliebiges geeignetes Speicherelement, wie eine Festplatte oder ein Solid-State-Speicherelement, einschließen. Eine optionale Eingabeeinheit 440 kann einen oder mehrere herkömmliche Mechanismen einschließen, die es einem Bediener ermöglichen, Informationen in den Host 102 einzugeben, beispielsweise eine Tastatur, eine Maus, einen Stift, Spracherkennung und/oder biometrische Mechanismen usw. Die optionale Ausgabeeinheit 450 kann einen oder mehrere herkömmliche Mechanismen einschließen, die Informationen an den Bediener ausgeben, wie beispielsweise eine Anzeige, einen Drucker, einen Lautsprecher, usw. Die Kommunikationsschnittstelle 460 kann jeden Sendeempfänger-ähnlichen Mechanismus einschließen, der es dem Host 102 ermöglicht, mit anderen Vorrichtungen und/oder Systemen zu kommunizieren. In einigen Ausführungsformen kann die Kommunikationsschnittstelle 460 eine oder mehrere periphere Vorrichtungen einschließen, wie beispielsweise eine PCIe-Schnittstelle zur Verbindung mit den Speicherungsvorrichtungen 120. 4 10 shows a schematic representation of an exemplary host system 102. The host system 102 may include a bus 410, a processor 420, local memory 430, one or more optional input devices 440, one or more optional output devices 450, and a communications interface 460. Bus 410 may include one or more conductors that enable communication between host 102 components. Processor 420 can include any type of conventional processor or microprocessor that interprets and executes instructions. The local memory 430 may be a random access memory (RAM) or other type of dynamic storage device that stores information and instructions for execution by the processor 420, and/or a read-only memory (ROM) or another type of static storage device that stores static information and instructions for use by processor 420, and/or any suitable storage element, such as a hard drive or solid-state storage element. An optional input device 440 may include one or more conventional mechanisms that allow an operator to input information into the host 102, such as a keyboard, mouse, pen, speech recognition and/or biometric mechanisms, etc. The optional output device 450 may include one or include several conventional mechanisms that output information to the operator, such as a display, printer, speaker, etc. Communications interface 460 may include any transceiver-like mechanism that allows host 102 to communicate with other devices and/or systems to communicate. In some embodiments, communication interface 460 may include one or more peripheral devices, such as a PCIe interface for connection to storage devices 120.

5 zeigt schematisch ausgewählte Module einer Speicherungsvorrichtung 500, die für Peer-Nachrichten eingerichtet sind, wie beispielsweise die Speicherungsvorrichtungen 120. Speicherungsvorrichtung 500 kann Elemente und Konfigurationen enthalten, die den in 1-4 gezeigten ähnlich sind. Speicherungsvorrichtung 500 kann zum Beispiel als eine Speicherungsvorrichtung 120 in einer Gruppe von gleichrangigen Speicherungsvorrichtungen eingerichtet werden, die über einen Steuerbus miteinander verbunden sind und eine Host- oder Speicherbusschnittstelle für die Datenübertragung zu und von einem Host in einem Datenspeicherungssystem mit mehreren Vorrichtungen einschließen. 5 FIG. 12 schematically shows selected modules of a storage device 500 configured for peer messaging, such as storage devices 120. Storage device 500 may include elements and configurations that conform to those described in FIG 1-4 shown are similar. For example, storage device 500 may be implemented as one storage device 120 in a group of peer storage devices interconnected via a control bus and including a host or memory bus interface for data transfer to and from a host in a multiple device data storage system.

Speicherungsvorrichtung 500 kann einen Bus 510 einschließen, der mindestens einen Prozessor 512, mindestens einen Speicher 514 und mindestens eine Schnittstelle, wie Speicherbusschnittstelle 516 und Steuerbusschnittstelle 518, miteinander verbindet. Bus 510 kann einen oder mehrere Leiter einschließen, die die Kommunikation zwischen den Komponenten der Speicherungsvorrichtung 500 ermöglichen. Prozessor 512 kann jeden Typ von Prozessor oder Mikroprozessor einschließen, der Anweisungen oder Vorgänge interpretiert und ausführt. Speicher 514 kann einen Speicher mit wahlfreiem Zugriff (RAM) oder einen anderen Typ einer dynamischen Speicherungsvorrichtung einschließen, der Informationen und Anweisungen zur Ausführung durch Prozessor 512 speichert, und/oder einen Festwertspeicher (ROM) oder einen anderen Typ einer statischen Speicherungsvorrichtung, der statische Informationen und Anweisungen zur Verwendung durch Prozessor 512 speichert, und/oder ein beliebiges geeignetes Speicherelement wie eine Festplatte oder ein Festkörperspeicherelement.Storage device 500 may include a bus 510 interconnecting at least one processor 512, at least one memory 514, and at least one interface, such as memory bus interface 516 and control bus interface 518. Bus 510 may include one or more conductors that enable communication between the components of storage device 500. Processor 512 can include any type of processor or microprocessor that interprets and executes instructions or operations. Memory 514 may be random access memory (RAM) or another type of dynamic storage device that stores information and instructions for execution by processor 512, and/or a read-only memory (ROM) or other type of static storage device that stores static information and instructions for use by processor 512, and/or any suitable storage element such as a Hard drive or solid state storage device.

Speicherbusschnittstelle 516 kann eine physische Schnittstelle zur Verbindung mit einem Host einschließen, der ein Schnittstellenprotokoll verwendet, das den Zugriff auf die Speicherungsvorrichtung unterstützt. Zum Beispiel kann Speicherbusschnittstelle 516 einen PCle-, SATA-, SAS- oder ähnlichen Speicherschnittstellenverbinder einschließen, der den NVMe-Zugriff auf Festkörpermedien unterstützt, die nichtflüchtige Speicherungsvorrichtungen 520 aufweisen. Steuerbusschnittstelle 518 kann eine physische Schnittstelle für den Anschluss an einen Steuerbus einschließen, der ein Schnittstellenprotokoll mit geringer Bandbreite zur Nachrichtenübermittlung auf niedriger Stufe zwischen den Komponenten der Datenverarbeitung verwendet. Steuerbusschnittstelle 518 kann zum Beispiel einen I2C-, I3C-, SM Bus- oder ähnlichen Busschnittstellenverbinder einschließen, der die Nachrichtenübermittlung von Komponente zu Komponente unterstützt, wie beispielsweise die paketbasierte Multi-Master-Nachrichtenübermittlung über einen Zweidrahtbus.Storage bus interface 516 may include a physical interface for connecting to a host using an interface protocol that supports access to the storage device. For example, storage bus interface 516 may include a PCIe, SATA, SAS, or similar storage interface connector that supports NVMe access to solid-state media having non-volatile storage devices 520 . Control bus interface 518 may include a physical interface for attachment to a control bus that uses a low-bandwidth interface protocol for low-level messaging between computing components. Control bus interface 518 may include, for example, an I2C, I3C, SM Bus, or similar bus interface connector that supports component-to-component messaging, such as multi-master packet-based messaging over a two-wire bus.

Speicherungsvorrichtung 500 kann eine oder mehrere nichtflüchtige Speicherungsvorrichtungen 520 einschließen, die zum Speichern von Host-Daten eingerichtet sind. Nichtflüchtige Speicherungsvorrichtungen 520 können zum Beispiel eine Vielzahl von Flash-Speicherpaketen einschließen, die als adressierbares Speicherarray organisiert sind. In einigen Ausführungsformen können die nichtflüchtigen Speichervorrichtungen 520 NAND- oder NOR-Flash-Speicher einschließen, die einstufige Zellen (SLC), mehrstufige Zellen (MLC) oder dreistufige Zellen aufweisen.Storage device 500 may include one or more non-volatile storage devices 520 configured to store host data. For example, non-volatile storage devices 520 may include a plurality of flash memory packages organized as an addressable memory array. In some embodiments, non-volatile memory devices 520 may include NAND or NOR flash memory having single-level cells (SLC), multi-level cells (MLC), or tri-level cells.

Speicherungsvorrichtung 500 kann eine Vielzahl von Modulen oder Subsystemen einschließen, die im Speicher 514 gespeichert und/oder instanziiert werden, um vom Prozessor 512 als Anweisungen oder Vorgänge ausgeführt zu werden. Zum Beispiel kann Speicher 514 eine Host-Schnittstelle 530 einschließen, die so eingerichtet ist, dass sie Datenanforderungen von Client- oder Host-Systemen empfängt, verarbeitet und darauf antwortet. Speicher 514 kann eine Steuerung für nichtflüchtige Speicher (NVM) 534 einschließen, die so eingerichtet ist, dass sie Lese- und Schreibvorgänge auf nichtflüchtigen Speichervorrichtungen 520 verwaltet. Speicher 514 kann Vor-Host-Vorgänge einschließen, die für niedrigstufige Betriebssystem- und Firmwarefunktionen innerhalb der Speicherungsvorrichtung 500 eingerichtet sind, die unabhängig von Host-Befehlen ausgeführt werden, insbesondere während der Hochstufung, der Initialisierung, des Stromwechsels oder des ungeplanten Herunterfahrens (UGSD) der Vorrichtung. Speicher 514 kann ein Steuerbusprotokoll einschließen, das so eingerichtet ist, dass es die Kommunikation über Steuerbusschnittstelle 518 gemäß einem bestimmten Protokoll oder Standard verwaltet. Speicher 514 kann interne Betriebsdaten 550 einschließen, die so eingerichtet sind, dass sie niedrigstufige Betriebsdaten für Speicherungsvorrichtung 500 speichern, die für die Vorrichtungsverwaltung und Fehlersuche verwendet werden. Speicher 514 kann einen Peer-Freigabedienst 560 einschließen, der für die Kommunikation zwischen Speicherungsvorrichtungen eingerichtet ist, die an denselben Steuerbus wie Speicherungsvorrichtung 500 angeschlossen sind.Storage device 500 may include a variety of modules or subsystems that are stored and/or instantiated in memory 514 for execution by processor 512 as instructions or operations. For example, storage 514 may include a host interface 530 configured to receive, process, and respond to data requests from client or host systems. Memory 514 may include a non-volatile memory controller (NVM) 534 configured to manage reads and writes to non-volatile memory devices 520 . Storage 514 may include pre-host operations arranged for low-level operating system and firmware functions within storage device 500 that execute independently of host commands, particularly during promotion, initialization, power transition, or unplanned shutdown (UGSD) the device. Memory 514 may include a control bus protocol configured to manage communications over control bus interface 518 according to a particular protocol or standard. Memory 514 may include internal operational data 550 configured to store low-level operational data for storage device 500 used for device management and debugging. Storage 514 may include a peer sharing service 560 configured for communication between storage devices attached to the same control bus as storage device 500 .

Host-Schnittstelle 530 kann ein Schnittstellenprotokoll und/oder einen Satz von Funktionen und Parametern einschließen, um Datenanforderungen eines Hosts zu empfangen, zu analysieren, zu beantworten und anderweitig zu verwalten. Host-Schnittstelle 530 kann zum Beispiel Funktionen zum Empfangen und Verarbeiten von Host-Anforderungen zum Lesen, Schreiben, Ändern oder anderweitigen Manipulieren von Datenblöcken und ihren jeweiligen Client- oder Host-Daten und/oder Metadaten gemäß den Host-Kommunikations- und Speicherprotokollen einschließen. In einigen Ausführungsformen kann Host-Schnittstelle 530 den direkten Speicherzugriff und/oder den Zugriff über NVMe-Protokolle über Speicherbusschnittstelle 516 auf Host-Dateneinheiten 520.3 ermöglichen, die in nichtflüchtigen Speicherungsvorrichtungen 520 gespeichert sind. Zum Beispiel kann Host-Schnittstelle 530 Host-Kommunikationsprotokolle einschließen, die mit PCle, SATA, SAS und/oder einer anderen Busschnittstelle kompatibel sind, die die Unterstützung von NVMe-Protokollen für den Zugriff auf Host-Daten 520.3 verwendet.Host interface 530 may include an interface protocol and/or a set of functions and parameters to receive, analyze, respond to, and otherwise manage data requests from a host. For example, host interface 530 may include functions to receive and process host requests to read, write, modify, or otherwise manipulate data blocks and their respective client or host data and/or metadata according to host communication and storage protocols. In some embodiments, host interface 530 may enable direct memory access and/or access via NVMe protocols via memory bus interface 516 to host data units 520.3 stored in non-volatile storage devices 520. For example, host interface 530 may include host communication protocols compatible with PCIe, SATA, SAS, and/or any other bus interface that uses support for NVMe protocols to access host data 520.3.

In einigen Ausführungsformen kann Host-Schnittstelle 530 eine Vielzahl von Hardware- und/oder Softwaremodulen einschließen, die so eingerichtet sind, dass sie Prozessor 512 und Speicher 514 verwenden, um definierte Vorgänge der Host-Schnittstelle 530 zu bearbeiten oder zu verwalten. Zum Beispiel kann Host-Schnittstelle 530 ein Speicherschnittstellenprotokoll 532 einschließen, das so eingerichtet ist, dass es mit den physikalischen, Transport- und Speicheranwendungsprotokollen übereinstimmt, die vom Host für die Kommunikation über Speicherbusschnittstelle 516 unterstützt werden. Zum Beispiel kann Speicherschnittstellenprotokoll 532 sowohl PCle- als auch NVMe-konforme Kommunikations-, Befehls- und Syntaxfunktionen, -prozeduren und Datenstrukturen einschließen. In einigen Ausführungsformen kann Host-Schnittstelle 530 zusätzliche Module (nicht abgebildet) für die Befehlsbearbeitung, die Pufferverwaltung, die Verwaltung der Speichervorrichtung und die Berichterstattung sowie andere hostseitige Funktionen einschließen.In some embodiments, host interface 530 may include a variety of hardware and/or software modules configured to use processor 512 and memory 514 to process or manage defined host interface 530 operations. For example, host interface 530 may include a memory interface protocol 532 configured to conform to the physical, transport, and memory application protocols supported by the host for memory bus interface 516 communication. For example, storage interface protocol 532 may include both PCle and NVMe compliant communication, command, and syntax functions, procedures, and data structures. In some embodiments, host interface 530 may include additional modules (not shown) for command processing, buffer management, storage device management and reporting, and other host-side functions.

NVM-Controller 534 kann ein Schnittstellenprotokoll und/oder einen Satz von Funktionen und Parametern zum Lesen, Schreiben und Löschen von Dateneinheiten in nichtflüchtigen Speichervorrichtungen 520 einschließen. Host-Schnittstelle 530 kann zum Beispiel Funktionen zur Ausführung von Host-Datenvorgängen einschließen, die mit Host-Speicherbefehlen zusammenhängen, die über Host-Schnittstelle 530 empfangen werden. Zum Beispiel können PUT- oder Schreibbefehle eingerichtet werden, um Host-Dateneinheiten in nichtflüchtige Speichervorrichtungen 520 zu schreiben. GET- oder Lesebefehle können eingerichtet werden, um Daten aus nichtflüchtigen Speichervorrichtungen 520 zu lesen. DELETE-Befehle können so eingerichtet werden, dass sie Daten aus nichtflüchtigen Speicherungsvorrichtungen 520 löschen oder mindestens einen Speicherplatz zur Löschung markieren, bis ein zukünftiger Speicherbereinigungs- oder ähnlicher Vorgang die Daten tatsächlich löscht oder den physischen Speicherplatz einem anderen Zweck zuweist. In einigen Ausführungsformen kann die NVM-Steuerung 534 die Verwaltung der Flash-Übersetzungsschicht (FTL), die Datenzustandsmaschine, die Verwaltung der Lese-/Schreibpuffer, die Schnittstellenprotokolle für NVM-Vorrichtungen, die Konfiguration/Verwaltung/Wartung von NVM-Vorrichtungen und andere vorrichtungsseitige Funktionen einschließen. In einigen Ausführungsformen kann NVM-Steuerung 534 so eingerichtet sein, dass sie einen Abschnitt der Speicherorte in den nichtflüchtigen Speichervorrichtungen 520 zur Speicherung von anderen Daten als den Host-Daten 520.3 zuweist. Zum Beispiel kann NVM-Steuerung 534 Vorrichtungsdaten 520.1 als Speicherorte zuweisen, die für interne Vorrichtungsdaten reserviert sind, einschließlich Vorrichtungskonfigurations-, Parameter- und interne Betriebsdaten. In einigen Ausführungsformen kann NVM-Steuerung 534 Peer-Daten 520.2 als Speicherorte zuweisen, die für interne Vorrichtungsdaten reserviert sind, die von und über Peer-Speicherungsvorrichtungen empfangen werden, einschließlich interner Betriebsdaten von diesen Peer-Speicherungsvorrichtungen. In einigen Ausführungsformen kann der den Vorrichtungsdaten 520.1 und/oder den Peer-Daten 520.2 zugewiesene Speicherraum Partitionen der Vorrichtungsdaten und/oder der Peer-Daten einschließen, die von der für die Host-Daten 520.3 bereitgestellten Speicherkapazität ausgeschlossen sind, wie beispielsweise vor dem Host verborgene überprovisionierte Speicherplätze, die zum Speichern interner Betriebsdaten, FTL-Tabellen, zum Ersetzen fehlerhafter Blöcke usw. verwendet werden.NVM controller 534 may include an interface protocol and/or a set of functions and parameters for reading, writing, and deleting data units in non-volatile memory devices 520. For example, host interface 530 may include functions for performing host data operations associated with host memory commands received via host interface 530. For example, PUT or write commands may be implemented to write host data units to non-volatile storage devices 520. GET or READ commands can be set up to read data from non-volatile memory devices 520 . DELETE commands can be configured to erase data from non-volatile storage devices 520 or to mark at least one memory location for deletion until a future garbage collection or similar operation actually deletes the data or reallocates the physical memory space for another purpose. In some embodiments, the NVM controller 534 may manage the flash translation layer (FTL), the data state machine, read/write buffer management, NVM device interface protocols, NVM device configuration/management/maintenance, and other device-side tasks include features. In some embodiments, NVM controller 534 may be configured to allocate a portion of the storage locations in non-volatile storage devices 520 for storage of data other than host data 520.3. For example, NVM controller 534 may allocate device data 520.1 as storage locations reserved for internal device data, including device configuration, parameter, and internal operational data. In some embodiments, NVM controller 534 may assign peer data 520.2 as storage locations reserved for internal device data received from and via peer storage devices, including internal operational data from those peer storage devices. In some embodiments, the storage space allocated to device data 520.1 and/or peer data 520.2 may include partitions of the device data and/or peer data that are excluded from the storage capacity provided for host data 520.3, such as hidden from the host over-provisioned storage spaces used to store internal operational data, FTL tables, replace bad blocks, etc.

Vor-Host-Vorgänge 540 können Funktionen und Parameter zur Verwaltung von niedrigstufigen Vorgängen für Speicherungsvorrichtung 500 einschließen. Vor-Host-Vorgänge 540 können beispielsweise Vorgänge einschließen, die während des Starts oder der Initialisierung der Speicherungsvorrichtung 500 vor dem Aufbau der Host-Kommunikation über die Host-Schnittstelle 530 ausgeführt werden, was als Vor-Host-Betriebszustand bezeichnet wird. In einigen Ausführungsformen können die Vor-Host-Vorgänge 540 auch Funktionen und Parameter für die Verwaltung von niedrigstufigen Vorgängen der Vorrichtung während des Herunterfahrens, des Stromzyklus, eines Fehlers oder eines Ausfalls einschließen, wenn die Host-Kommunikation vorübergehend nicht mehr verfügbar ist. Vor-Host-Vorgänge 540 können beispielsweise Festwertspeicher-, Bootloader-, Firmware- und/oder Betriebssystem-Vorgänge einschließen, die den grundlegenden Betrieb der Speicherungsvorrichtung 500 als einen Satz miteinander verbundener Komponenten und Schnittstellen regeln, unabhängig von den übergeordneten Host-Datenspeicherungsfunktionen.Pre-host operations 540 may include functions and parameters for managing low-level storage device 500 operations. For example, pre-host operations 540 may include operations performed during startup or initialization of storage device 500 prior to establishing host communications over host interface 530, referred to as a pre-host operational state. In some embodiments, pre-host operations 540 may also include functions and parameters for managing low-level operations of the device during shutdown, power cycle, error, or failure when host communications are temporarily unavailable. Pre-host processes 540 may include, for example, read-only memory, bootloader, firmware, and/or operating system processes that govern the basic operation of storage device 500 as a set of interconnected components and interfaces, independent of the higher-level host data storage functions.

In einigen Ausführungsformen können die Vor-Host-Vorgänge 540 eine Vielzahl von Hardware- und/oder Softwaremodulen einschließen, die so eingerichtet sind, dass sie Prozessor 512 und Speicher 514 verwenden, um definierte Vor-Host-Vorgänge 540 zu bearbeiten oder zu verwalten. Zum Beispiel können Vor-Host-Vorgänge 540 einen Festwertspeicher (ROM) 542 einschließen, der so eingerichtet ist, dass er den ersten Satz Anweisungen bereitstellt, die von Prozessor 512 beim Start ausgeführt werden, um die grundlegende Erkennung von Komponenten, die Konfiguration und die Kommunikation zwischen Komponenten auf dem internen Bus 510 zu initialisieren. Vor-Host-Vorgänge 540 können einen Bootloader 544 einschließen, der so eingerichtet ist, dass er die Aufgaben und Prozesse für den Start oder die Bootzeit bereitstellt und initiiert, um das Betriebssystem und/oder die Firmware 546 für Speicherungsvorrichtung 500 und ihre Komponenten im Speicher 514 zu instanziieren. Vor-Host-Vorgänge 540 können Firmware 546 einschließen, die so eingerichtet ist, dass sie die Datenstrukturen, Funktionen und Schnittstellen für die Komponenten der Speicherungsvorrichtung 500 instanziiert, damit diese interagieren und die verschiedenen hierin beschriebenen Funktionen ausführen können. In einigen Ausführungsformen kann die Firmware 546 die Initialisierung der Host-Schnittstelle 530, der NVM-Steuerung 534, des Steuerbusprotokolls 548 und des Peer-Freigabedienstes 560 einschließen. In einigen Ausführungsformen kann die Ausführung des Festwertspeichers 542, des Bootloaders 544 und/oder der Firmware 546 interne Betriebsdaten 550 erstellen, wie beispielsweise Rücksetzungsereignisse 552, Debug-Daten 554, Vorrichtungsprotokolle 556 und Daten der letzten guten Konfiguration 558.In some embodiments, front-end processes 540 may include a variety of hardware and/or software modules configured to use processor 512 and memory 514 to operate on or manage defined front-end processes 540 . For example, pre-host processes 540 may include read-only memory (ROM) 542 configured to provide the first set of instructions executed by processor 512 at startup to perform basic component recognition, configuration, and to initialize communication between components on the internal bus 510. Pre-host operations 540 may include a boot loader 544 configured to provide and initiate the startup or boot-time tasks and processes to load the operating system and/or firmware 546 for storage device 500 and its components in memory 514 to instantiate. Pre-host operations 540 may include firmware 546 configured to instantiate the data structures, functions, and interfaces for the storage device 500 components to enable them to interact and perform the various functions described herein. In some embodiments, firmware 546 may include host interface 530, NVM controller 534, control bus protocol 548, and peer sharing service 560 initialization. In some embodiments, execution of read-only memory 542, boot loader 544, and/or firmware 546 may create internal operational data 550, such as reset events 552, debug data 554, device logs 556, and last good configuration data 558.

Das Steuerbusprotokoll 548 kann Schnittstellen, Funktionen und Parameter für die Kommunikation innerhalb des Hosts oder einen zugehörigen Baseboard-Verwaltungscontroller (BMC) einschließen, die eine Multi-Master-Erkennung und Nachrichtenübermittlung gemäß einem Schnittstellenstandard mit geringer Bandbreite verwenden. Zum Beispiel kann die Speicherungsvorrichtung 500 für eine paketbasierte Nachricht über die Steuerbusschnittstelle 518 eingerichtet werden, die ein Busprotokoll mit geringer Bandbreite verwendet, wie beispielsweise 12C, 13C, SMBus, usw. Das Steuerbusprotokoll 548 kann eine Vielzahl von Hardware- und/oder Softwaremodulen einschließen, die so eingerichtet sind, dass sie Prozessor 512, Speicher 514 und Steuerbusschnittstelle 518 für die Kommunikation mit Host-Komponenten, einschließlich Peer-Speicherungsvorrichtungen auf demselben Steuerbus, verwenden, wobei ein vom angeschlossenen Steuerbus unterstütztes Steuerbusprotokoll verwendet wird. In einigen Ausführungsformen kann Steuerbusprotokoll 548 einen Kommunikationskanal mit geringer Bandbreite mit dem Host und anderen Systemkomponenten bereitstellen, um die Leistungsverwaltung, die Erkennung und den Zugriff auf externe Ressourcen wie Temperatursensoren, Lüftersteuerungen, Leuchtdiodenanzeigen usw. zu unterstützen. Zum Beispiel kann Steuerbusschnittstelle 518 Speicherungsvorrichtung 500 mit einer BMC zur Überwachung des physischen Zustands der Speicherungsvorrichtung 500 verbinden. In einigen Ausführungsformen kann Steuerbusprotokoll 548 die Erkennungs- und Nachrichtenfunktionen bereitstellen, die vom Peer-Freigabedienst 560 verwendet werden.The control bus protocol 548 may include interfaces, functions, and parameters for communication within the host or an associated baseboard management controller (BMC) that use multi-master discovery and messaging according to a low-bandwidth interface standard. For example, storage device 500 may be configured for a packet-based message via control bus interface 518 using a low-bandwidth bus protocol, such as 12C, 13C, SMBus, etc. Control bus protocol 548 may include a variety of hardware and/or software modules, arranged to use processor 512, memory 514, and control bus interface 518 to communicate with host components, including peer storage devices, on the same control bus using a control bus protocol supported by the attached control bus. In some embodiments, control bus protocol 548 can provide a low-bandwidth communication channel with the host and other system components to support power management, detection, and access to external resources such as temperature sensors, fan controls, LED displays, and so on. For example, control bus interface 518 may connect storage device 500 to a BMC for monitoring the physical state of storage device 500. In some embodiments, control bus protocol 548 may provide the detection and messaging functions used by peer sharing service 560.

Interne Betriebsdaten 550 können Datenstrukturen und zugehörige Funktionen zur Instanziierung von Daten einschließen, die sich auf interne Speicherungsvorrichtungsvorgänge in internen Betriebsspeicherorten im Speicher 514 und/oder Vorrichtungsdaten 520.1 in nichtflüchtigen Speicherungsvorrichtungen 520 beziehen. Interne Betriebsdaten 550 können zum Beispiel Daten einschließen, die von internen Managementprozessen erstellt wurden, wie beispielsweise Vor-Host-Vorgänge 540, und die in Vorrichtungsdaten 520.1 geschrieben werden. In einigen Ausführungsformen können die internen Betriebsdaten 550 Rücksetzungsereignisse 552, Debug-Daten 554, Vorrichtungsprotokolle 556 und/oder Daten zur letzten guten Konfiguration 558 einschließen.Internal operational data 550 may include data structures and associated functions for instantiating data related to internal storage device operations in internal operational memory locations in memory 514 and/or device data 520.1 in non-volatile storage devices 520. Internal operational data 550 may include, for example, data created by internal management processes, such as pre-host operations 540, that is written to device data 520.1. In some embodiments, internal operational data 550 may include reset events 552, debug data 554, device logs 556, and/or last good configuration data 558.

Zum Beispiel können Rücksetzungsereignisse 552 einen Rücksetzungsereignis-Datensatz von Betriebszustandsparametern für die Speicherungsvorrichtung 500 zu der Zeit einschließen, in der ein Zurücksetzen durch die Firmware 546 und/oder eine Hardware- oder Software-Rücksetzung über die Steuerbusschnittstelle 518 ausgelöst wurde. Rücksetzungsereignisse 552 können Rücksetzungsvorgänge während des Betriebs von ROM 542, Bootloader 544 und/oder Firmware 546 einschließen. Der Satz von Betriebszustandsparametern kann aus Registern oder anderen Datenstrukturen in Speicher 514 abgerufen werden, die den aktuellen Betriebszustand der Speicherungsvorrichtung 500 repräsentieren, und während des Rücksetzungsvorgangs in den Vorrichtungsdaten 520.1 gespeichert werden. Die Debug-Daten 554 können einen Satz von Zustandsparametern, Trace-Daten oder ähnliche Debug-Ausgaben einschließen, die von einem fehlgeschlagenen Prozess oder Dienst innerhalb der Speicherungsvorrichtung 500 erstellt wurden. Die Debug-Daten 554 können zum Beispiel Prozessparameter einschließen, die den Zustand der Speicherungsvorrichtung 500 und/oder eines darin befindlichen Prozesses darstellen, bevor ein fataler Fehler oder ein Absturz auftritt. Die Vorrichtungsprotokolle 556 können einen oder mehrere Sätze von Betriebsparametern einschließen, die sich auf interne Vorgänge beziehen, die im Laufe der Zeit (und im Allgemeinen nach Zeitstempel geordnet) in den Betriebsprotokolldaten aufgezeichnet werden und Prozesse darstellen können, die in Speicherungsvorrichtung 500 unabhängig von Fehler-, Ausfall- oder Stromausfallzuständen ablaufen. In einigen Ausführungsformen können die Vorrichtungsprotokolle 556 ein Protokoll des Leistungsmodus einschließen, das Änderungen des Leistungsmodus einschließt, wie beispielsweise den Eintritt in einen Modus mit geringer Leistung und/oder die Rückkehr zum normalen Leistungsmodus. Die letzten guten Konfigurationsdaten 558 können einen Satz von Konfigurationsparametern einschließen, die verwendet wurden, als Speicherungsvorrichtung 500 zuletzt gestartet und/oder normal betrieben wurde. Zum Beispiel können die letzten guten Konfigurationsdaten 558 Parameter einschließen, die eine letzte gute Seite, die von Speicherungsvorrichtung 500 geschrieben wurde, und/oder die letzte Firmware-Aktualisierung beschreiben, die für eine stabile Konfiguration in einer letzten guten Konfigurationsdatenseite verarbeitet wurde. In einigen Ausführungsformen müssen während der Initialisierung oder des Herunterfahrens der Leistung als Teil eines Prozesses zur Wiederherstellung der Vorrichtung die letzte gut geschriebenen Datenseite und/oder eine stabile Firmware-Version gefunden und geladen werden. Eine Speicherungsvorrichtung, die sich in der Wiederherstellung befindet, kann zum Beispiel so eingerichtet werden, dass sie Peer-Speicherungsvorrichtungen nach Firmware-Feldaktualisierungen abfragt, die aktuellste Version wiederherstellt (durch Vergleich der Versionsnummern, die mit der aktuellen Firmwareversion/-aktualisierung der Speicherungsvorrichtung und der Firmwareversion/-aktualisierung der Peer-Vorrichtungen verbunden sind) und diese für den Wiederherstellungsprozess verwendet. In einigen Ausführungsformen handelt es sich bei der neuesten Firmware-Version möglicherweise nicht um die zuvor von der Vorrichtung verwendete Firmware-Version, sondern um eine Firmware-Feldaktualisierung, die veröffentlicht wurde, während die Speicherungsvorrichtung offline oder anderweitig nicht in der Lage war, Aktualisierungen zu empfangen und/oder solche Aktualisierungen erfolgreich zu installieren.For example, reset events 552 may include a reset event record of operating state parameters for storage device 500 at the time a firmware 546 reset and/or a hardware or software reset via control bus interface 518 was triggered. Reset events 552 may include reset operations during ROM 542, bootloader 544, and/or firmware 546 operation. The set of operating state parameters may be retrieved from registers or other data structures in memory 514 representing the current operating state of storage device 500 and stored in device data 520.1 during the reset operation. Debug data 554 may include a set of state parameters, trace data, or similar debug output created by a failed process or service within storage device 500 . For example, the debug data 554 may include process parameters that represent the state of the storage device 500 and/or a process resident therein before a fatal error or crash occurs. Device logs 556 may include one or more sets of operational parameters that relate to internal operations that are recorded in the operational log data over time (and generally ordered by timestamp) and may represent processes occurring in storage device 500 regardless of error , failure or power failure conditions. In some embodiments, device logs 556 may include a power mode log that includes changes in power mode, such as entering a low power mode and/or returning to normal power mode. Last good configuration data 558 may include a set of configuration parameters that were used when storage device 500 was last started and/or operated normally. For example, last good configuration data 558 may include parameters describing a last good page written by storage device 500 and/or the last firmware update processed into a last good configuration data page for a stable configuration. In some embodiments, the last well-written data page and/or a stable firmware version must be found and loaded during initialization or power down as part of a process to recover the device. For example, a storage device that is in recovery can be set up to query peer storage devices for firmware field updates, recover the most recent version (by comparing the version numbers associated with the current storage device firmware version/update and the firmware version/update of the peer devices) and uses them for the recovery process. In some embodiments, it is the most recent Firmware version may not be the firmware version previously used by the device, but may be a firmware field update that was released while the storage device was offline or otherwise unable to receive updates and/or successfully install such updates .

Der Peer-Freigabedienst 560 kann ein Schnittstellenprotokoll und einen Satz von Funktionen und Parametern einschließen, um Peer-Speicherungsvorrichtungen zu finden, Nachrichten mit diesen Peer-Speicherungsvorrichtungen zu senden und zu empfangen und/oder Daten von diesen Peer-Speicherungsvorrichtungen wiederherzustellen. Der Peer-Freigabedienst 560 kann zum Beispiel Funktionen zur Nutzung der Kommunikation mit geringer Bandbreite über die Steuerbusschnittstelle 518 unter Verwendung des Steuerbusprotokolls 548 einschließen. In einigen Ausführungsformen kann der Peer-Freigabedienst 560 die Verwaltung von Peer-Daten 520.2 in nichtflüchtigen Speichervorrichtungen 520 zum Speichern interner Betriebsdaten der Peers einschließen und/oder die Datenverschlüsselung unterstützen, um interne Betriebsdaten bei der Übertragung zu verschlüsseln und/oder Peer-Daten 520.2 in einem verschlüsselten Zustand zu speichern.The peer sharing service 560 may include an interface protocol and a set of functions and parameters to find peer storage devices, send and receive messages with those peer storage devices, and/or restore data from those peer storage devices. For example, peer sharing service 560 may include functionality to leverage low bandwidth communication over control bus interface 518 using control bus protocol 548 . In some embodiments, the peer sharing service 560 may include maintaining peer data 520.2 in non-volatile storage devices 520 for storing internal operational data of the peers and/or support data encryption to encrypt internal operational data in transit and/or peer data 520.2 in to save in an encrypted state.

In einigen Ausführungsformen kann der Peer-Freigabedienst 560 eine Vielzahl von Hardware- und/oder Softwaremodulen einschließen, die so eingerichtet sind, dass sie Prozessor 512 und Speicher 514 verwenden, um definierte Vorgänge des Peer-Freigabedienstes 560 zu bearbeiten oder zu verwalten. Der Peer-Freigabedienst 560 kann zum Beispiel einen Erkennungsdienst 562, einen Verschlüsselungsdienst 564, einen Nachrichtendienst 566 und/oder einen Wiederherstellungsdienst 568 einschließen. Zum Beispiel kann der Erkennungsdienst 562 so eingerichtet werden, dass er Peer-Speicherungsvorrichtungen auf einem gemeinsamen Steuerbus erkennt und ihre Adressen speichert, damit sie vom Nachrichtendienst 566 und/oder dem Wiederherstellungsdienst 568 verwendet werden können. Der Verschlüsselungsdienst 564 kann so eingerichtet werden, dass er die Nutzdaten für den Nachrichtendienst 566 zur Übertragung, Speicherung auf Peer-Daten 520.2 und/oder Wiederherstellung und Speicherung auf Vorrichtungsdaten 520.1 verschlüsselt und/oder entschlüsselt. Der Nachrichtendienst 566 kann so eingerichtet werden, dass er über den gemeinsamen Steuerbus eins-zu-eins und/oder Broadcast-Nachrichten an und von Peer-Speicherungsvorrichtungen sendet und empfängt. Der Wiederherstellungsdienst 568 kann so eingerichtet werden, dass er Daten von Peer-Speicherungsvorrichtungen anfordert und empfängt, um die Wiederherstellungsaufgaben für die Speicherungsvorrichtung 500 zu unterstützen.In some embodiments, peer-sharing service 560 may include a variety of hardware and/or software modules configured to use processor 512 and memory 514 to process or manage defined peer-sharing service 560 operations. The peer sharing service 560 may include a discovery service 562, an encryption service 564, a messaging service 566, and/or a recovery service 568, for example. For example, discovery service 562 can be set up to discover peer storage devices on a common control bus and store their addresses for use by messaging service 566 and/or recovery service 568. Encryption service 564 may be configured to encrypt and/or decrypt the payload for messaging service 566 for transmission, storage on peer data 520.2, and/or recovery and storage on device data 520.1. The messaging service 566 can be configured to send and receive one-to-one and/or broadcast messages to and from peer storage devices over the shared control bus. Recovery service 568 may be configured to request and receive data from peer storage devices to support storage device 500 recovery tasks.

Der Erkennungsdienst 562 kann Datenstrukturen, Funktionen und Schnittstellen einschließen, um Peer-Vorrichtungen auf einem Steuerbus zu entdecken und Peer-Vorrichtungsadressen zu bestimmen, die vom Peer-Freigabedienst 560 verwendet werden. Zum Beispiel kann der Erkennungsdienst 562 während der Initialisierung oder des Starts der Speicherungsvorrichtung 500 seine Vorrichtungskennung oder -adresse senden und ähnliche Sendungen von anderen Vorrichtungen empfangen, um Vorrichtungsinformationen für andere Vorrichtungen auf dem Steuerbus zu sammeln. In einigen Ausführungsformen kann der Erkennungsdienst 562 ein Peer-Vorrichtungsregister 562.1 einschließen, das so eingerichtet ist, dass es Vorrichtungskennungen, Steuerbusadressen und/oder andere Informationen über Peer-Speicherungsvorrichtungen speichert, um die Kommunikation mit Peer-Speicherungsvorrichtungen herzustellen und zu unterstützen. Das Peer-Vorrichtungsregister 562.1 kann zum Beispiel eine Datentabelle oder eine andere Datenstruktur in Speicher 514 und/oder Vorrichtungsdaten 520.1 einschließen, die eine Vielzahl von Vorrichtungserkennungseinträgen enthält, die mit entsprechenden Steuerbusadressen verbunden sindln einigen Ausführungsformen kann der Erkennungsdienst 562 einen Vorrichtungs-ID-Broadcaster 562.2 einschließen, der so eingerichtet ist, dass er die Speicherungsvorrichtung und/oder die Steuerbusadresse für Speicherungsvorrichtung 500 bestimmt und eine Nachricht auf dem Steuerbus sendet, damit andere Vorrichtungen auf dem Steuerbus die Speicherungsvorrichtung 500 erkennen können. Zum Beispiel kann der Vorrichtungs-ID-Broadcaster 562.2 während der ROM-, Bootloader- oder Firmware-Ausführung beim Start oder der Initialisierung der Speicherungsvorrichtung 500, als Antwort auf eine Erkennungsnachricht von einer anderen Vorrichtung und/oder einem anderen Vorrichtungserkennungsauslöser gemäß Steuerbusprotokoll 548 ausgelöst werden. In einigen Ausführungsformen kann der Erkennungsdienst 562 einen Peer-ID-Empfänger 562.3 einschließen, der so eingerichtet ist, dass er die Kommunikation über Steuerbusschnittstelle 518 überwacht, Vorrichtungserkennungen von anderen Speicherungsvorrichtungen identifiziert und einen entsprechenden Eintrag für die Peer-Vorrichtungskennung zum Peer-Vorrichtungsregister 520.1 hinzufügt. Zum Beispiel kann das Steuerbusprotokoll 548 eine Syntax für Broadcast-Nachrichten definieren, wie beispielsweise eine Broadcast-Adresse, ein Tag oder einen ähnlichen Parameter zur Bezeichnung eines Erkennungs-Broadcasts und der Nutzdaten einschließlich der Speicherungsvorrichtungskennung, der Steuerbusadresse, der Anbieterkennung usw., und der Peer-ID-Empfänger 562.3 kann so eingerichtet werden, dass er Nachrichten analysiert, die dieser Syntax entsprechen, um Peer-Vorrichtungskennungen zu extrahieren.Discovery service 562 may include data structures, functions, and interfaces to discover peer devices on a control bus and to determine peer device addresses used by peer enabling service 560 . For example, during initialization or startup of storage device 500, discovery service 562 may broadcast its device identifier or address and receive similar broadcasts from other devices to collect device information for other devices on the control bus. In some embodiments, discovery service 562 may include a peer device register 562.1 configured to store device identifiers, control bus addresses, and/or other information about peer storage devices to establish and support communication with peer storage devices. For example, peer device register 562.1 may include a data table or other data structure in memory 514 and/or device data 520.1 that contains a plurality of device discovery entries associated with corresponding control bus addresses. In some embodiments, discovery service 562 may include a device ID broadcaster 562.2 configured to determine the storage device and/or control bus address for storage device 500 and send a message on the control bus to allow other devices on the control bus to recognize storage device 500. For example, Device ID Broadcaster 562.2 may be triggered during ROM, bootloader, or firmware execution upon startup or initialization of storage device 500, in response to a detection message from another device and/or another device detection trigger according to control bus protocol 548 . In some embodiments, discovery service 562 may include a peer ID receiver 562.3 configured to monitor communications over control bus interface 518, identify device identifiers from other storage devices, and add a corresponding entry for the peer device identifier to peer device register 520.1 . For example, the control bus protocol 548 may define a syntax for broadcast messages, such as a broadcast address, tag, or similar parameter identifying a discovery broadcast and the payload including the storage device identifier, the control bus address, the provider identifier, etc., and the Peer ID receiver 562.3 can be configured to parse messages conforming to this syntax to extract peer device identifiers.

Der Verschlüsselungsdienst 564 kann Datenstrukturen, Funktionen und Schnittstellen zum Verschlüsseln und Entschlüsseln interner Betriebsdaten 550 für den Austausch und/oder die Speicherung einschließen. Der Verschlüsselungsdienst 564 kann zum Beispiel den Austausch von Verschlüsselungsschlüsseln mit Peer-Speicherungsvorrichtungen einschließen, um einen verschlüsselten Nachrichtenaustausch zwischen Peer-Speicherungsvorrichtungen und/oder eine rein lokale Verschlüsselung zu ermöglichen, damit verschlüsselte interne Betriebsdaten ausgetauscht und/oder gespeichert werden können, wobei nur die Peer-Speicherungsvorrichtung der Quelle in der Lage ist, die verschlüsselten Daten zu entschlüsseln. In einigen Ausführungsformen können, wenn interne Vorgänge in Speicherungsvorrichtung 500 interne Betriebsdaten 550 erstellen, ausgewählte interne Betriebsdaten durch den Verschlüsselungsdienst 564 verschlüsselt und in den Vorrichtungsdaten 520.1 gespeichert und/oder über den Nachrichtendienst 566 an andere Peer-Speicherungsvorrichtungen gesendet werden. Der Nachrichtendienst 566 kann den Verschlüsselungsschlüssel an die Peer-Speicherungsvorrichtung senden, um die Entschlüsselung verschlüsselter Nutzdaten durch die Peer-Speicherungsvorrichtung zu ermöglichen, bevor sie als Peer-Daten gespeichert werden oder bei einem späteren Zugriff auf Peer-Daten. In einigen Ausführungsformen kann der Verschlüsselungsdienst 564 einen ausgewählten Verschlüsselungsalgorithmus und -standard für die internen Zielbetriebsdaten implementieren, wie beispielsweise den fortgeschrittenen Verschlüsselungsstandard (AES)-128 oder einen anderen Verschlüsselungsstandard.Encryption service 564 may include data structures, functions, and interfaces for encrypting and decrypting internal operational data 550 for exchange and/or storage. For example, encryption service 564 may involve exchanging encryption keys with peer storage devices to enable encrypted message exchange between peer storage devices and/or purely local encryption to allow encrypted internal operational data to be exchanged and/or stored using only the peer - The source storage device is able to decrypt the encrypted data. In some embodiments, when internal operations within storage device 500 create internal operational data 550, selected internal operational data may be encrypted by encryption service 564 and stored in device data 520.1 and/or sent to other peer storage devices via messaging service 566. The messaging service 566 may send the encryption key to the peer storage device to enable the peer storage device to decrypt encrypted payload data before storing it as peer data or upon subsequent access to peer data. In some embodiments, the encryption service 564 may implement a selected encryption algorithm and standard for the internal target operational data, such as Advanced Encryption Standard (AES)-128 or another encryption standard.

Der Nachrichtendienst 566 kann Datenstrukturen, Funktionen und Schnittstellen zum Senden und Empfangen von Nachrichten an und von anderen Peer-Vorrichtungen über den Steuerbus einschließen. Der Nachrichtendienst 566 kann zum Beispiel das Kontrollbusprotokoll 548 implementieren, um Nachrichten an andere Vorrichtungen zu senden und zu empfangen, die über den Erkennungsdienst 562 identifiziert wurden. In einigen Ausführungsformen kann der Nachrichtendienst 566 paketierte Nachrichtennutzdaten über den Steuerbus senden, indem er Blockschreib- und Blocklesebefehle zwischen Puffern in den Peer-Speicherungsvorrichtungen verwendet.Message service 566 may include data structures, functions, and interfaces for sending and receiving messages to and from other peer devices over the control bus. For example, messaging service 566 may implement control bus protocol 548 to send and receive messages to other devices identified via discovery service 562 . In some embodiments, messaging service 566 may send packetized message payloads over the control bus using block write and block read commands between buffers in the peer storage devices.

In einigen Ausführungsformen kann der Nachrichtendienst 566 einen Peer-Freigabeselektor 566.1 einschließen, der so eingerichtet ist, dass er eine Peer-Speicherungsvorrichtung für das Ziel oder den Empfang einer Nachricht auswählt. Zum Beispiel kann der Peer-Freigabeselektor 566.1 eine Parametereinstellung oder einen Algorithmus zur Auswahl einer Peer-Speicherungsvorrichtung einschließen, die einen bestimmten Satz interner Betriebsdaten empfängt, wie beispielsweise eine ausgewählte Peer-Speicherungsvorrichtung zum Auslagern oder Sichern der Speicherungsvorrichtung 500 oder einen Algorithmus (Randomizer, Round-Robin usw.) zur Verteilung interner Betriebsdaten auf Peer-Speicherungsvorrichtungen. In einigen Ausführungsformen kann der Nachrichtendienst 566 gemeinsame Auslöseereignisse 566.2 einschließen, die so eingerichtet sind, dass sie bestimmen, wann ausgewählte interne Betriebsdaten an eine oder mehrere Peer-Speicherungsvorrichtungen gesendet werden. Zum Beispiel kann die Freigabe von Auslöseereignissen 566.2 eine Vielzahl von regelbasierten Zuständen einschließen, um die Entladung interner Betriebsdaten auszulösen, wie beispielsweise Rücksetzungsereignisse, Betriebsfehler, Änderungen des Betriebsmodus, erfolgreicher Start, Speichern einer guten Seite, nicht ordnungsgemäßes Herunterfahren, periodischer Sicherungsplan usw. In einigen Ausführungsformen kann der Nachrichtendienst 566 einen gemeinsamen Inhaltsselektor 566.3 einschließen, der so eingerichtet ist, dass er die Menge der internen Betriebsdaten auswählt, die über den Nachrichtendienst 566 ausgelagert werden sollen. Zum Beispiel kann der gemeinsame Inhaltsselektor 566.3 eine Reihe von Parametern einschließen, die die Typen und Entfernungsmessungen der internen Betriebsdaten bestimmen, die an eine Peer-Speicherungsvorrichtung gesendet werden sollen. Wenn mehrere gemeinsame Auslösungsereignisse 566.2 und/oder interne Betriebsdatentypen vom Peer-Freigabedienst 560 unterstützt werden, kann ein bestimmtes gemeinsames Auslösungsereignis den Typ und den Umfang der ausgelagerten internen Betriebsdaten bestimmen, wie beispielsweise die Debug-Daten für einen auslösenden Betriebsfehler, ein definiertes Zeitfenster der Vorrichtungsprotokolldaten für einen periodischen Auslöser, den Inhalt einer letzten Firmware-Aktualisierung oder der letzten guten Seite für einen erfolgreichen Betrieb usw. In einigen Ausführungsformen kann der Nachrichtendienst 566 einen Formatierer für gemeinsame Nachrichten 566.4 einrichten, der eine Peer-Nachricht gemäß dem Steuerbusprotokoll 548 so formatiert, dass die Steuerbusadresse der Peer-Speicherungsvorrichtung des Ziels und der ausgewählte Inhalt in den Nutzdaten eingeschlossen sind. Zum Beispiel kann der Formatierer für gemeinsame Nachrichten 566.4 einen Header erstellen oder bestimmen, der eine Steuerbusadresse und ein Lese-/Schreibkennzeichen enthält, gefolgt von der Nachrichten-Payload und/oder anderen Parametern, wie Befehlscodes und/oder Fehlercodes, um die ausgewählten internen Betriebsdaten zu übermitteln.In some embodiments, message service 566 may include peer enable selector 566.1 configured to select a peer storage device for destination or receipt of a message. For example, peer enable selector 566.1 may include a parameter setting or algorithm for selecting a peer storage device that receives a particular set of internal operational data, such as a selected peer storage device for swapping out or backing up storage device 500, or an algorithm (randomizer, round -Robin, etc.) to distribute internal operational data to peer storage devices. In some embodiments, messaging service 566 may include common trigger events 566.2 configured to determine when selected internal operational data is sent to one or more peer storage devices. For example, enabling trigger events 566.2 can include a variety of rule-based states to trigger the discharge of internal operational data, such as reset events, operational errors, operational mode changes, successful boot, saving a good page, improper shutdown, periodic backup plan, etc. In some According to embodiments, the messaging service 566 may include a common content selector 566.3 configured to select the amount of internal operational data to be offloaded via the messaging service 566. For example, the shared content selector 566.3 may include a set of parameters that determine the types and distance measurements of the internal operational data to be sent to a peer storage device. If multiple common triggering events 566.2 and/or internal operational data types are supported by the peer sharing service 560, a specific common triggering event may determine the type and amount of the externalized internal operational data, such as the debug data for a triggering operational error, a defined time window of the device log data for a periodic trigger, the contents of a last firmware update or the last good page for successful operation, etc. In some embodiments, the messaging service 566 may implement a shared message formatter 566.4 that formats a peer message according to the control bus protocol 548 such that that the control bus address of the target's peer storage device and the selected content are included in the payload. For example, the common message formatter 566.4 may create or designate a header containing a control bus address and a read/write identifier, followed by the message payload and/or other parameters such as command codes and/or error codes to specify the selected internal operational data to transmit.

In einigen Ausführungsformen kann der Nachrichtendienst 566 einen Peer-Nachrichtenmonitor 566.5 einschließen, der so eingerichtet ist, dass er die Steuerbusschnittstelle 518 auf Nachrichten von Peer-Speicherungsvorrichtungen überwacht, die an Speicherungsvorrichtung 500 adressiert sind (direkt oder über Broadcast). Zum Beispiel kann der Peer-Nachrichtenmonitor 566.5 über den Steuerbus Peer-Nachrichten empfangen, die von Peer-Speicherungsvorrichtungen initiiert werden und/oder auf Nachrichten reagieren, die vom Nachrichtendienst 566 gesendet werden. Peer-Nachrichtenmonitor 566.5 kann empfangene Nachrichten analysieren, um zu bestimmen, ob weitere Maßnahmen erforderlich sind, wie beispielsweise die Weitergabe von Peer-Daten an den Peer-Speichermanager 566.6 oder die Weitergabe von Wiederherstellungsanforderungen oder Wiederherstellungsdaten an den Wiederherstellungsdienst 568. In einigen Ausführungsformen kann der Nachrichtendienst 566 einen Peer-Speichermanager 566.6 einschließen, der so eingerichtet ist, dass er Peer-Daten speichert, die von Peer-Speicherungsvorrichtungen empfangen wurden, um sie auszulagern oder zu sichern. Zum Beispiel kann Peer-Speichermanager 566.6 interne Betriebsdaten von einer oder mehreren Peer-Speicherungsvorrichtungen empfangen und die Daten in Peer-Daten 520.2 speichern. In einigen Ausführungsformen kann Peer-Speichermanager 566.6 eine Referenztabelle oder eine ähnliche Datenstruktur zum Auffinden von Peer-Daten nach der Speicherungsvorrichtungskennung, dem Typ der internen Betriebsdaten und anderen Parametern pflegen, um den selektiven Abruf von Peer-Daten auf Anforderung zu unterstützen. In einigen Ausführungsformen kann Peer-Speichermanager 566.6 auch eine Referenztabelle oder eine ähnliche Datenstruktur führen, die anzeigt, welche Peer-Speicherungsvorrichtungen die ausgelagerten internen Betriebsdaten 550 von Speicherungsvorrichtung 500 erhalten haben.In some embodiments, message service 566 may include a peer message monitor 566.5 configured to monitor control bus interface 518 for messages from peer storage devices, addressed to storage device 500 (directly or via broadcast). For example, peer message monitor 566.5 may receive peer messages initiated by peer storage devices and/or respond to messages sent by message service 566 over the control bus. Peer message monitor 566.5 may analyze received messages to determine whether further action is required, such as passing peer data to peer storage manager 566.6 or passing restore requests or restore data to restore service 568. In some embodiments, the Message service 566 may include a peer storage manager 566.6 arranged to store peer data received from peer storage devices for offloading or backup. For example, peer storage manager 566.6 may receive internal operational data from one or more peer storage devices and store the data in peer data 520.2. In some embodiments, peer storage manager 566.6 may maintain a lookup table or similar data structure for locating peer data by storage device identifier, internal operational data type, and other parameters to support selective retrieval of peer data on demand. In some embodiments, peer storage manager 566.6 may also maintain a reference table or similar data structure that indicates which peer storage devices received the offloaded internal operational data 550 from storage device 500.

Der Wiederherstellungsdienst 568 kann Datenstrukturen, Funktionen und Schnittstellen zur Wiederherstellung interner Wiederherstellungsbetriebsdaten von Peer-Vorrichtungen über den Steuerbus einschließen, um sie in einem Wiederherstellungsvorgang zu verwenden. Der Wiederherstellungsdienst 568 kann zum Beispiel während des Starts oder des Leistungszyklus nach einer nicht ordnungsgemäßen Abschaltung initiiert werden, um verlorene, beschädigte oder nicht vertrauenswürdige interne Betriebsdaten von einer Peer-Speicherungsvorrichtung anzufordern, auf die sie zuvor ausgelagert wurden.Recovery service 568 may include data structures, functions, and interfaces for recovering internal recovery mode data from peer devices over the control bus for use in a recovery operation. For example, the recovery service 568 may be initiated during startup or power cycle after an improper shutdown to request lost, corrupted, or untrusted internal operational data from a peer storage device to which it was previously offloaded.

In einigen Ausführungsformen kann der Wiederherstellungsdienst 568 Wiederherstellungsereignisse 568.1 einschließen, die so eingerichtet sind, dass sie bestimmen, wann zuvor ausgelagerte Daten wiederhergestellt und von Speicherungsvorrichtung 500 verwendet werden sollen. Die Wiederherstellungsereignisse 568.1 können zum Beispiel einen regelbasierten Satz von Ereignisbedingungen oder -parametern einschließen, die die Suche und den Abruf von ausgelagerten internen Betriebsdaten auslösen, wie beispielsweise das Starten nach einem nicht ordnungsgemäßen Herunterfahren, einem Stromausfall, einem Wechsel des Betriebsmodus oder einem ausgewählten Fehlerzustand. In einigen Ausführungsformen kann Speicherungsvorrichtung 500 bei der Installation auch ohne ein Rücksetzungsereignis Peer-Wiederherstellungsfunktionen initiieren. Zum Beispiel kann die Speicherungsvorrichtung 500 mit einem Plug-and-Play-Merkmal ausgestattet sein, das nach Firmware-Aktualisierungen von Peer-Speicherungsvorrichtungen sucht und die letzte kompatible Firmware-Aktualisierung wiederherstellt. In einigen Ausführungsformen kann der Wiederherstellungsdienst 568 einen Peer-Wiederherstellungsselektor 568.2 einschließen, der so eingerichtet ist, dass er die Peer-Speicherungsvorrichtung bestimmt, die die Zielwiederherstellungsdaten (oder zuvor ausgelagerte interne Wiederherstellungsbetriebsdaten) enthält. Zum Beispiel kann Peer-Selektor 568.2 den Peer-Speichermanager 566.6 verwenden, um die Peer-Speicherungsvorrichtung oder -vorrichtungen zu identifizieren, auf die die gewünschten Wiederherstellungsdaten ausgelagert wurden, falls bekannt. In einigen Ausführungsformen ist der Peer-Speicherungsvorrichtung 500 möglicherweise nicht bekannt, welche Speicherungsvorrichtung die gewünschten Wiederherstellungsdaten enthält, und Peer-Selektor 568.2 kann so eingerichtet sein, dass er den Wiederherstellungsanforderer 568.3 verwendet, um die Peer-Speicherungsvorrichtungen abzufragen und zu bestimmen, ob eine von ihnen die gewünschten Wiederherstellungsdaten enthält. Zum Beispiel kann Wiederherstellungsanforderer 568.3 Wiederherstellungsanforderungen an eine Vielzahl von Peer-Speicherungsvorrichtungen senden, auf die jede Peer-Speicherungsvorrichtung, die die Wiederherstellungsdaten enthält, mit den Wiederherstellungsdaten antworten kann. In einigen Ausführungsformen kann der Nachrichtendienst 566 (oder Wiederherstellungsanforderer 568.3) eine anfängliche Abfrageanforderung senden. Die daraufhin eingehenden Nachrichten können anzeigen, ob und in welchem Umfang jede Peer-Speicherungsvorrichtung einige oder alle Daten enthält, und Peer-Selektor 568.2 kann die Antworten verwenden, um zu bestimmen, welche Peer-Speicherungsvorrichtungen Wiederherstellungsanforderungen erhalten sollen. In einigen Ausführungsformen kann der Wiederherstellungsdienst 568 einen Wiederherstellungsanforderer 568.3 einschließen, der so eingerichtet ist, dass er eine Nachricht mit einer Wiederherstellungsanforderung über den Steuerbus an eine oder mehrere Peer-Speicherungsvorrichtungen sendet. Zum Beispiel kann Wiederherstellungsanforderer 568.3 den Nachrichtendienst 566 verwenden, um eine Wiederherstellungsnachricht an eine Peer-Speicherungsvorrichtung zu senden, die einige oder alle der gewünschten Wiederherstellungsdaten enthält. Die Wiederherstellungsanforderung kann den spezifischen Satz interner Betriebsdaten identifizieren, der für Wiederherstellungsvorgänge in der Datennutzlast gewünscht wird, und/oder einen Befehlscode oder Prozessaufruf einschließen, der so eingerichtet ist, dass die Zielwiederherstellungsdaten angefordert werden. In einigen Ausführungsformen kann der Wiederherstellungsdienst 568 einen Wiederherstellungsmanager 568.4 einschließen, der so eingerichtet ist, dass er Wiederherstellungsdaten von Peer-Speicherungsvorrichtungen empfängt und die empfangenen Wiederherstellungsdaten im Speicher 514 und/oder in den Vorrichtungsdaten 520.1 speichert, um sie für den Abschluss des Wiederherstellungsvorgangs zu verwenden. Zum Beispiel können die vom Nachrichtendienst 566 empfangenen Wiederherstellungsdaten an den Wiederherstellungsmanager 568.4 weitergeleitet werden, und der Wiederherstellungsmanager 568.4 kann einen oder mehrere Speicherstandorte in den Vorrichtungsdaten 520.1 für die wiederhergestellten internen Betriebsdaten bestimmen. Sobald die zurückgewonnenen internen Wiederherstellungsbetriebsdaten an die Vorrichtungsdaten 520.1 zurückgegeben wurden, können sie von Speicherungsvorrichtung 500 verwendet werden, um Wiederherstellungsvorgänge abzuschließen, wie beispielsweise Vor-Host-Vorgänge 540 oder andere Wiederherstellungsvorgänge nach einem nicht ordnungsgemäßen Herunterfahren oder Betriebsfehler.In some embodiments, recovery service 568 may include recovery events 568.1 configured to determine when previously offloaded data should be recovered and used by storage device 500. For example, the recovery events 568.1 may include a rule-based set of event conditions or parameters that trigger search and retrieval of paged internal operational data, such as starting after an improper shutdown, power failure, operational mode change, or selected fault condition. In some embodiments, storage device 500 may also initiate peer recovery functions upon installation without a reset event. For example, storage device 500 may be equipped with a plug and play feature that checks for firmware updates from peer storage devices and restores the last compatible firmware update. In some embodiments, the recovery service 568 may include a peer recovery selector 568.2 configured to determine the peer storage device containing the target recovery data (or previously swapped internal recovery operational data). For example, peer selector 568.2 may use peer storage manager 566.6 to identify the peer storage device or devices to which the desired recovery data has been offloaded, if known. In some embodiments, peer storage device 500 may not know which storage device contains the desired restore data, and peer selector 568.2 may be configured to use restore requester 568.3 to query the peer storage devices and determine whether one of contains the recovery data you want. For example, restore requester 568.3 may send restore requests to a plurality of peer storage devices, to which each peer storage device containing the restore data may respond with the restore data. In some embodiments, messaging service 566 (or restoration requestor 568.3) may send an initial query request. The messages that are then received may indicate whether and to what extent each peer storage device contains some or all of the data, and peer selector 568.2 may use the responses to determine which peer storage devices should receive restore requests. In some embodiments, the restore service 568 may include a restore requester 568.3 configured to send a restore request message over the control bus to one or more peer storage devices. For example, restore requester 568.3 may use message service 566 to send a restore message to a peer storage device containing some or all of the desired restore data. the Recovery request may identify the specific set of internal operational data desired for recovery operations in the data payload and/or include an opcode or process call configured to request the target recovery data. In some embodiments, the recovery service 568 may include a recovery manager 568.4 configured to receive recovery data from peer storage devices and store the received recovery data in storage 514 and/or device data 520.1 for use in completing the recovery operation . For example, the recovery data received from messaging service 566 may be forwarded to recovery manager 568.4, and recovery manager 568.4 may designate one or more storage locations in device data 520.1 for the recovered internal operational data. Once the recovered internal recovery operational data has been returned to device data 520.1, it may be used by storage device 500 to complete recovery operations, such as pre-host operations 540 or other recovery operations from an improper shutdown or operational error.

Wie in 6 dargestellt, kann Speicherungsvorrichtung 500 gemäß einem beispielhaften Verfahren zum Senden von Nachrichten zwischen Peer-Speicherungsvorrichtungen unter Verwendung eines Steuerbusses betrieben werden, d. h. gemäß dem Verfahren 600, das durch die Blöcke 610-624 in 6 veranschaulicht wird.As in 6 1, storage device 500 may be operated in accordance with an exemplary method for sending messages between peer storage devices using a control bus, ie, method 600 defined by blocks 610-624 in 6 is illustrated.

In Block 610 kann eine Vorrichtungskennung an Peer-Vorrichtungen über einen Kontrollbus gesendet werden. Zum Beispiel kann ein Erkennungsdienst, der dem Kontrollbusprotokoll entspricht, eine Broadcast-Nachricht senden, die die Speicherungsvorrichtung und ihre Kontrollbusadresse identifiziert.At block 610, a device identifier may be sent to peer devices over a control bus. For example, a discovery service conforming to the control bus protocol may send a broadcast message identifying the storage device and its control bus address.

In Block 612 können Vorrichtungskennungen von Peer-Vorrichtungen über den Steuerbus empfangen werden. Der Erkennungsdienst kann zum Beispiel auch Broadcast-Nachrichten empfangen, die andere Speicherungsvorrichtungen auf demselben Kontrollbus identifizieren, zusammen mit deren Kontrollbusadressen. Diese Peer-Erkennungsnachrichten können als Antwort auf den Broadcast der Speicherungsvorrichtung in Block 610, als Teil des Starts oder der Initialisierung jeder Peer-Speicherungsvorrichtung und/oder auf der Grundlage eines Master-Erkennungsauslösers oder Broadcasts empfangen werden.At block 612, device identifiers may be received from peer devices over the control bus. For example, the discovery service may also receive broadcast messages identifying other storage devices on the same control bus, along with their control bus addresses. These peer discovery messages may be received in response to the storage device broadcast in block 610, as part of the startup or initialization of each peer storage device, and/or based on a master discovery trigger or broadcast.

In Block 614 können Vorrichtungserkennungen von den Speicherungsvorrichtungen in einem Peer-Vorrichtungsregister der Speicherungsvorrichtung gespeichert werden. Der Erkennungsdienst kann zum Beispiel Vorrichtungskennungen, Steuerbusadressen und/oder andere Informationen zu jeder Peer-Speicherungsvorrichtung in einem Peer-Speicherungsvorrichtungseintrag in dem Peer-Vorrichtungsregister speichern.At block 614, device identifiers from the storage devices may be stored in a peer device register of the storage device. For example, the discovery service may store device identifiers, control bus addresses, and/or other information about each peer storage device in a peer storage device entry in the peer device register.

In Block 616 kann eine Peer-Kommunikation zwischen den Peer-Speicherungsvorrichtungen eingerichtet werden. Zum Beispiel kann das Peer-Vorrichtungsregister die notwendigen Informationen enthalten, um Nachrichten an Speicherungsvorrichtungen zu adressieren, und ein Peer-Nachrichtendienst kann so eingerichtet werden, dass er über das Steuerbusprotokoll Broadcast- und/oder Direktnachrichten an die Peer-Speicherungsvorrichtung sendet.At block 616, peer communication may be established between the peer storage devices. For example, the peer device register can contain the necessary information to address messages to storage devices, and a peer messaging service can be set up to send broadcast and/or direct messages to the peer storage device via the control bus protocol.

In Block 618 können interne Betriebsdaten zum Entladen durch die Speicherungsvorrichtung ausgewählt werden. So kann der Nachrichtendienst zum Beispiel einen Satz interner Betriebsdaten auf der Grundlage eines oder mehrerer Zustände oder Ereignisse auswählen, die eine gemeinsame Nutzung auslösen.At block 618, internal operational data may be selected for unloading by the storage device. For example, the messaging service may select a set of internal operational data based on one or more conditions or events that trigger sharing.

In Block 620 kann eine Peer-Zielvorrichtung für die Auslagerungsnachricht bestimmt werden. Zum Beispiel kann der Nachrichtendienst eine oder mehrere Speicherungsvorrichtungen aus dem Peer-Vorrichtungensregister auswählen, um die ausgewählten internen Betriebsdaten zu empfangen.At block 620, a peer destination device for the offload message may be determined. For example, the messaging service may select one or more storage devices from the peer device register to receive the selected internal operational data.

In Block 622 kann eine Peer-Nachricht so formatiert werden, dass sie dem Steuerbusprotokoll entspricht. Zum Beispiel kann der Nachrichtendienst die ausgewählten internen Betriebsdaten als Datennutzlast in eine oder mehrere Nachrichten mit entsprechenden Adresskopfzeilen für die Peer-Speicherungsvorrichtung des Ziels packen.At block 622, a peer message may be formatted to conform to the control bus protocol. For example, the messaging service may package the selected internal operational data as a data payload in one or more messages with appropriate address headers for the destination peer storage device.

In Block 624 kann die Peer-Nachricht von der Speicherungsvorrichtung, die die internen Betriebsdaten erstellt hat, über den Steuerbus an eine Peer-Speicherungsvorrichtung gesendet werden. Zum Beispiel kann der Nachrichtendienst die in Block 622 erstellte Peer-Nachricht über eine Steuerbusschnittstelle senden.At block 624, the peer message may be sent from the storage device that created the internal operational data to a peer storage device over the control bus. For example, the messaging service may send the peer message created in block 622 over a control bus interface.

Wie in 7 gezeigt, kann Speicherungsvorrichtung 500 nach einem beispielhaften Verfahren zur Rückgewinnung interner Betriebsdaten von einer Peer-Speicherungsvorrichtung betrieben werden, d.h. nach dem Verfahren 700, das durch die Blöcke 710-720 in 7 veranschaulicht wird.As in 7 1, storage device 500 may be operated according to an example method for retrieving internal operational data from a peer storage device, ie, method 700, defined by blocks 710-720 in FIG 7 is illustrated.

In Block 710 kann ein Wiederherstellungsereignis bestimmt werden. Zum Beispiel kann ein Wiederherstellungsdienst einer Speicherungsvorrichtung, die zuvor interne Betriebsdaten an andere Speicherungsvorrichtungen ausgelagert hat, ein Wiederherstellungsereignis erkennen, wie beispielsweise das Starten nach einem unvorhergesehenen Herunterfahren, einem Betriebszyklus oder einer Änderung des Betriebsmodus.At block 710, a recovery event may be determined. For example, a recovery service of a storage device that previously offloaded internal operational data to other storage devices may detect a recovery event, such as starting up after an unanticipated shutdown, power cycle, or operational mode change.

In Block 712 kann eine Peer-Vorrichtung bestimmt werden. So kann der Wiederherstellungsdienst zum Beispiel Peer-Speicherungsvorrichtungen bestimmen, die die gewünschten Wiederherstellungsdaten erhalten haben, und eine oder mehrere entsprechende Peer-Speicherungsvorrichtungen für den Empfang einer Wiederherstellungsanforderung auswählen.At block 712, a peer device may be determined. For example, the recovery service may determine peer storage devices that received the desired recovery data and select one or more corresponding peer storage devices to receive a recovery request.

In Block 714 kann die Wiederherstellungsanforderung an eine oder mehrere Peer-Speicherungsvorrichtungen gesendet werden. Der Wiederherstellungsdienst kann zum Beispiel eine Wiederherstellungsanforderung formatieren und senden, in der die für die Wiederherstellung benötigten internen Betriebsdaten angegeben sind.At block 714, the restore request may be sent to one or more peer storage devices. For example, the recovery service may format and send a recovery request specifying the internal operational data needed for the recovery.

In Block 716 können die internen Wiederherstellungsbetriebsdaten empfangen werden. So kann der Wiederherstellungsdienst zum Beispiel eine oder mehrere Antwortnachrichten von Peer-Speicherungsvorrichtungen erhalten, die die Wiederherstellungsanforderungen empfangen. Die Antwortnachrichten können einige oder alle internen Wiederherstellungsbetriebsdaten einschließen, die in den Wiederherstellungsanforderungen angefordert wurden.At block 716, the internal recovery mode data may be received. For example, the restore service may receive one or more response messages from peer storage devices that receive the restore requests. The response messages may include some or all of the internal recovery operation data requested in the recovery requests.

In Block 718 können die internen Wiederherstellungsbetriebsdaten gespeichert werden. Zum Beispiel kann der Wiederherstellungsdienst die von den Peer-Speicherungsvorrichtungen wiederhergestellten internen Wiederherstellungsbetriebsdaten in einem Vorrichtungsdatenspeicher für die internen Betriebsdaten der Speicherungsvorrichtung speichern, wie beispielsweise an dem Standort, von dem die internen Betriebsdaten fehlten, beschädigt oder unzuverlässig waren.At block 718, the internal recovery mode data may be saved. For example, the recovery service may store the internal recovery operational data recovered from the peer storage devices in a device data store for the internal operational data of the storage device, such as at the location from which the internal operational data was missing, corrupted, or unreliable.

In Block 720 kann ein Vorgang unter Verwendung der internen Wiederherstellungsbetriebsdaten abgeschlossen werden. Zum Beispiel kann die Speicherungsvorrichtung einen oder mehrere interne Prozesse, wie ROM-, Bootloader- oder Firmware-Prozesse für den Start, die Fehlerbehebung, die Änderung des Betriebsmodus usw., unter Verwendung der von den Peer-Speicherungsvorrichtungen wiederhergestellten internen Betriebsdaten durchführen.At block 720, an operation may be completed using the internal recovery operational data. For example, the storage device may perform one or more internal processes, such as ROM, bootloader, or firmware processes for startup, debugging, operating mode change, etc., using the internal operating data recovered from the peer storage devices.

Wie in 8 gezeigt, kann Speicherungsvorrichtung 500 gemäß einem beispielhaften Verfahren zur Unterstützung der internen Wiederherstellungsbetriebsdaten betrieben werden, d. h. gemäß dem Verfahren 800, das durch die Blöcke 810-820 in 8 veranschaulicht wird.As in 8th 11, storage device 500 may be operated in accordance with an example method for supporting internal recovery operational data, ie, method 800 defined by blocks 810-820 in FIG 8th is illustrated.

In Block 810 können die internen Peer-Betriebsdaten von einer Peer-Speicherungsvorrichtung empfangen werden. Zum Beispiel kann ein Nachrichtendienst eine Peer-Nachricht empfangen, die interne Betriebsdaten an die Empfänger-Speicherungsvorrichtung weiterleitet.At block 810, the internal peer operational data may be received from a peer storage device. For example, a messaging service may receive a peer message that forwards internal operational data to the recipient storage device.

In Block 812 können die internen Peer-Betriebsdaten von der Empfanger-Speicherungsvorrichtung gespeichert werden. Zum Beispiel kann die Speicherungsvorrichtung einen Speicherraum einschließen, der für die Speicherung von internen Peer-Betriebsdaten vorgesehen ist, und die empfangenen internen Peer-Betriebsdaten mit Metadaten speichern, die ausreichen, um den gespeicherten internen Peer-Betrieb zu identifizieren, abzurufen und mit der Peer-Speicherungsvorrichtung zu verknüpfen, von der er stammt.At block 812, the internal peer operational data may be stored by the receiver storage device. For example, the storage device may include a memory space dedicated to storage of internal peer operational data, and store the received internal peer operational data with metadata sufficient to identify, retrieve, and communicate with the stored internal peer operational data -Associate storage device from which it originated.

In Block 814 kann eine Wiederherstellungsanforderung empfangen werden. So kann der Nachrichtendienst zum Beispiel eine Peer-Nachricht empfangen und sie als eine Wiederherstellungsanforderung identifizieren, die Parameter enthält, die die für die Wiederherstellung benötigten internen Betriebsdaten beschreiben.At block 814, a restore request may be received. For example, the messaging service may receive a peer message and identify it as a recovery request that includes parameters describing internal operational data needed for recovery.

In Block 816 können die internen Wiederherstellungsbetriebsdaten bestimmt werden. Zum Beispiel kann ein Peer-Speichermanager die Parameter der Wiederherstellungsanforderung verwenden, um den Umfang der angeforderten internen Betriebsdaten in den Peer-Daten zu bestimmen.At block 816, the internal recovery mode data may be determined. For example, a peer storage manager can use the restore request parameters to determine the amount of requested internal operational data in the peer data.

In Block 818 können die internen Wiederherstellungsbetriebsdaten abgerufen werden. Zum Beispiel kann der Peer-Speichermanager den Abschnitt der angeforderten internen Wiederherstellungsbetriebsdaten abrufen, der in den Speicherungsvorrichtungen in den Peer-Daten gespeichert ist.At block 818, the internal recovery operation data may be retrieved. For example, the peer storage manager can retrieve the portion of the requested internal recovery operation data that is stored in the storage devices in the peer data.

In Block 820 können die internen Peer-Betriebsdaten gesendet werden. Zum Beispiel kann der Nachrichtendienst eine oder mehrere Antwortnachrichten, die die in Block 818 abgerufenen internen Wiederherstellungsbetriebsdaten einschließen, an die Peer-Speicherungsvorrichtung senden, die die Wiederherstellungsanforderung gesendet hat.At block 820, the internal peer operational data may be sent. For example, the messaging service may send one or more response messages that include the internal recovery operation data retrieved in block 818 to the peer storage device that sent the recovery request.

Während mindestens eine beispielhafte Ausführungsform in der vorstehenden ausführlichen Beschreibung der Technologie dargestellt worden ist, sollte gewürdigt werden, dass eine große Anzahl von Variationen existieren kann. Es sollte auch beachtet werden, dass eine beispielhafte Ausführungsform oder die beispielhaften Ausführungsformen Beispiele sind, und in keiner Weise den Umfang, die Anwendbarkeit, oder Konfiguration der Technologie einschränken sollen. Die vorangehende genaue Beschreibung wird vielmehr eine brauchbare Anleitung für Fachleute zur Implementierung einer beispielhaften Ausführungsform der Technologie bereitstellen, wobei es sich versteht, dass verschiedene Modifikationen an einer Funktion und/oder Anordnung von Elementen vorgenommen werden können, die in einer beispielhaften Ausführungsform beschrieben sind, ohne vom Umfang der Technologie abzuweichen, wie in den beigefügten Ansprüchen und ihren rechtlichen Entsprechungen dargelegt.While at least one exemplary embodiment has been presented in the foregoing detailed description of the technology is, it should be appreciated that a large number of variations may exist. It should also be noted that an exemplary embodiment or exemplary embodiments are examples, and are not intended in any way to limit the scope, applicability, or configuration of the technology. Rather, the foregoing detailed description will provide useful guidance for those skilled in the art to implement an example embodiment of the technology, it being understood that various modifications may be made to a function and/or arrangement of elements described in an example embodiment without to depart from the scope of the technology as set forth in the appended claims and their legal equivalents.

Wie einem Durchschnittsfachmann bekannt, können verschiedene Ausführungsformen der vorliegenden Erfindung als ein System, Verfahren oder Computerprogrammprodukt verkörpert werden. Folglich können Ausführungsformen der vorliegenden Offenlegung die Form einer vollständigen Hardware-Ausführung, einer vollständigen Software-Ausführung (einschließlich Firmware, speicherresidente Software, Mikrocodes, oder dergleichen) oder Ausführungsformen in der Form einer Kombination von Hardware und Software annehmen, die alle allgemein hierin als Schaltung, Modul, System und/oder Netzwerk bezeichnet werden können. Darüber hinaus können verschiedene Ausführungsformen der vorliegenden Technologie die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren computerlesbaren Medien verkörpert ist, einschließlich eines darauf ausgebildeten computerlesbaren Programmcodes.As known to one of ordinary skill in the art, various embodiments of the present invention may be embodied as a system, method, or computer program product. Accordingly, embodiments of the present disclosure may take the form of an entirely hardware implementation, an entirely software implementation (including firmware, resident software, microcode, or the like), or embodiments in the form of a combination of hardware and software, all generically herein referred to as circuitry , module, system and/or network. Furthermore, various embodiments of the present technology may take the form of a computer program product embodied in one or more computer-readable media, including computer-readable program code embodied thereon.

Es kann jede Kombination eines oder mehrerer computerlesbarer Speichermedien verwendet werden. Ein computerlesbares Medium kann ein computerlesbares Signalmedium oder ein physisches oder computerlesbares Speichermedium sein. Ein computerlesbares Speichermedium kann beispielsweise, ohne darauf beschränkt zu sein, ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, ein Gerät oder eine Vorrichtung, usw. oder irgendeine geeignete Kombination der Vorstehenden sein. Nicht einschränkende Beispiele eines physischen computerlesbaren Speichermediums können eine elektrische Verbindung, einschließlich einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, Speicher mit wahlfreiem Zugriff (RAM), Festwertspeicher (ROM), löschbaren programmierbaren Festwertspeicher (EPROM), elektrisch löschbaren programmierbaren Festwertspeicher (EEPROM), einen Flash-Speicher, eine optische Faser, einen Compact Disk-Festwertspeicher (CD-ROM), einen optischen Prozessor, einen magnetischen Prozessor usw. oder eine beliebige geeignete Kombination der Vorstehenden einschließen, sind aber nicht darauf beschränkt. Im Kontext dieses Dokuments kann ein computerlesbares und/oder ausführbares Speichermedium jedes greifbare Medium sein, das ein Programm oder Daten zur Verwendung durch ein System, ein Gerät und/oder eine Vorrichtung zur Befehlsausführung oder in Verbindung mit einer/einem solchen, enthalten oder speichern kann.Any combination of one or more computer-readable storage media may be used. A computer-readable medium can be a computer-readable signal medium or a physical or computer-readable storage medium. A computer-readable storage medium can be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, etc., or any suitable combination of the foregoing. Non-limiting examples of a physical computer-readable storage medium may include an electrical connection, including one or more wires, a portable computer disk, a hard drive, random access memory (RAM), read only memory (ROM), erasable programmable read only memory (EPROM), electrically erasable programmable read only memory ( EEPROM), flash memory, optical fiber, compact disk read only memory (CD-ROM), optical processor, magnetic processor, etc., or any suitable combination of the above, but not limited thereto. In the context of this document, a computer readable and/or executable storage medium can be any tangible medium that can contain or store a program or data for use by or in connection with an instruction execution system, apparatus and/or apparatus .

Ein Computercode, der auf einem computerlesbaren Medium enthalten ist, kann unter Verwendung eines beliebigen geeigneten Mediums übertragen werden, einschließlich, aber nicht beschränkt auf, drahtloses, verdrahtetes, optisches Faserkabel, Radiofrequenz (RF), usw. oder jede geeignete Kombination des Vorhergehenden. Ein Computercode zur Ausführung von Prozessen bei Ausführungsformen der vorliegenden Erfindung kann in einer beliebigen statischen Sprache, wie die C-Programmiersprache oder andere ähnliche Programmiersprachen, geschrieben werden. Der Computercode kann vollständig auf einer Rechenvorrichtung des Benutzers, teilweise auf einer Rechenvorrichtung des Benutzers, als ein alleinstehendes Softwarepaket, teilweise auf einer Rechenvorrichtung des Benutzers und teilweise auf einer Remote-Rechenvorrichtung oder vollständig auf der Remote-Vorrichtung oder einem Server ausgeführt werden. In dem letzteren Gedankenspiel kann eine Remote-Rechenvorrichtung mit einer Rechenvorrichtung des Benutzers durch eine beliebige Art von Netzwerk oder Kommunikationssystem, einschließlich, aber nicht begrenzt auf, ein lokales Netzwerk (LAN) oder ein Wide Area Network (WAN), eine Netzkonvergenz, verbunden sein, oder die Verbindung kann zu einem externen Computer (z. B. durch das Internet unter Verwendung eines Internetanbieters) hergestellt werden.Computer code embodied on a computer-readable medium may be transmitted using any suitable medium, including but not limited to wireless, wired, fiber optic cable, radio frequency (RF), etc., or any suitable combination of the foregoing. Computer code for executing processes in embodiments of the present invention may be written in any static language, such as the C programming language or other similar programming languages. The computer code may execute entirely on a user's computing device, partially on a user's computing device, as a stand-alone software package, partially on a user's computing device and partially on a remote computing device, or entirely on the remote device or a server. In the latter mindset, a remote computing device can be connected to a user's computing device through any type of network or communication system, including but not limited to a local area network (LAN) or a wide area network (WAN), network convergence , or the connection can be made to an external computer (e.g. through the Internet using an Internet provider).

Verschiedene Ausführungsformen der vorliegenden Erfindung können vorstehend mit Bezug auf die Flussdiagramme und/oder Blockdiagramme von Verfahren, Vorrichtungen, Systemen und Computerprogrammprodukten beschrieben sein. Es versteht sich, dass jeder Block des schematischen Flussdiagramms und/oder schematischen Blockdiagramms und Kombinationen von Blöcken in den schematischen Flussdiagrammen und/oder schematischen Blockdiagrammen durch Computerprogrammanweisungen implementiert werden kann. Diese Computerprogrammanweisungen können einer Verarbeitungseinheit (Prozessor) eines allgemeinen Computers, speziellen Computers oder einer anderen programmierbaren Datenverarbeitungsanlage zur Erzeugung einer Maschine bereitgestellt werden, so dass die Anweisungen, die über die Verarbeitungsvorrichtung oder andere programmierbare Datenverarbeitungsanlagen ausgeführt werden können, Mittel zum Implementieren der Abläufe/Handlungen in einem Flussdiagramm und/oder Block (Blöcken) eines Blockdiagramms erzeugen.Various embodiments of the present invention may be described above with reference to flowchart diagrams and/or block diagrams of methods, apparatus, systems, and computer program products. It is understood that each block of the schematic flowchart and/or schematic block diagram, and combinations of blocks in the schematic flowchart and/or schematic block diagram, can be implemented by computer program instructions. These computer program instructions can be provided to a processing unit (processor) of a general purpose computer, special purpose computer, or other programmable data processing equipment to produce a machine, so that the instructions, which can be processed via the processing device or other programmable Data processing equipment can be executed, generate means for implementing the processes/acts in a flowchart and/or block(s) of a block diagram.

Einige Computerprogrammanweisungen können auch in einem computerlesbaren Medium gespeichert werden, das einen Computer, andere programmierbare Datenverarbeitungsvorrichtungen oder (eine) andere Vorrichtung(en) zum Betrieb in einer bestimmten Weise steuern kann, so dass die in einem computerlesbaren Medium gespeicherten angefertigten Artikel Anweisungen beinhalten, die den in einem Flussdiagramm und/oder Block (Blöcken) eines Blockdiagramms spezifizierten Betrieb/Vorgang implementieren. Einige Computerprogrammanweisungen können auch auf eine Rechenvorrichtung, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Vorrichtung(n) geladen werden, um zu bewirken, dass eine Reihe von Betriebsschritten an der Rechenvorrichtung, einer anderen programmierbaren Vorrichtung oder (einer) anderen Vorrichtung(en) durchgeführt werden, so dass die Anweisungen, die durch den Computer oder eine andere programmierbare Vorrichtung ausgeführt werden, einen oder mehrere Prozesse zur Implementierung der in einem Flussdiagramm und/oder Block (Blöcken) eines Blockdiagramms spezifizierten Betrieb/Vorgang bereitstellen.Some computer program instructions may also be stored on a computer-readable medium capable of directing a computer, other programmable computing device, or other device(s) to operate in a particular manner, so that the finished articles stored on a computer-readable medium will include instructions that implement the operation/process specified in a flowchart and/or block(s) of a block diagram. Some computer program instructions may also be loaded onto a computing device, other programmable computing device, or other device(s) to cause a series of operational steps to be performed on the computing device, other programmable device, or other device(s). such that the instructions, executed by the computer or other programmable device, provide one or more processes for implementing the operation/act specified in a flowchart and/or block(s) of a block diagram.

Ein Flussdiagramm und/oder Blockdiagramm in den vorstehenden Figuren kann eine Bauweise, Funktionalität und/oder einen Vorgang möglicher Implementierungen von Vorrichtungen, Systemen, Verfahren und/oder Computerprogrammprodukten gemäß verschiedenen Gesichtspunkten der vorliegenden Technologie veranschaulichen. In dieser Hinsicht kann ein Block in einem Flussdiagramm oder Blockdiagramm ein Modul, Segment oder einen Teil eines Codes darstellen, der eine oder mehrere ausführbare Anweisungen zum Implementieren einer oder mehrerer spezifizierter logischer Funktionen aufweisen kann. Es sollte auch beachtet werden, dass in einigen alternativen Implementierungen die in dem Block angegebenen Funktionen außerhalb der in den Figuren angegebenen Reihenfolge auftreten können. Zum Beispiel können zwei nacheinander gezeigte Blöcke tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden, entsprechend der involvierten Funktionalität. Es sei auch angemerkt, dass ein Block einer Blockdiagramm- und/oder einer Flussdiagrammdarstellung oder eine Kombination von Blöcken in einer Blockdiagramm- und/oder einer Flussdiagrammdarstellung durch speziell auf Hardware basierenden Systemen implementiert werden kann, die eine oder mehrere spezifizierte Vorgänge oder Handlungen ausführen, oder durch Kombinationen von Hardware zu speziellen Zwecken und Computeranweisungen.A flowchart and/or block diagram in the above figures may illustrate construction, functionality, and/or operation of possible implementations of apparatus, systems, methods, and/or computer program products according to various aspects of the present technology. In this regard, a block in a flowchart or block diagram may represent a module, segment, or portion of code, which may comprise one or more executable instructions for implementing one or more specified logical functions. It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown sequentially may actually be executed substantially simultaneously, or the blocks may sometimes be executed in the reverse order, depending on the functionality involved. It should also be noted that a block of a block diagram and/or a flowchart representation, or a combination of blocks in a block diagram and/or a flowchart representation, may be implemented by dedicated hardware-based systems that perform one or more specified operations or actions, or by combinations of special purpose hardware and computer instructions.

Während ein oder mehrere Gesichtspunkte der vorliegenden Technologie im Detail dargestellt und besprochen wurden, wird ein Fachmann erkennen, dass Modifikationen und/oder Anpassungen an die verschiedenen Gesichtspunkte vorgenommen werden können, ohne vom Umfang der vorliegenden Erfindung abzuweichen, wie in den folgenden Ansprüchen dargelegt.While one or more aspects of the present technology have been illustrated and discussed in detail, one skilled in the art will recognize that modifications and/or adaptations can be made to the various aspects without departing from the scope of the present invention as set forth in the following claims.

Claims (20)

System, aufweisend: eine erste Vorrichtung, aufweisend: einen Prozessor; einen Speicher; eine Host-Schnittstelle, die für die Verbindung mit einem Host-System eingerichtet ist; eine Steuerbusschnittstelle, die so eingerichtet ist, dass sie mit einem Steuerbus verbunden werden kann, wobei eine Vielzahl von Peer-Vorrichtungen so eingerichtet ist, dass sie mit dem Steuerbus verbunden werden kann; und einen Peer-Freigabedienst, der eingerichtet ist, um: über die Steuerbusschnittstelle eine Peer-Kommunikation mit einer Peer-Zielvorrichtung aus der Vielzahl der Peer-Vorrichtungen herzustellen; interne Betriebsdaten für die erste Vorrichtung auszuwählen; die ausgewählten internen Betriebsdaten an die Peer-Zielvorrichtung zu senden; und als Reaktion auf ein Wiederherstellungsereignis die ausgewählten internen Betriebsdaten von der Peer-Zielvorrichtung zu empfangen.system comprising: a first device comprising: a processor; a memory; a host interface configured to connect to a host system; a control bus interface arranged to be connected to a control bus, wherein a plurality of peer devices arranged to be connected to the control bus; and a peer sharing service set up to: establish peer communication with a target peer device of the plurality of peer devices via the control bus interface; select internal operating data for the first device; send the selected internal operational data to the target peer device; and receive the selected internal operational data from the target peer device in response to a recovery event. System gemäß Anspruch 1, wobei die erste Vorrichtung weiterhin aufweist: ein Speichermedium, das eingerichtet ist, um Host-Daten zu speichern, die über die Host-Schnittstelle empfangen werden; ein Speicherschnittstellenprotokoll, das für die Kommunikation mit dem Host-System über die Host-Schnittstelle eingerichtet ist; und eine Steuerung für eine nichtflüchtige Speichervorrichtung, die so eingerichtet ist, dass sie die Eingabe/Ausgabe von Daten in das Speichermedium verwaltet.system according to claim 1 wherein the first device further comprises: a storage medium configured to store host data received via the host interface; a memory interface protocol configured to communicate with the host system over the host interface; and a non-volatile memory device controller configured to manage input/output of data to the storage medium. System gemäß Anspruch 2, wobei: das Speichermedium mindestens eine nichtflüchtige Speichervorrichtung aufweist; das Speicherschnittstellenprotokoll ein nichtflüchtiges Speicher-Express-Protokoll (NVMe) ist; die Vielzahl der Peer-Vorrichtungen eine Vielzahl von Peer-Speicherungsvorrichtungen einschließt; und jede Peer-Speicherungsvorrichtung der Vielzahl von Peer-Speicherungsvorrichtungen Folgendes aufweist: eine Peer-Host-Schnittstelle, die so eingerichtet ist, dass sie eine Verbindung zum Host-System unter Verwendung des NVMe-Protokolls herstellt; ein Peer-Speichermedium, das mindestens einen nichtflüchtigen Speicher aufweist; und eine Peer-Steuerbusschnittstelle, die zum Anschluss an den Steuerbus eingerichtet ist.system according to claim 2 wherein: the storage medium comprises at least one non-volatile storage device; the memory interface protocol is a non-volatile memory express protocol (NVMe); the plurality of peer devices includes a plurality of peer storage devices; and each peer storage device of the plurality of peer storage devices comprises: a peer host interface configured to connect to the host system using the NVMe protocol; a peer storage medium comprising at least one non-volatile memory; and a peer control bus interface configured to connect to the control bus. System gemäß Anspruch 1, wobei der Peer-Freigabedienst einen Erkennungsdienst aufweist, der eingerichtet ist, um: über die Steuerbusschnittstelle eine Vorrichtungskennung für die erste Vorrichtung zu senden; über die Steuerbusschnittstelle Vorrichtungskennungen aus der Vielzahl der Peer-Vorrichtungen zu empfangen; und die Peer-Vorrichtungskennung in einem Peer-Vorrichtungsregister zu speichern.system according to claim 1 wherein the peer sharing service comprises a discovery service configured to: transmit over the control bus interface a device identifier for the first device; receive device identifiers from the plurality of peer devices via the control bus interface; and store the peer device identifier in a peer device register. System gemäß Anspruch 1, wobei: der Peer-Freigabedienst weiterhin eingerichtet ist, um: eine Peer-Vorrichtungskennung für die Peer-Zielvorrichtung zu bestimmen; und eine Peer-Nachricht zu formatieren, die die ausgewählten internen Betriebsdaten als Nachrichten-Payload einschließen; und das Senden der ausgewählten internen Betriebsdaten das Senden der Peer-Nachricht an die Peer-Zielvorrichtung einschließt, wobei die Peer-Vorrichtungskennung zur Adressierung verwendet wird.system according to claim 1 wherein: the peer sharing service is further configured to: determine a peer device identifier for the target peer device; and format a peer message including the selected internal operational data as a message payload; and sending the selected internal operational data includes sending the peer message to the target peer device using the peer device identifier for addressing. System gemäß Anspruch 5, wobei der Peer-Freigabedienst einen Verschlüsselungsdienst aufweist, der so eingerichtet ist, dass er vor dem Senden der Peer-Nachricht die ausgewählten internen Betriebsdaten verschlüsselt.system according to claim 5 wherein the peer sharing service comprises an encryption service arranged to encrypt the selected internal operational data prior to sending the peer message. System gemäß Anspruch 1, wobei die internen Betriebsdaten ausgewählt sind aus: zurückgesetzte Ereignisdaten; Debug-Daten; Protokolldaten zum Betrieb der Vorrichtung; oder letzten guten Konfigurationsdaten.system according to claim 1 , wherein the internal operational data is selected from: reset event data; debug data; log data related to the operation of the device; or last good configuration data. System gemäß Anspruch 1, wobei der Peer-Freigabedienst weiterhin eingerichtet ist, um: über die Steuerbusschnittstelle interne Betriebsdaten von mindestens einer Peer-Vorrichtung aus der Vielzahl der Peer-Vorrichtungen zu empfangen; die internen Peer-Betriebsdaten in einer Peer-Datenpartition im Speicher zu speichern; und als Reaktion auf ein Peer-Wiederherstellungsereignis die internen Peer-Betriebsdaten an die mindestens eine Peer-Vorrichtung zu senden.system according to claim 1 wherein the peer enabling service is further configured to: receive, via the control bus interface, internal operational data from at least one peer device of the plurality of peer devices; store the internal peer operational data in a peer data partition in memory; and send the internal peer operational data to the at least one peer device in response to a peer recovery event. System gemäß Anspruch 1, das weiterhin eine Vielzahl von Peer-Vorrichtungen aufweist, wobei: die Vielzahl von Peer-Vorrichtungen die von der ersten Vorrichtung empfangenen internen Betriebsdaten speichern; und der Peer-Freigabedienst weiterhin einen Wiederherstellungsdienst aufweist, der eingerichtet ist, um: das Wiederherstellungsereignis zu bestimmen; als Reaktion auf das Wiederherstellungsereignis und über die Steuerbusschnittstelle eine Wiederherstellungsanforderung an mindestens eine Peer-Vorrichtung aus der Vielzahl der Peer-Vorrichtungen zu senden; von der mindestens einen Peer-Vorrichtung interne Wiederherstellungsbetriebsdaten zu empfangen; und die internen Wiederherstellungsbetriebsdaten in einen internen Betriebsspeicherort zu speichern.system according to claim 1 further comprising a plurality of peer devices, wherein: the plurality of peer devices store the internal operational data received from the first device; and the peer sharing service further comprises a recovery service configured to: determine the recovery event; in response to the recovery event and via the control bus interface, send a recovery request to at least one peer device of the plurality of peer devices; receive internal recovery mode data from the at least one peer device; and save the internal recovery operation data to an internal operation storage location. System gemäß Anspruch 9, wobei: das Wiederherstellungsereignis in einem Vor-Host-Betriebszustand eintritt; die internen Wiederherstellungsbetriebsdaten eine letzte gute Konfigurationsdatenseite einschließen; und die erste Vorrichtung weiterhin so eingerichtet ist, dass sie Vor-Host-Vorgänge unter Verwendung der letzten guten Konfigurationsdatenseite, die von der mindestens einen Peer-Vorrichtung empfangen wurde, abschließt.system according to claim 9 , wherein: the recovery event occurs in a pre-host operational state; the internal recovery mode data includes a last good configuration data page; and the first device is further arranged to complete pre-host operations using the last good configuration data page received from the at least one peer device. Computerimplementiertes Verfahren, aufweisend: Herstellen einer Peer-Kommunikation von einer ersten Vorrichtung mit einer Peer-Zielvorrichtung aus einer Vielzahl von Peer-Vorrichtungen, wobei die erste Vorrichtung und jede Peer-Vorrichtung der Vielzahl von Peer-Vorrichtungen Folgendes einschließt: eine Host-Schnittstelle, die für die Verbindung mit einem Host-System eingerichtet ist; und eine Steuerbusschnittstelle, die für die Verbindung mit einem Steuerbus eingerichtet ist; Auswählen von internen Betriebsdaten für die erste Vorrichtung; Senden der ausgewählten internen Betriebsdaten von der ersten Vorrichtung und über die Steuerbusschnittstelle an die Peer-Zielvorrichtung; und Empfangen der ausgewählten internen Betriebsdaten von der Peer-Zielvorrichtung an der ersten Vorrichtung und über die Steuerbusschnittstelle, wobei das Empfangen der ausgewählten internen Betriebsdaten als Reaktion auf ein Wiederherstellungsereignis erfolgt.Computer-implemented method, comprising: establishing a peer communication from a first device to a target peer device of a plurality of peer devices, wherein the first device and each peer device of the plurality of peer devices includes: a host interface configured to connect to a host system; and a control bus interface configured to connect to a control bus; selecting internal operating data for the first device; sending the selected internal operational data from the first device and over the control bus interface to the target peer device; and receiving the selected internal operational data from the target peer device at the first device and over the control bus interface, the receiving the selected internal operational data being in response to a recovery event. Computerimplementiertes Verfahren gemäß Anspruch 11, wobei die erste Vorrichtung und jede Peer-Vorrichtung aus der Vielzahl von Peer-Vorrichtungen Folgendes einschließt: ein Speichermedium, das eingerichtet ist, um Host-Daten zu speichern, die über die Host-Schnittstelle empfangen werden; ein Speicherschnittstellenprotokoll, das für die Kommunikation mit dem Host-System über die Host-Schnittstelle eingerichtet ist; und eine Steuerung für eine nichtflüchtige Speichervorrichtung, die so eingerichtet ist, dass sie die Eingabe/Ausgabe von Daten in das Speichermedium verwaltet.Computer-implemented method according to claim 11 wherein the first device and each peer device of the plurality of peer devices includes: a storage medium configured to store host data received via the host interface; a memory interface protocol configured to communicate with the host system over the host interface; and a non-volatile memory device controller configured to manage input/output of data to the storage medium. Computerimplementiertes Verfahren gemäß Anspruch 11, weiterhin aufweisend: Senden einer Vorrichtungskennung für die erste Vorrichtung über die Steuerbusschnittstelle; Empfangen von Peer-Vorrichtungserkennungen von einer Vielzahl von Peer-Vorrichtungen über die Steuerbusschnittstelle; und Speichern der Peer-Vorrichtungskennungen in der ersten Vorrichtung in einem Peer-Vorrichtungsregister.Computer-implemented method according to claim 11 and further comprising: sending a device identifier for the first device over the control bus interface; receiving peer device identifiers from a plurality of peer devices over the control bus interface; and storing the peer device identifiers in the first device in a peer device register. Computerimplementiertes Verfahren gemäß Anspruch 11, weiterhin aufweisend: Bestimmen einer Peer-Vorrichtungskennung für die Peer-Zielvorrichtung durch die erste Vorrichtung; und Formatieren einer Peer-Nachricht, die die ausgewählten internen Betriebsdaten als Nachrichten-Payload einschließt, wobei das Senden der ausgewählten internen Betriebsdaten das Senden der Peer-Nachricht an die Peer-Zielvorrichtung unter Verwendung der Peer-Vorrichtungskennung zur Adressierung einschließt.Computer-implemented method according to claim 11 , further comprising: determining, by the first device, a peer device identifier for the target peer device; and formatting a peer message including the selected internal operational data as a message payload, wherein sending the selected internal operational data includes sending the peer message to the target peer device using the peer device identifier for addressing. Computerimplementiertes Verfahren gemäß Anspruch 14, weiterhin aufweisend: Verschlüsseln der ausgewählten internen Betriebsdaten vor dem Senden der Peer-Nachricht.Computer-implemented method according to Claim 14 , further comprising: encrypting the selected internal operational data before sending the peer message. Computerimplementiertes Verfahren gemäß Anspruch 11, wobei die internen Betriebsdaten ausgewählt sind aus: zurückgesetzten Ereignisdaten; Debug-Daten; Protokolldaten zum Betrieb der Vorrichtung; oder letzten guten Konfigurationsdaten.Computer-implemented method according to claim 11 , wherein the internal operational data is selected from: reset event data; debug data; log data related to the operation of the device; or last good configuration data. Computerimplementiertes Verfahren gemäß Anspruch 11, weiterhin aufweisend: Empfangen von internen Betriebsdaten von mindestens einer Peer-Vorrichtung aus der Vielzahl der Peer-Vorrichtungen an der ersten Vorrichtung über die Steuerbusschnittstelle; Speichern der internen Betriebsdaten des Peers in einem Speicher der ersten Vorrichtung in einer Peer-Datenpartition im Speicher; und Senden, durch die erste Vorrichtung und als Reaktion auf ein Peer-Wiederherstellungsereignis, der internen Betriebsdaten des Peers an die mindestens eine Peer-Vorrichtung.Computer-implemented method according to claim 11 , further comprising: receiving internal operational data from at least one peer device of the plurality of peer devices at the first device via the control bus interface; storing the peer's internal operational data in a memory of the first device in a peer data partition in the memory; and sending, by the first device and in response to a peer recovery event, the peer's internal operational data to the at least one peer device. Computerimplementiertes Verfahren gemäß Anspruch 11, weiterhin aufweisend: Bestimmen des Wiederherstellungsereignisses durch die erste Vorrichtung; Senden einer Wiederherstellungsanforderung über die Steuerbusschnittstelle an mindestens eine Peer-Vorrichtung aus der Vielzahl der Peer-Vorrichtungen als Reaktion auf das Wiederherstellungsereignis; Empfangen von internen Wiederherstellungsbetriebsdaten von mindestens einer Peer-Vorrichtung und über die Steuerbusschnittstelle; und Speichern interner Wiederherstellungsbetriebsdaten in einem internen Betriebsspeicherort.Computer-implemented method according to claim 11 , further comprising: determining, by the first device, the recovery event; sending a recovery request over the control bus interface to at least one peer device of the plurality of peer devices in response to the recovery event; receiving internal recovery mode data from at least one peer device and over the control bus interface; and storing internal recovery operational data in an internal operational storage location. Computerimplementiertes Verfahren gemäß Anspruch 11, weiterhin aufweisend: Abschließen von Vor-Host-Vorgängen durch die erste Vorrichtung unter Verwendung einer letzten guten Konfigurationsdatenseite, die von der Peer-Zielvorrichtung empfangen wurde, wobei: das Wiederherstellungsereignis in einem Vor-Host-Betriebszustand eintritt; und die ausgewählten internen Betriebsdaten die letzte gute Konfigurationsdatenseite einschließen.Computer-implemented method according to claim 11 , further comprising: the first device completing pre-host operations using a last good configuration data page received from the peer target device, wherein: the recovery event occurs in a pre-host operational state; and the selected internal operational data includes the last good configuration data page. Speicherungssystem, aufweisend: einen Steuerbus; und eine Vielzahl von Peer-Speicherungsvorrichtungen, wobei jede Peer-Speicherungsvorrichtung aus der Vielzahl von Peer-Speicherungsvorrichtungen Folgendes aufweist: einen Prozessor; einen Speicher; eine Host-Schnittstelle, die für die Verbindung mit einem Host-System eingerichtet ist; eine Steuerbusschnittstelle, die für die Verbindung mit dem Steuerbus eingerichtet ist; Mittel, um über die Steuerbusschnittstelle eine Peer-Kommunikation zwischen der Vielzahl von Speicherungsvorrichtungen herzustellen; Mittel zum Auswählen interner Betriebsdaten aus einem internen Betriebsspeicherort; Mittel zum Senden der ausgewählten internen Betriebsdaten an mindestens eine andere Peer-Speicherungsvorrichtung aus der Vielzahl der Peer-Speicherungsvorrichtungen; und Mittel zum Empfangen, als Reaktion auf ein Wiederherstellungsereignis, der ausgewählten internen Betriebsdaten von mindestens einer Peer-Speicherungsvorrichtung aus der Vielzahl der Peer-Speicherungsvorrichtungen.Storage system comprising: a control bus; and a plurality of peer storage devices, each peer storage device of the plurality of peer storage devices comprising: a processor; a memory; a host interface configured to connect to a host system; a control bus interface configured to connect to the control bus; means for establishing peer communication between the plurality of storage devices via the control bus interface; means for selecting internal operational data from an internal operational storage location; means for sending the selected internal operational data to at least one other peer storage device of the plurality of peer storage devices; and means for receiving, in response to a recovery event, the selected internal operational data from at least one peer storage device of the plurality of peer storage devices.
DE112021000246.5T 2020-11-20 2021-05-12 MESSAGING FROM THE PEER STORAGE DEVICE VIA THE CONTROL BUS Pending DE112021000246T5 (en)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US202063116287P 2020-11-20 2020-11-20
US63/116,287 2020-11-20
US17/176,461 US11531498B2 (en) 2020-11-20 2021-02-16 Peer storage device messaging over control bus
US17/176,461 2021-02-16
PCT/US2021/031955 WO2022108619A1 (en) 2020-11-20 2021-05-12 Peer storage device messaging over control bus

Publications (1)

Publication Number Publication Date
DE112021000246T5 true DE112021000246T5 (en) 2022-09-15

Family

ID=81658227

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112021000246.5T Pending DE112021000246T5 (en) 2020-11-20 2021-05-12 MESSAGING FROM THE PEER STORAGE DEVICE VIA THE CONTROL BUS

Country Status (4)

Country Link
US (1) US11531498B2 (en)
CN (1) CN114868117A (en)
DE (1) DE112021000246T5 (en)
WO (1) WO2022108619A1 (en)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11537300B2 (en) * 2021-04-30 2022-12-27 EMC IP Holding Company LLC Identifying allocated blocks in a storage system
US11971771B2 (en) * 2022-01-25 2024-04-30 Western Digital Technologies, Inc. Peer storage device messaging for power management
US11983428B2 (en) * 2022-06-07 2024-05-14 Western Digital Technologies, Inc. Data migration via data storage device peer channel
US20240143518A1 (en) * 2022-10-26 2024-05-02 Western Digital Technologies, Inc. Using Control Bus Communication to Accelerate Link Negotiation

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010044879A1 (en) 2000-02-18 2001-11-22 Moulton Gregory Hagan System and method for distributed management of data storage
US7117211B2 (en) 2001-09-27 2006-10-03 Paxar Corporation Internet label production system
US7418714B2 (en) 2002-02-26 2008-08-26 Microsoft Corporation Employing three parameter buffer access in connection with SMBus notifications
US7127636B2 (en) 2003-09-08 2006-10-24 International Business Machines Corporation Autonomic recovery of PPRC errors detected by PPRC peer
US7783777B1 (en) * 2003-09-09 2010-08-24 Oracle America, Inc. Peer-to-peer content sharing/distribution networks
US7177211B2 (en) 2003-11-13 2007-02-13 Intel Corporation Memory channel test fixture and method
US8495244B2 (en) * 2005-06-29 2013-07-23 Jumpstart Wireless Corporation System and method for dynamic automatic communication path selection, distributed device synchronization and task delegation
US20070277012A1 (en) * 2006-05-23 2007-11-29 Hitachi, Ltd. Method and apparatus for managing backup data and journal
US7778020B2 (en) * 2006-12-06 2010-08-17 Fusion Multisystems, Inc. Apparatus, system, and method for a modular blade
JP5523835B2 (en) * 2006-12-06 2014-06-18 フュージョン−アイオー,インコーポレイテッド Apparatus, system and method for solid state storage as cache for high capacity non-volatile storage
US8073922B2 (en) * 2007-07-27 2011-12-06 Twinstrata, Inc System and method for remote asynchronous data replication
US8239597B2 (en) 2008-07-18 2012-08-07 Intersil Americas Inc. Device-to-device communication bus for distributed power management
CN101714021B (en) * 2008-10-08 2015-01-28 联想(北京)有限公司 Computer of hybrid system
US8203985B2 (en) 2008-12-31 2012-06-19 Intel Corporation Power saving in peer-to-peer communication devices
US8984216B2 (en) 2010-09-09 2015-03-17 Fusion-Io, Llc Apparatus, system, and method for managing lifetime of a storage device
US9025495B1 (en) 2013-01-16 2015-05-05 Pmc-Sierra Us, Inc. Flexible routing engine for a PCI express switch and method of use
US10817211B2 (en) * 2014-04-23 2020-10-27 Ensconce Data Technology, Llc Method for completing a secure erase operation
US9448614B2 (en) 2014-05-13 2016-09-20 Netapp, Inc. Low power archival data storage enclosure
US10481990B2 (en) 2016-06-13 2019-11-19 Intel Corporation Apparatuses and methods for a multiple master capable debug interface
KR102631351B1 (en) 2016-10-07 2024-01-31 삼성전자주식회사 Storage device capable of performing peer-to-peer communication and data storage system including the same
US10761929B2 (en) * 2017-05-25 2020-09-01 Western Digital Technologies, Inc. Data storage drive rebuild with parity generation offload using peer-to-peer data transfers
US10725859B2 (en) * 2017-05-25 2020-07-28 Western Digital Technologies, Inc. Parity generation offload using peer-to-peer data transfers in data storage system
US10580512B2 (en) 2018-02-21 2020-03-03 Western Digital Technologies, Inc. Storage device with debug namespace
US10409511B1 (en) * 2018-06-30 2019-09-10 Western Digital Technologies, Inc. Multi-device storage system with distributed read/write processing
US10725941B2 (en) * 2018-06-30 2020-07-28 Western Digital Technologies, Inc. Multi-device storage system with hosted services on peer storage devices
US10901848B2 (en) 2018-08-03 2021-01-26 Western Digital Technologies, Inc. Storage systems with peer data recovery
US10592144B2 (en) * 2018-08-03 2020-03-17 Western Digital Technologies, Inc. Storage system fabric with multichannel compute complex
US10649843B2 (en) 2018-08-03 2020-05-12 Western Digital Technologies, Inc. Storage systems with peer data scrub
US10831603B2 (en) * 2018-08-03 2020-11-10 Western Digital Technologies, Inc. Rebuild assist using failed storage device
US11182232B2 (en) * 2019-11-18 2021-11-23 Microsoft Technology Licensing, Llc Detecting and recovering from fatal storage errors

Also Published As

Publication number Publication date
US11531498B2 (en) 2022-12-20
WO2022108619A1 (en) 2022-05-27
US20220164139A1 (en) 2022-05-26
CN114868117A (en) 2022-08-05

Similar Documents

Publication Publication Date Title
DE112021000246T5 (en) MESSAGING FROM THE PEER STORAGE DEVICE VIA THE CONTROL BUS
DE102012210914B4 (en) Switch fabric management
DE102018123817A1 (en) DEVICE FOR DIRECT HOST ACCESS TO THE STORAGE LOCATION OF A MEMORY DEVICE
EP2849048B1 (en) Data sending method, data receiving method and storage device
US9026860B2 (en) Securing crash dump files
DE112019000213T5 (en) Storage systems with peer data recovery
DE112019000149T5 (en) MULTI-DEVICE STORAGE SYSTEM WITH HOSTED SERVICES ON PEER STORAGE DEVICES
CN108255410B (en) Method for processing disk roaming, RAID controller and equipment
US8370416B2 (en) Compatibility enforcement in clustered computing systems
US20060230243A1 (en) Cascaded snapshots
DE102011014588A1 (en) Multicasting write requests to multi-memory controllers
US11461085B2 (en) Firmware upgrade method in multiple node storage system
DE102004027672A1 (en) Disk array system
KR20110111254A (en) Remote direct storage access
US20090083474A1 (en) File allocation table management
DE602004007884T2 (en) Storage control system and method
US11544205B2 (en) Peer storage devices sharing host control data
US9052995B2 (en) Systems and methods providing mount catalogs for rapid volume mount
DE112019000158T5 (en) AREA COLLISION CRAWLER FOR LOGICAL BLOCK ADDRESSING
US11983428B2 (en) Data migration via data storage device peer channel
US10506042B2 (en) Storage system that includes a plurality of routing circuits and a plurality of node modules connected thereto
DE102021119267A1 (en) Method of operating a storage device and a host device, and storage device
US9971532B2 (en) GUID partition table based hidden data store system
US10949096B2 (en) Method using logical based addressing for latency reduction
DE112016000164T5 (en) PROCESSING DATA STORAGE INSTRUCTIONS FOR HOME SERVICES

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: MURGITROYD GERMANY PATENTANWALTSGESELLSCHAFT M, DE

Representative=s name: MEWBURN ELLIS LLP, DE

R082 Change of representative

Representative=s name: MURGITROYD GERMANY PATENTANWALTSGESELLSCHAFT M, DE