Amazon EBS und NVMe - Amazon EBS

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Amazon EBS und NVMe

EBS-Volumes werden als NVMe-Blockgeräte auf Instances bereitgestellt, die auf dem Nitro-System basieren.

Die in den Amazon-EBS-Produktdetails angegebenen EBS-Leistungsrichtlinien gelten unabhängig von der Block-Geräte-Schnittstelle.

Linux-Instances

Die Gerätenamen lauten/dev/nvme0n1,/dev/nvme1n1, und so weiter. Die Gerätenamen, die Sie in einer Blockgerätezuordnung angeben, werden durch NVMe-Gerätenamen () erse (/dev/nvme[0-26]n1). Der Blockgerät-Treiber kann NVMe-Gerätenamen in einer anderen Reihenfolge zuweisen, als Sie es für die Volumes in der Blockgerät-Zuweisung angegeben haben.

Windows-Instances

Wenn Sie Ihrer Instance ein Volume anfügen, geben Sie einen Gerätenamen für das Volume mit an. Dieser Gerätename wird von Amazon EC2 verwendet. Der Blockgerätetreiber für die Instance weist beim Mounten des Volumes den tatsächlichen Volume-Namen zu, und der zugewiesene Name kann sich von dem Namen unterscheiden, den Amazon EC2 verwendet.

Installieren oder Aktualisieren des NVMe-Treibers

Für den Zugriff auf NVMe-Volumes müssen die NVMe-Treiber installiert sein. Instances können NVMe-EBS-Volumes, NVMe-Instance-Speichervolumes, beide Arten von NVMe-Volumes oder keine NVMe-Volumes unterstützen. Weitere Informationen finden Sie unter Zusammenfassung der Netzwerk- und Speicherfunktionen.

Die folgenden AMIs enthalten die erforderlichen NVMe-Treiber:

  • Amazon Linux 2

  • Amazon Linux AMI 2018.03

  • Ubuntu 14.04 oder höher mit linux-aws-Kernel

    Anmerkung

    AWS Graviton-basierte Instance-Typen erfordern Ubuntu 18.04 oder höher mit Kernel linux-aws

  • Red Hat Enterprise Linux 6.5 oder höher

  • Red Hat Enterprise Linux 7.4 oder höher

  • SUSE Linux Enterprise Server 12 SP2 oder höher

  • CentOS 7.4.1708 oder höher

  • FreeBSD 11.1 oder höher

  • Debian GNU/Linux 9 oder höher

So prüfen Sie, ob Ihre Instance über den NVMe-Treiber verfügt

Sie können mit dem folgenden Befehl bestätigen, dass Ihre Instance über den NVMe-Treiber verfügt.

  • Amazon Linux, RHEL, CentOS und SUSE Linux Enterprise Server

    $ modinfo nvme

    Wenn die Instance über den NVMe-Treiber verfügt, gibt der Befehl Informationen über den Treiber zurück.

  • Amazon Linux 2 und Ubuntu

    $ ls /sys/module/ | grep nvme

    Wenn die Instance über den NVMe-Treiber verfügt, gibt der Befehl die installierten Treiber zurück.

So aktualisieren Sie den NVMe-Treiber

Wenn Ihre Instance über den NVMe-Treiber verfügt, können Sie den Treiber mithilfe des folgenden Verfahrens auf die neueste Version aktualisieren.

  1. Verbinden Sie sich mit der Instance.

  2. Aktualisieren Sie den Cache der Paketverwaltung, um die erforderlichen Paketaktualisierungen herunterzuladen.

    • Für Amazon Linux 2, Amazon Linux, CentOS und Red Hat Enterprise Linux:

      [ec2-user ~]$ sudo yum update -y
    • Für Ubuntu und Debian:

      [ec2-user ~]$ sudo apt-get update -y
  3. Ubuntu 16.04 und höher umfasst das linux-aws-Paket, das die von den Nitro-basierten Instances erforderten NVMe- und ENA-Treiber enthält. Aktualisieren Sie das linux-aws-Paket, um die aktuelle Version zu erhalten:

    [ec2-user ~]$ sudo apt-get install --only-upgrade -y linux-aws

    Für Ubuntu 14.04 können Sie das aktuelle linux-aws-Paket wie folgt installieren:

    [ec2-user ~]$ sudo apt-get install linux-aws
  4. Starten Sie Ihre Instance neu, um die neueste Kernelversion zu laden.

    sudo reboot
  5. Stellen Sie nach dem Neustart eine neue Verbindung zu Ihrer Instance her.

