Panoramica su dischi e filesystem

Questa pagina fornisce una panoramica del file system di Container-Optimized OS e descrive come montare e formattare i dischi.

File system

Il layout del file system di immagini dei nodi di Container-Optimized OS è ottimizzato per migliorare la sicurezza dei nodi. Lo spazio su disco di avvio è suddiviso in tre tipi di partizioni:

  • Partizione radice, montata in sola lettura.
  • Partizioni stateful, scrivibili e stateful.
  • Partizioni stateless, scrivibili ma i contenuti non persistono durante i riavvii.

Quando utilizzi Container-Optimized OS, presta attenzione al partizionamento se esegui i tuoi servizi che hanno determinate aspettative sul layout del file system al di fuori dei container.

Il file system radice viene montato in sola lettura per proteggere l'integrità del sistema. Tuttavia, le home directory e /mnt/stateful_partition sono permanenti e scrivibili.

Utilizzo del file system Container-Optimized OS

Di seguito è riportato un elenco dei percorsi nel file system di immagini dei nodi di Container-Optimized OS, insieme alle relative proprietà e all'utilizzo consigliato:

Percorso Proprietà Finalità
/
  • sola lettura
  • eseguibile
Il file system radice viene montato in sola lettura per mantenere l'integrità. Il kernel verifica l'integrità del file system radice durante l'avvio e si rifiuta di avviarlo in caso di errori.
/home
/var
  • scrivibile
  • non eseguibile
  • stateful
Questi percorsi sono destinati all'archiviazione dei dati persistenti per tutta la durata del disco di avvio. Sono montati da /mnt/stateful_partition.
/var/lib/google
/var/lib/docker
/var/lib/toolbox
  • scrivibile
  • eseguibile
  • stateful
Questi percorsi sono directory di lavoro per i pacchetti Compute Engine (ad esempio, il servizio Account Manager), Docker e Toolbox.
/var/lib/cloud
  • scrivibile
  • eseguibile
  • apolide
  • tmpfs
Questo percorso è la directory di lavoro del pacchetto cloud-init.
/etc
  • scrivibile
  • non eseguibile
  • apolide
  • tmpfs
In genere memorizza la tua configurazione (ad esempio, i servizi systemd definiti tramite cloud-init). È consigliabile acquisire lo stato desiderato delle istanze in cloud-init, in quanto cloud-init viene applicato quando un'istanza viene appena creata e quando un'istanza viene riavviata.
/tmp
  • scrivibile
  • non eseguibile
  • apolide
  • tmpfs
In genere viene utilizzato come spazio temporaneo e non deve essere utilizzato per archiviare dati permanenti.
/mnt/disks
  • scrivibile
  • eseguibile
  • apolide
  • tmpfs
Puoi montare i dischi permanenti in directory in /mnt/disks.

Montaggio e formattazione dei dischi

Puoi collegare un disco permanente o creare un'istanza con SSD locali quando utilizzi Container-Optimized OS. Per il caso d'uso appropriato, segui le istruzioni riportate in Formattazione e montaggio di un disco permanente o Formattare e installare un dispositivo SSD locale.

I dischi possono essere montati creando una sottodirectory nella directory /mnt/disks. Poiché /etc/ è stateless nel sistema operativo Container-Optimized OS, non è possibile utilizzare /etc/fstab per eseguire automaticamente l'fsck (controllo della coerenza del file system) e il montaggio dei dischi all'avvio. Puoi ottenere lo stesso risultato svolgendo queste operazioni dalla sezione bootcmd in cloud-config.

L'esempio seguente monta il disco DEVICE_ID nella directory /mnt/disks.

  1. Crea un file di script utilizzando i seguenti contenuti:

    #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
    

    Sostituisci quanto segue:

    • DEVICE_ID: l'ID del disco che vuoi formattare e montare.
    • MNT_DIR: la directory in cui montare il disco.

    Consulta la documentazione di Linux per un insieme completo di opzioni supportate dai comandi fsck.ext4 e mount.

  2. Aggiorna i metadati della VM in modo da includere il file di script utilizzando il flag --metadata-from-file.

    Per creare una VM, utilizza il comando seguente:

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

    Per aggiornare un'istanza esistente, utilizza il comando seguente:

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

    Sostituisci quanto segue:

    • INSTANCE_NAME: il nome dell'istanza VM.
    • SCRIPT_FILE_NAME: il nome del file di script dei metadati.