Auf dieser Seite erhalten Sie eine Übersicht über das Dateisystem von Container-Optimized OS. Außerdem wird beschrieben, wie Sie Laufwerke bereitstellen und formatieren.
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 | Eigenschaften | Zweck |
---|---|---|
/ |
|
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 |
|
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 |
|
Diese Pfade gehören zu Arbeitsverzeichnissen für Compute Engine-Pakete (z. B. den Account-Manager-Dienst), Docker bzw. Toolbox. |
/var/lib/cloud |
|
Dieser Pfad ist das Arbeitsverzeichnis des Pakets cloud-init . |
/etc |
|
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 |
|
Wird normalerweise als temporärer Speicherbereich verwendet und sollte nicht zum Speichern von nichtflüchtigen Daten verwendet werden. |
/mnt/disks |
|
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-config
her aus.
Im folgenden Beispiel wird das Laufwerk DEVICE_ID
unter dem Verzeichnis /mnt/disks
bereitgestellt.
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
undmount
unterstützten Optionen finden Sie in der Linux-Dokumentation.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.