Die AWS Windows-AMIs für Windows Server 2008 R2 und höher enthalten den NVMe-Treiber. AWS Wenn Sie nicht die neuesten von Amazon bereitgestellten AWS Windows-AMIs verwenden, finden Sie weitere Informationen unter Installieren oder Aktualisieren von AWS NVMe-Treibern mithilfe PowerShell im Amazon EC2 EC2-Benutzerhandbuch für Windows-Instances.

Identifizieren des EBS-Geräts

EBS verwendet Single-Root-I/O-Virtualisierung (SR-IOV), um Volume-Anhänge auf Nitro-basierenden Instances mit der NVMe-Spezifikation bereitzustellen. Diese Geräte benötigen Standard-NVMe-Treiber auf dem Betriebssystem. Diese Treiber erkennen die angefügten Geräte in der Regel beim Instance-Start und erstellen Geräteknoten basierend auf der Reihenfolge, in der die Geräte reagieren, und nicht darauf, wie die Geräte in der Blockgerät-Zuweisung angegeben sind.

<y>Unter Linux folgen die NVMe-Gerätenamen dem Muster/dev/nvme<x>n<y>, wobei die <x>Reihenfolge der Aufzählung und für EBS der Wert 1 ist. Gelegentlich können Geräte bei nachfolgenden Instance-Starts auf die Erkennung in einer anderen Reihenfolge reagieren, was dazu führt, dass sich der Gerätename ändert. Darüber hinaus kann der Gerätename, der vom Blockgerät-Treiber zugewiesen wird, von dem in der Blockgerät-Zuweisung angegebenen Namen abweichen.

Wir empfehlen Ihnen, für Ihre EBS-Volumes innerhalb Ihrer Instance stabile IDs zu verwenden, wie beispielsweise eine der folgenden:

  • Für Nitro-basierende Instances werden Blockgerät-Zuweisungen, die in der Amazon EC2-Konsole angegeben sind, beim Anfügen eines EBS-Volume oder während AttachVolume- oder RunInstances-API-Aufrufen im herstellerspezifischen Datenfeld der NVMe-Controller-ID erfasst. Mit Amazon Linux-AMIs ab der Version 2017.09.01 stellen wir eine udev-Regel zur Verfügung, die diese Daten liest und einen symbolischen Link zur Blockgerät-Zuweisung erstellt.

  • Die EBS-Volume-ID und der Einhängepunkt sind zwischen Instance-Statusänderungen stabil. Der NVMe-Gerätename kann sich je nach Reihenfolge ändern, in der die Geräte während des Instance-Starts reagieren. Wir empfehlen die Verwendung der EBS-Volume-ID und des Einhängepunkts zur konsistenten Geräteerkennung.

  • Bei NVMe EBS-Volumes ist die EBS-Volume-ID als Seriennummer in der Gerätekennung festgelegt. Verwenden Sie den Befehl lsblk -o +SERIAL, um die Seriennummer aufzulisten.

  • Das Format des NVMe-Gerätenamens kann je nachdem, ob das EBS-Volume während oder nach dem Start der Instance angeschlossen wurde, variieren. NVMe-Gerätenamen für Volumes, die nach dem Instance-Start verbunden sind, umfassen das /dev/-Präfix, während NVMe-Gerätenamen für Volumes, die während des Instance-Starts verbunden sind, das /dev/Präfix nicht einschließen. Wenn Sie ein Amazon Linux oder FreeBSD AMI verwenden, verwenden Sie den sudo ebsnvme-id /dev/nvme0n1 -u-Befehl für einen konsistenten NVMe-Gerätenamen. Verwenden Sie für andere Verteilungen den Befehl sudo nvme id-ctrl -v /dev/nvme0n1, um den NVMe-Gerätenamen zu ermitteln.

  • Beim Formatieren eines Geräts wird eine UUID erzeugt, die für die gesamte Lebensdauer des Dateisystems erhalten bleibt. Gleichzeitig kann eine Gerätebezeichnung angegeben werden. Weitere Informationen finden Sie unter Machen Sie ein Amazon EBS-Volume zur Nutzung verfügbar und Booten vom falschen Volume aus.

