Wie verwende ich den Speicher "Instance Store Volumes" in Amazon EC2?


18

Laut AWS habe ich mit dem Medium EC2 Server 850 GB Speicher erhalten. Aber wenn ich ein Amazon Linux AMI erstelle, kann ich die mitgelieferten 850 GB nicht verwenden.

Während der Erstellung wird in der Speichergerätekonfiguration in Instance Store Volumes angezeigt, dass sich das Gerät unter / dev / sdb befindet. Wenn ich die VM starte, finde ich jedoch nur / dev / sda1.

Können Sie mir bitte bei der Montage dieses Speichers helfen? Danke dir

Wenn Amazon behauptet, dass der Instanzspeicher für die langfristige Nutzung nicht sicher ist und die Verwendung von EBS vorziehen sollte, wozu sind dann diese 850 GB gut?

Vielen Dank


Welchen bestimmten Instanztyp möchten Sie ausführen? c1.medium? m1.medium? etwas anderes?
Eric Hammond

Antworten:


10

Die Verwendung von instanzlokalem Speicher, der beim Stoppen einer Instanz nicht persistent ist, ist recht einfach: Es handelt sich um einen sehr großen Speicherbereich, der für vorübergehende Dinge nützlich ist. Sie sind das perfekte Ziel für das Mounten /tmpund äußerst nützlich, wenn Ihr Server sehr große Dateien vorübergehend verarbeitet.

Wenn Sie beispielsweise eine Gruppe von Instanzen erstellen, um hochgeladene Videodateien in Text zu übersetzen, ist der instanzlokale Speicher genau das Richtige, um die in Bearbeitung befindlichen Dateien zu speichern. Es kann einige Stunden dauern, bis die Datei verarbeitet wurde. Sobald dies erledigt ist, kann die Datei gelöscht und eine weitere aufgenommen werden. Sie brauchen dafür kein EBS, und es ist viel billiger, diese Art von Speicher instanzlokal als EBS zu betreiben.

Der instanzlokale Speicher soll als Arbeitsspeicher für die Ausführung der Verarbeitung und nicht als Langzeitspeicher verwendet werden. Wenn Ihre Workload keinen Arbeitsspeicherplatz für irgendetwas benötigt oder das, was benötigt wird, so klein ist, dass es nicht signifikant ist, dann passt es nicht zu Ihnen.


16
Temporärer Speicher oder Instance-Store bleiben auch nach einem Neustart einer Instanz erhalten! Es bleibt weder beim Anhalten / Starten noch beim Beenden oder bei einigen Hardwarefehlern von Instanzen erhalten. Hier ist ein Artikel, den ich über den Unterschied zwischen Neustart und Stopp / Start geschrieben habe: alestic.com/2011/09/ec2-reboot-stop-start
Eric Hammond

27

Wenn es nicht bereits unter zB / mnt gemountet ist und noch kein Dateisystem erstellt wurde, gehen Sie wie folgt vor:

  1. Überprüfen Sie den Gerätenamen

    sudo fdisk -l

  2. Erstellen Sie ein Verzeichnis, in dem Sie das Volume bereitstellen möchten

    sudo mkdir / mnt

  3. Erstellen Sie ein Dateisystem auf Ihrem Volume (stellen Sie sicher, dass Sie das richtige Volume auswählen, da dadurch ein neues Dateisystem auf dem Volume erstellt wird).

    sudo mkfs.ext4 / dev / xvdj

  4. Mount Volume

    sudo mount -t ext4 / dev / xvdj / mnt

  5. Wenn Sie den Mount zB nach einem Neustart beibehalten möchten, öffnen Sie / etc / fstab und fügen Sie den Mount hinzu

    echo "/ dev / xvdj / mnt auto noatime 0 0" | sudo tee -a / etc / fstab

  6. Stellen Sie sicher, dass mit fstab nichts falsch ist, indem Sie all einhängen

    mount -a


5
Abhängig vom Instanztyp müssen Sie zuerst die Instanzspeicherdatenträger mit den Optionen für die Blockgerätezuordnung an die Instanz anhängen. Wenn Sie dies nicht tun, sehen Sie möglicherweise nicht einmal die Geräte unter / dev
Eric Hammond

@ EricHammonds Kommentar war wirklich die Antwort auf meine Suche - ich habe sie nirgendwo gesehen - auch nicht infdisk -l
Peter V. Mørch

Wenn Sie das Gerät nicht sehen, versuchen Sie es mit lsblk.
volker238

