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 dell'immagine del nodo Container-Optimized OS è ottimizzato per migliorare la sicurezza del nodo. Lo spazio su disco di avvio è suddiviso in tre tipi di partizioni:

  • Partizione principale, montata come di sola lettura.
  • Partizioni con stato integro, che sono scrivibili e con stato integro.
  • Partizioni senza stato, che sono scrivibili, ma i cui contenuti non rimangono invariati tra i riavvii.

Quando utilizzi Container-Optimized OS, tieni presente la partizione se esegui i tuoi servizi che hanno determinate aspettative sul layout del file system al di fuori dei container.

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

Utilizzo del file system di Container-Optimized OS

Di seguito è riportato un elenco di percorsi nel sistema di file dell'immagine del nodo Container-Optimized OS, insieme alle relative proprietà e all'utilizzo consigliato:

Percorso Proprietà Finalità
/
  • di sola lettura
  • eseguibile
Il file system principale viene montato in sola lettura per mantenere l'integrità. Il kernel verifica l'integrità del file system principale durante l'avvio e si rifiuta di avviarsi in caso di errori.
/home
/var
  • scrivibile
  • non eseguibili
  • stateful
Questi percorsi sono destinati alla memorizzazione di dati permanenti 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 le directory di lavoro per i pacchetti Compute Engine (ad esempio il servizio Account Manager), Docker e Toolbox.
/var/lib/cloud
  • scrivibile
  • eseguibile
  • stateless
  • tmpfs
Questo percorso è la directory di lavoro del pacchetto cloud-init.
/etc
  • scrivibile
  • eseguibile
  • stateless
  • tmpfs
In genere contiene la configurazione (ad esempio, i servizi systemd definiti tramite cloud-init). È buona norma acquisire lo stato desiderato delle istanze in cloud-init, poiché cloud-init viene applicato quando viene creata una nuova istanza e quando un'istanza viene riavviata.
/tmp
  • scrivibile
  • non eseguibili
  • stateless
  • tmpfs
In genere viene utilizzato come spazio temporaneo e non deve essere utilizzato per archiviare dati permanenti.
/mnt/disks
  • scrivibile
  • eseguibile
  • stateless
  • tmpfs
Puoi montare i dischi permanenti nelle directory sotto /mnt/disks.

Montaggio e formattazione dei dischi

Quando utilizzi Container-Optimized OS, puoi collegare un disco permanente o creare un'istanza con unità SSD locali. Segui le istruzioni su come formattare e montare un disco permanente o formattare e montare un dispositivo SSD locale per il caso d'uso appropriato.

I dischi possono essere montati creando una sottodirectory nella directory /mnt/disks. Poiché /etc/ è stateless su Container-Optimized OS, non puoi usarlo per eseguire automaticamente fsck (controllo di consistenza del file system) e montare i dischi all'avvio./etc/fstab Tuttavia, puoi ottenere lo stesso risultato eseguendo queste operazioni dalla sezione bootcmd in cloud-config.

Nell'esempio seguente, il disco DEVICE_ID viene montato nella directory /mnt/disks.

  1. Crea un file di script con 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 dispositivo del disco che vuoi formattare e montare.
    • MNT_DIR: la directory in cui montare il disco.

    Fai riferimento alla 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 dello script utilizzando il flag --metadata-from-file.

    Per creare una VM, utilizza il seguente comando:

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

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

    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 dello script dei metadati.