Amazon Linux-AMIs

Mit Amazon Linux-AMI 2017.09.01 oder höher (inklusive Amazon Linux 2) können Sie den Befehl ebsnvme-id wie folgt ausführen, um den NVMe-Gerätenamen einer Volume-ID zuzuordnen und umgekehrt:

Das folgende Beispiel zeigt den Befehl und die Ausgabe für ein Volume, das beim Instance-Start verbunden ist. Beachten Sie, dass der Name des NVMe-Gerätenamens nicht das /dev/-Präfix einschließt.

[ec2-user ~]$ sudo /sbin/ebsnvme-id /dev/nvme0n1 Volume ID: vol-01324f611e2463981 sda

Das folgende Beispiel zeigt den Befehl und die Ausgabe eines Volumes, der nach dem Instance-Start verbunden ist. Beachten Sie, dass der NVMe-Gerätename das /dev/-Präfix einschließt.

[ec2-user ~]$ sudo /sbin/ebsnvme-id /dev/nvme1n1 Volume ID: vol-064784f1011136656 /dev/sdf

Amazon Linux erstellt auch eine symbolische Verknüpfung vom Gerätenamen in der Blockgerätezuordnung (zum Beispiel /dev/sdf) zum NVMe-Gerätenamen.

FreeBSD-AMIs

Ab FreeBSD 12.2-RELEASE können Sie den Befehl ebsnvme-id wie oben gezeigt ausführen. Übergeben Sie entweder den Namen des NVMe-Geräts (z. B. nvme0) oder des Festplattengeräts (z. B. nvd0 oder nda0). FreeBSD erstellt auch symbolische Links zu den Datenträgern (z. B. /dev/aws/disk/ebs/volume_id).

Andere Linux-AMIs

Mit einer Kernel-Version von 4.2 oder höher können Sie den Befehl nvme id-ctrl wie folgt ausführen, um ein NVMe-Gerät einer Volume-ID zuzuordnen. Installieren Sie zunächst das NVMe-Befehlszeilenpaket, nvme-cli, unter Verwendung der Paketverwaltungstools für Ihre Linux-Distribution. Hinweise zum Download und zur Installation anderer Verteilungen finden Sie in der für Ihre Verteilung spezifischen Dokumentation.

Im folgenden Beispiel werden Volume-ID und NVMe-Gerätename für ein Volume abgerufen, das beim Instance-Start angehängt wurde. Beachten Sie, dass der Name des NVMe-Gerätenamens nicht das /dev/-Präfix einschließt. Der Gerätename ist über die für den Anbieter des NVMe-Controllers spezifische Extension (Bytes 384:4095 der Controller-ID) verfügbar:

[ec2-user ~]$ sudo nvme id-ctrl -v /dev/nvme0n1 NVME Identify Controller: vid : 0x1d0f ssvid : 0x1d0f sn : vol01234567890abcdef mn : Amazon Elastic Block Store ... 0000: 2f 64 65 76 2f 73 64 6a 20 20 20 20 20 20 20 20 "sda..."

Im folgenden Beispiel werden Volume-ID und NVMe-Gerätename für ein Volume abgerufen, das nach dem Instance-Start angeschlossen wurde. Beachten Sie, dass der NVMe-Gerätename das /dev/-Präfix einschließt.

[ec2-user ~]$ sudo nvme id-ctrl -v /dev/nvme1n1 NVME Identify Controller: vid : 0x1d0f ssvid : 0x1d0f sn : volabcdef01234567890 mn : Amazon Elastic Block Store ... 0000: 2f 64 65 76 2f 73 64 6a 20 20 20 20 20 20 20 20 "/dev/sdf..."

Der Befehl lsblk führt die verfügbaren Geräte und, falls vorhanden, ihre Mountingpunkte auf. Damit können Sie bestimmen, welchen Gerätenamen Sie verwenden müssen. In diesem Beispiel ist /dev/nvme0n1p1 als Root-Gerät gemountet, und /dev/nvme1n1 ist angefügt, aber nicht gemountet.

