Übersicht über Laufwerke und das Dateisystem

Diese Seite bietet einen Überblick über das Dateisystem von Container-Optimized OS und beschreibt, wie Laufwerke bereitgestellt und formatiert werden.

Dateisystem

Das Dateisystemlayout für das Container-Optimized OS-Knoten-Image wurde optimiert, um die Knotensicherheit zu verbessern. Der Bootlaufwerkspeicherplatz ist in drei Arten von Partitionen aufgeteilt:

  • Root-Partition, die schreibgeschützt bereitgestellt wird
  • Zustandsorientierte Partitionen, die bearbeitbar und zustandsorientiert sind.
  • Zustandslose Partitionen, die zwar bearbeitbar sind, deren Inhalte jedoch bei einem Neustart nicht erhalten bleiben

Wenn Sie Container-Optimized OS nutzen, beachten Sie die Partitionierung, wenn Sie eigene Dienste ausführen, die bestimmte "Erwartungen" an das Dateisystemlayout außerhalb von Containern haben.

Zum Schutz der Systemintegrität wird das Root-Dateisystem schreibgeschützt bereitgestellt. Die Basisverzeichnisse und /mnt/stateful_partition sind jedoch persistent und beschreibbar.

Mit dem Container-Optimized OS-Dateisystem arbeiten

Im Folgenden finden Sie eine Liste der Pfade im Dateisystem des Container-Optimized OS-Knoten-Images sowie deren Attribute und empfohlene Verwendung:

Pfad Attribute Zweck
/
  • Schreibgeschützt
  • Ausführbar
Das Root-Dateisystem wird zur Wahrung der Integrität schreibgeschützt zur Verfügung gestellt. Der Kernel überprüft die Integrität des Root-Dateisystems beim Starten und verweigert den Start, wenn Fehler vorliegen.
/home
/var
  • Bearbeitbar
  • Nicht ausführbar
  • Zustandsorientiert
Diese Pfade dienen zum Speichern von Daten, die für die Lebensdauer des Startdatenträgers bestehen bleiben. Sie werden über /mnt/stateful_partition bereitgestellt.
/var/lib/google
/var/lib/docker
/var/lib/toolbox
  • Bearbeitbar
  • Ausführbar
  • Zustandsorientiert
Diese Pfade gehören zu Arbeitsverzeichnissen für Compute Engine-Pakete (z. B. den Account-Manager-Dienst), Docker bzw. Toolbox.
/var/lib/cloud
  • Bearbeitbar
  • Ausführbar
  • Zustandslos
  • tmpfs
Dieser Pfad ist das Arbeitsverzeichnis des Pakets cloud-init.
/etc
  • Bearbeitbar
  • Nicht ausführbar
  • Zustandslos
  • tmpfs
Enthält normalerweise Ihre Konfiguration, wie z. B. über cloud-init definierte Dienste vom Typ systemd. Es empfiehlt sich, den gewünschten Status Ihrer Instanzen in cloud-init zu erfassen, da cloud-init zur Anwendung kommt, wenn eine Instanz neu erstellt oder neu gestartet wird.
/tmp
  • Bearbeitbar
  • Nicht ausführbar
  • Zustandslos
  • tmpfs
Wird normalerweise als temporärer Speicherbereich verwendet und sollte nicht zum Speichern von nichtflüchtigen Daten verwendet werden.
/mnt/disks
  • Bearbeitbar
  • Ausführbar
  • Zustandslos
  • tmpfs
Sie können nichtflüchtige Speicher in Verzeichnissen unter /mnt/disks bereitstellen.

Laufwerke bereitstellen und formatieren

Sie können einen nichtflüchtigen Speicher hinzufügen oder eine Instanz mit lokalen SSDs erstellen, wenn Sie Container-Optimized OS nutzen. Folgen Sie je nach Anwendungsfall der Anleitung Nichtflüchtigen Speicher formatieren und bereitstellen oder Lokales SSD-Gerät formatieren und bereitstellen.

Die Laufwerke können durch Erstellen eines Unterverzeichnisses im Verzeichnis /mnt/disks bereitgestellt werden. Da /etc/ unter Container-Optimized OS zustandslos ist, können Sie /etc/fstab nicht verwenden, um die Laufwerke beim Booten automatisch mit fsck (Dateisystemkonsistenzprüfung) zu überprüfen und bereitzustellen. Dasselbe erreichen Sie jedoch, wenn Sie diese Vorgänge aus dem Abschnitt bootcmd in cloud-config ausführen.

Im folgenden Beispiel wird das Laufwerk DEVICE_ID im Verzeichnis /mnt/disks bereitgestellt.

  1. Erstellen Sie eine Skriptdatei mit folgendem Inhalt:

    #cloud-config
    
    bootcmd:
    - fsck.ext4 -tvy /dev/DEVICE_ID
    - mkdir -p /mnt/disks/MNT_DIR
    - mount -t ext4 -O ... /dev/DEVICE_ID /mnt/disks/MNT_DIR
    

    Dabei gilt:

    • DEVICE_ID: durch die Geräte-ID des Laufwerks, das Sie formatieren und bereitstellen möchten.
    • MNT_DIR: durch das Verzeichnis, in dem das Laufwerk bereitgestellt wird.

    Eine vollständige Liste der von den Befehlen fsck.ext4 und mount unterstützten Optionen finden Sie in der Linux-Dokumentation.

  2. Aktualisieren Sie die VM-Metadaten mit dem Flag --metadata-from-file, um die Skriptdatei einzuschließen.

    Verwenden Sie zum Erstellen einer VM den folgenden Befehl:

    gcloud compute instances create INSTANCE_NAME \
        --metadata-from-file user-data=SCRIPT_FILE_NAME
    

    Verwenden Sie den folgenden Befehl, um eine vorhandene Instanz zu aktualisieren:

    gcloud compute instances add-metadata INSTANCE_NAME \
        --metadata-from-file user-data=SCRIPT_FILE_NAME
    

    Dabei gilt:

    • INSTANCE_NAME ist der Name Ihrer VM-Instanz.
    • SCRIPT_FILE_NAME: der Name der Metadatenskriptdatei.