Diese Anweisungen stellen das Volume für mich bereit, aber der Versuch, eine neue Datei auf das Volume zu schreiben, gibt "Zugriff verweigert". Ich kann nicht herausfinden, was mit den Berechtigungen nicht stimmt. Irgendwelche Ideen?
MikeB

lsblk -fist der beste Weg, um Datenträger zu finden. Alle bereitgestellten Datenträger werden mit dem Bereitstellungspfad und den Bezeichnungen für Datenträger angezeigt (empfohlen wird die Verwendung von UUIDs oder Bezeichnungen beim Bereitstellen von Dateisystemen unter Linux).
RichVel

1

Ich habe ein Skript für Ubuntu erstellt, das beim Booten und nach einem Start / Stopp-Zyklus ausgeführt werden kann, da dies in der Welt von AWS zwei sehr unterschiedliche Dinge sind. Wenn Sie neu starten, haben Sie immer noch die gleiche kurzlebige Festplatte, und Sie müssen nur noch mounten (/ etc / fstab sollte dies automatisch erledigen). Wenn jedoch eine Instanz gestoppt und dann neu gestartet wird, erhalten Sie eine neue unformatierte kurzlebige Festplatte, die mehr Liebe benötigt bereit zum Benutzen. Solange Sie den / etc / fstab-Eintrag korrekt eingegeben haben, können Sie diesen jederzeit ausführen und das Gerät wird nach Bedarf eingehängt / formatiert. Es wird ein Parameter des Einhängepunkts verwendet, aber falls nicht angegeben, wird / mnt angenommen. Sie können das Skript mount_ephemeral.sh aufrufen und als root in einem Startdienst ausführen.

#!/bin/sh
set -e
mountPoint=${1:-'/mnt'}
rawDevice=$(grep "\s$mountPoint\s" /etc/fstab |cut -f1)
#echo checking $mountPoint on $rawDevice
[ "$rawDevice" = "" ] && { echo -e "$mountPoint not in /etc/fstab"; exit 1; }
mountpoint -q $mountPoint
[  "$?" = "0" ] && { echo -e "$mountPoint mounted"; exit; }
hasFS=$(blkid |grep $rawDevice)
[ ! "$hasFS" = "" ] && { echo -e "$mountPoint has FS:$hasFS"; mount $mountPoint; exit; }
echo initializing $mountPoint on $rawDevice
mkdir -p $mountPoint
mkfs.ext4 $rawDevice
mount $mountPoint
chmod 777 $mountPoint
exit 0

Ich bevorzuge es, nicht /mntals Einhängepunkt für Volumes zu verwenden, da die Konvention /mnt/foofür jedes Volume verwendet wird. Wenn Sie irgendwann ein anderes Volume /mnt/barbereitstellen müssen, würde dies bedeuten, dass die Bereitstellung des /mntVolumes nicht rückgängig gemacht werden kann, solange /mnt/bares bereitgestellt ist. Das grepist gefährlich, wenn Sie /mntMount-Punkte verwenden und es gibt /mnt/foo, da /mntmehrere Zeilen übereinstimmen könnten - daher kann das Skript in einigen Fällen die falsche Festplatte mounten oder mkfs.
RichVel

Andere ähnliche Halterungen werden nicht gefunden, da sie genau übereinstimmen müssen. Das Problem ist, dass das in Ihrer fstab verwendete Leerzeichen mit dem in grep angegebenen Wert übereinstimmen muss. Ich habe aktualisiert, \baber YMMV zu verwenden. Dies /mntist nur eine Voreinstellung, die Sie selbst ändern können, und nur ein Beispiel. Darüber hinaus können Sie dem Skript einen Parameter übergeben, der stattdessen diesen Einhängepunkt verwendet. Ich werde hinzufügen set -e, dass jeder Fehler das gesamte Skript beendet
DanJGer

Korrektur: geändert von \bbis\s
DanJGer

0

Die Bereitstellung des Instanzspeichers hängt auch vom Image ab:

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/add-instance-store-volumes.html

Wenn Sie eine Instanz starten, wird die Standardzuordnung für Blockgeräte von der angegebenen AMI bereitgestellt. Wenn Sie zusätzliche Instanzspeichervolumes benötigen, müssen Sie diese beim Starten der Instanz hinzufügen. Beachten Sie, dass Sie auch Geräte weglassen können, die in der AMI-Blockgerätezuordnung angegeben sind.

Einige Bilder verwenden alle verfügbaren Ressourcen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.