[ec2-user ~]$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT nvme1n1 259:3 0 100G 0 disk nvme0n1 259:0 0 8G 0 disk nvme0n1p1 259:1 0 8G 0 part / nvme0n1p128 259:2 0 1M 0 part

Sie können den Befehl ebsnvme-id ausführen, um die NVMe-Geräte-Datenträgernummer einer EBS-Volume-ID und einem Gerätenamen zuzuordnen. Alle EBS-NVMe-Geräte sind standardmäßig aufgezählt. Sie können eine Datenträgernummer zum Aufzählen von Informationen zu einem bestimmten Gerät übergeben. Das ebsnvme-id Tool ist in den neuesten AWS bereitgestellten Windows Server-AMIs enthalten, die sich unter befindenC:\PROGRAMDATA\AMAZON\Tools.

Beginnend mit dem AWS NVMe-Treiberpaket wird 1.5.0, die neueste Version des ebsnvme-id Tools durch das Treiberpaket installiert. Die neueste Version ist nur im Treiberpaket verfügbar. Der eigenständige Download-Link für das ebsnvme-id-Tool erhält keine Updates mehr. Die letzte über den eigenständigen Link verfügbare Version ist 1.1.0, die Sie über den Link ebsnvme-id.zip herunterladen und den Inhalt in Ihre Amazon-EC2-Instance extrahieren können, um Zugriff auf ebsnvme-id.exe zu erhalten.

PS C:\Users\Administrator\Desktop> ebsnvme-id.exe Disk Number: 0 Volume ID: vol-0d6d7ee9f6e471a7f Device Name: sda1 Disk Number: 1 Volume ID: vol-03a26248ff39b57cf Device Name: xvdd Disk Number: 2 Volume ID: vol-038bd1c629aa125e6 Device Name: xvde Disk Number: 3 Volume ID: vol-034f9d29ec0b64c89 Device Name: xvdb Disk Number: 4 Volume ID: vol-03e2dbe464b66f0a1 Device Name: xvdc PS C:\Users\Administrator\Desktop> ebsnvme-id.exe 4 Disk Number: 4 Volume ID: vol-03e2dbe464b66f0a1 Device Name: xvdc

Arbeiten mit NVMe-EBS-Volumes

Weitere Informationen zum Formatieren und Mounten eines NVMe EBS-Volumes finden Sie unter Machen Sie ein Amazon EBS-Volume zur Nutzung verfügbar.

Linux-Instances

Wenn Sie den Linux-Kernel 4.2 oder neuer verwenden, werden alle Änderungen, die Sie an der Volume-Größe eines NVMe EBS-Volumes vornehmen, automatisch in der Instance reflektiert. Bei älteren Linux-Kernels müssen Sie möglicherweise das EBS-Volume trennen und wieder verbinden oder die Instance neu starten, damit die Änderung reflektiert wird. Bei Linux-Kernel 3.19 oder neuer können Sie mit dem Befehl hdparm einen Rescan des NVMe-Geräts erzwingen:

[ec2-user ~]$ sudo hdparm -z /dev/nvme1n1

Wenn Sie ein NVMe-EBS-Volume trennen, hat die Instance keine Gelegenheit, die Dateisystemzwischenspeicher oder Metadaten vor dem Trennen des Volumes zu löschen. Daher sollten Sie ein NVMe-EBS-Volume vor dem Trennen zuerst synchronisieren und sein Mounting aufheben. Wenn das Volume nicht getrennt werden kann, können Sie einen force-detach-Befehl verwenden, wie in Trennen Sie ein Amazon EBS-Volume von einer Instance beschrieben.

Windows-Instances

Die neuesten AWS Windows-AMIs enthalten den AWS NVMe-Treiber, der für Instance-Typen erforderlich ist, die EBS-Volumes als NVMe-Blockgeräte verfügbar machen. Wenn Sie jedoch die Größe Ihres Root-Volumes auf einem Windows-System ändern, müssen Sie einen Rescan des Volumes durchführen, damit diese Änderung in der Instance reflektiert wird. Wenn Sie Ihre Instance von einem anderen AMI aus gestartet haben, enthält sie möglicherweise nicht den erforderlichen AWS NVMe-Treiber. Wenn Ihre Instance nicht über den neuesten AWS NVMe-Treiber verfügt, müssen Sie ihn installieren. Weitere Informationen finden Sie unter AWS NVMe-Treiber für Windows-Instanzen.

