Ü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 Boot-Speicherplatz ist in drei Arten von Partitionen aufgeteilt:

  • Die 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, falls Sie eigene Services ausführen, die bestimmte "Erwartungen" an das Dateisystemlayout außerhalb von Containern haben.

Das Root-Dateisystem wird zur Wahrung der Systemintegrität schreibgeschützt zur Verfügung gestellt. 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. Beispiel: über cloud-init definierte Services 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 und wenn eine Instanz 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

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

Zum Bereitstellen der Laufwerke erstellen Sie ein Unterverzeichnis unter dem Verzeichnis /mnt/disks. Da /etc/ unter dem Container-Optimized OS zustandslos ist, können Sie /etc/fstab nicht verwenden, um die Laufwerke beim Booten automatisch mithilfe von fsck (Dateisystemkonsistenzprüfung) zu überprüfen und bereitzustellen. Um dies dennoch zu tun führen Sie diese Vorgänge vom Abschnitt bootcmd Ihrer cloud-configher aus.

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 ist die Geräte-ID des Laufwerks, das Sie formatieren und bereitstellen möchten.
    • MNT_DIR ist 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 --metadata-from-file-Flag, um die Skriptdatei einzuschließen.

    Führen Sie folgenden Befehl aus, um eine VM zu erstellen:

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

    Verwenden Sie 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 ist der Name der Metadaten-Skriptdatei.