Speicherinterne RAM-Disks erstellen

Compute Engine-Instanzen bieten leistungsstarken Speicher auf Unternehmensniveau, mit dem Sie Ihre Anwendungen ausführen können. Sie können Teile des Speichers dazu nutzen, eine RAM-Disk mit außergewöhnlich geringer Latenz und hohem Durchsatz zu erstellen. RAM-Disks sind eine gute Wahl, wenn Anwendungen eine Dateisystemstruktur voraussetzen und Daten nicht einfach im Speicher abspeichern können. RAM-Disks bieten keine Speicherredundanz oder -flexibilität. Deshalb empfiehlt es sich, RAM-Disks in Verbindung mit anderen Speicheroptionen für Instanzen zu verwenden.

RAM-Disks teilen den Instanzspeicher mit Ihren Anwendungen. Falls Ihre Instanzen nicht genügend Speicher für die RAM-Disks und die Anwendungen haben, können Sie Instanzen mit Maschinentypen mit großem Speicher erstellen oder ein Upgrade der vorhandenen Instanzen ausführen, um zusätzlichen Speicher hinzuzufügen.

Hinweise

RAM-Disks erstellen

Sie können ein RAM-Laufwerkmit dem tmpfs-Tool erstellen, das standardmäßig auf zahlreichen Linux-Betriebssystemen installiert ist.

  1. Wenn Ihre Instanz nicht genügend verfügbaren Speicher hat, können Sie optional den Maschinentyp Ihrer Instanz ändern und einen Maschinentyp mit mehr Speicher auswählen.

  2. Stellen Sie eine Verbindung zu Ihrer Instanz über SSH her. Öffnen Sie für dieses Beispiel die Seite VM-Instanzen und klicken Sie neben der Instanz, für die Sie eine RAM-Disk hinzufügen möchten, auf die Schaltfläche "SSH"

  3. Einen Bereitstellungspunkt für eine RAM-Disk erstellen.

    $ sudo mkdir /mnt/ram-disk
    
  4. Erstellen Sie eine neue tmpfs-RAM-Disk und stellen Sie es bereit. Für das Attribut size muss dabei ein Wert festgelegt werden, der Ihren Speicheranforderungen entspricht. Achten Sie darauf, dass genügend Arbeitsspeicher für Ihre Anwendungen bereitsteht und nicht der gesamte verfügbare Speicher ausgelastet wird. In diesem Beispiel hat die Instanz den Maschinentyp n1-highmem-32 mit 208 GB Arbeitsspeicher, daher ist die Größe der 50g-RAM-Disk angemessen.

    $ sudo mount -t tmpfs -o size=50g tmpfs /mnt/ram-disk
    
  5. Fügen Sie die RAM-Disk der /etc/fstab-Datei hinzu, damit das Gerät automatisch bereitgestellt wird, wenn Sie die Instanz neu starten:

    $ echo 'tmpfs /mnt/ram-disk tmpfs nodev,nosuid,noexec,nodiratime,size=50G 0 0' | sudo tee -a /etc/fstab
    

RAM-Disks löschen

Die Bereitstellung einer tmpfsRAM-Disk können Sie wie bei jedem anderen Datenträger aufheben. Dadurch werden die RAM-Disk und alle auf ihr gespeicherten Daten gelöscht. Entfernen Sie in diesem Beispiel eine RAM-Disk, die unter /mnt/ram-disk bereitgestellt ist:

$ sudo umount /mnt/ram-disk

Eine automatische Sicherung der RAM-Disk-Daten vor Neustart einer Instanz durchführen

Damit die Daten der RAM-Disk bei einem Neustart nicht verloren gehen, können Sie eine RAM-Disk sichern, bevor Ihre Instanz neu gestartet wird. Kopieren Sie Ihre Daten auf eine persistente Festplatte.

  1. Erstellen Sie einen nichtflüchtigen Speicher und stellen Sie diesen bereit, um ihn als Sicherungslaufwerk für Ihre RAM-Disk zu verwenden. Das Laufwerk muss genügend Speicherplatz für die Daten Ihrer RAM-Disk haben.

  2. Erstellen Sie ein Shutdown-Skript für die Instanz mit einem rsync-Befehl, um die Daten der RAM-Disk auf das Sicherungslaufwerk zu kopieren. Fügen Sie für dieses Beispiel mit dem gcloud-Tool die shutdown-script-Metadaten zur Instanz hinzu, wobei die RAM-Disk unter /mnt/ram-disk und der nichtflüchtige Speicher unter /mnt/ram-disk-backup bereitgestellt wird.

    gcloud compute instances add-metadata example-instance --metadata shutdown-script="#! /bin/bash
    rsync -a --delete --recursive --force /mnt/ram-disk/ /mnt/ram-disk-backup/
    EOF"
    
  3. Optional können Sie ein Startskript erstellen, das die Dateien bei einem Neustart der Instanz auf der RAM-Disk wiederherstellt. Verwenden Sie das gcloud-Tool, um die startup-script-Metadaten auf die Instanz zu übertragen.

    gcloud compute instances add-metadata example-instance --metadata startup-script="#! /bin/bash
    rsync -a --recursive --force /mnt/ram-disk-backup/ /mnt/ram-disk/
    EOF"