I/O-Betriebs-Timeout

In den meisten Betriebssystemen gilt ein Timeout für an NVMe-Geräte übergebene I/O-Operationen.

Linux-Instances

Unter Linux verwenden EBS-Volumes, die an Nitro-basierte Instances angeschlossen sind, den vom Betriebssystem bereitgestellten Standard-NVMe-Treiber. In den meisten Betriebssystemen gilt ein Timeout für an NVMe-Geräte übergebene I/O-Operationen. Das Standard-Timeout beträgt 30 Sekunden und kann mit dem Boot-Parameter nvme_core.io_timeout geändert werden. Bei den meisten Linux-Kerneln vor Version 4.6 lautet dieser Parameter nvme.io_timeout.

Wenn die I/O-basierte Latenz den Wert dieses Timeout-Parameters überschreitet, wird der Linux-NVMe-Treiber die I/O nicht ausführen und einen Fehler an das Dateisystem oder die Anwendung zurückgeben. Abhängig von der I/O-Operation kann Ihr Dateisystem oder Ihre Anwendung den Fehler erneut wiederholen. In einigen Fällen kann es vorkommen, dass Ihr Dateisystem als schreibgeschützt wieder gemountet wird.

Für eine Erfahrung, die mit der bei an Xen-Instances angefügten EBS-Volumen vergleichbar ist, sollte für nvme_core.io_timeout der höchstmögliche Wert festgelegt werden. Für aktuellen Kernel ist der Höchstwert 4294967295, während für frühere Kernels maximal 255. Abhängig von der Linux-Version ist das Timeout möglicherweise bereits auf den unterstützten Höchstwert festgelegt. Beispiel: Für Amazon Linux AMI 2017.09.01 und höher ist als Timeout standardmäßig 4294967295 festgelegt.

Sie können den Maximalwert für Ihre Linux-Distribution überprüfen, indem Sie einen höheren Wert als den vorgeschlagenen Maximalwert in /sys/module/nvme_core/parameters/io_timeout eintragen und nach dem Fehler Numerical result out of range (Numerisches Ergebnis außerhalb des Bereichs) suchen, wenn Sie versuchen, die Datei zu speichern.

Windows-Instances

Unter Windows beträgt das Standard-Timeout 60 Sekunden und das Maximum 25 Sekunden. Die TimeoutValue-Festplattenklasseneinstellung kann mit dem unter Registry-Einträge für SCSI Miniport-Treiber beschriebenen Verfahren geändert werden.

Abort command

Der Befehl Abort ist ein NVMe-Admin-Befehl, der ausgegeben wird, um einen bestimmten Befehl abzubrechen, der zuvor an den Controller gesendet wurde. Dieser Befehl wird normalerweise vom Gerätetreiber an Speichergeräte ausgegeben, die den Schwellenwert für den I/O-Betriebs-Timeout überschritten haben. Amazon-EC2-Instance-Typen, die den Abort-Befehl unterstützen, brechen standardmäßig einen bestimmten Befehl ab, der zuvor an den Controller des angeschlossenen Amazon-EBS-Geräts gesendet wurde, an das ein Abort-Befehl ausgegeben wird.

Die folgenden Instance-Typen unterstützen den Abort-Befehl für alle angehängten Amazon-EBS-Volumes standardmäßig: R5b, R6i, M6i, M6a, C6gn, C6i, X2gd, X2iezn, Im4gn, Is4gen.

Andere Instance-Typen ergreifen keine Maßnahmen, wenn Abort-Befehle an angehängte Amazon-EBS-Volumes ausgegeben werden.

Amazon-EBS-Geräte mit NVMe-Geräteversion 1.4 oder höher unterstützen den Abort-Befehl.

Weitere Informationen finden Sie im Abschnitt 5.1 Befehl Abort der NVM-Express-Basisspezifikation.