An einige AWS-Instanzen sind "kurzlebige Datenträger" angeschlossen, die viel schneller als EBS sind. Vergängliche Datenträger sind jedoch leer und nicht initialisiert, wenn Ihre Instanz gestoppt und gestartet wird. Die Daten auf der Festplatte überleben jedoch im Allgemeinen einen Neustart der Instanz.
Frage : Sollte ich auf meiner AWS-Instanz ein Software-RAID1 verwenden, das über eine kurzlebige Festplatte und ein EBS-Volume erstellt wurde?
Ich denke, dass raid1 nur mit dem EBS-Volume im herabgesetzten Modus angezeigt wird, und dann können wir mdadm-Befehle verwenden, um die leere kurzlebige Festplatte wieder in den raid aufzunehmen. Dadurch kann die App 5-10 Minuten früher gestartet werden, was zu einer schlechteren Leistung führt, während raid1 synchronisiert wird.
Hintergrund : Ich habe eine App, die ~ 40 GB Datendateien verwendet. Die Zugriffszeiten hängen direkt von der Leistung ab. Je schneller die Festplatte, desto schneller die App.
In der Vergangenheit haben wir etwas von rc.local bis rsync-Daten von einer EBS-Festplatte auf die kurzlebige Festplatte ausgeführt und dann die Software gestartet. Die Synchronisierung dauert 5-10 Minuten, besser als die 5-20 Minuten, die für die Synchronisierung von einer anderen Instanz benötigt wurden. In der Vergangenheit haben wir sogar die Datendateien von einer Ramdisk verwendet, die nicht so schnell war wie die kurzlebigen Festplatten.
Weitere Informationen - Dies ist ein i3.4xlarge mit zwei kurzlebigen NVME-Laufwerken.
# hdparm -t /dev/md? /dev/nvme?n1 /dev/xvd?
/dev/md0: 9510 MB in 3.00 seconds = 3169.78 MB/sec RAID0 of two eph drives
/dev/nvme0n1: 4008 MB in 3.00 seconds = 1335.74 MB/sec Eph drive
/dev/nvme1n1: 4014 MB in 3.00 seconds = 1337.48 MB/sec Eph drive
/dev/xvda: 524 MB in 3.01 seconds = 174.17 MB/sec gp2 16GB, 100 IOPs root
/dev/xvdf: 524 MB in 3.01 seconds = 174.23 MB/sec gp2 120GB, 300 IOPs data
/dev/xvdz: 874 MB in 3.01 seconds = 290.68 MB/sec gp2 500GB, 1500 IOPs raid-seed disk
Ich habe einen raid1 mit erstellt
mdadm --create /dev/md1 --raid-devices=3 --verbose --level=1 /dev/nvme?n1 /dev/xvdz
was zurückgibt:
$ cat /proc/mdstat
Personalities : [raid0] [raid1]
md1 : active raid1 nvme1n1[4] nvme0n1[3] xvdz[2]
524155904 blocks super 1.2 [3/3] [UUU]
bitmap: 0/4 pages [0KB], 65536KB chunk
Seltsamerweise liest sich der Raid ungefähr so schnell wie die schnelleren Laufwerke und ist nicht auf die Geschwindigkeit der langsamsten Festplatte beschränkt.
/dev/md1: 4042 MB in 3.00 seconds = 1346.67 MB/sec
/dev/nvme0n1: 4104 MB in 3.00 seconds = 1367.62 MB/sec
/dev/nvme1n1: 4030 MB in 3.00 seconds = 1342.93 MB/sec
/dev/xvdz: 668 MB in 3.01 seconds = 222.26 MB/sec
Ein Aus- / Einschalten gibt ein verschlechtertes Raidset zurück, aber die App kann immer noch ausgeführt werden, wenn auch langsamer. Die Kosten für das Warten von 5 bis 10 Minuten werden vermieden, und ich kann die kurzlebigen Festplatten ohne einen Neustart der App im laufenden Betrieb erneut zum Raid hinzufügen.
Gibt es etwas, das ich verpasst oder nicht berücksichtigt habe, obwohl es perfekt zu funktionieren scheint?