Présentation des disques et du système de fichiers

Cette page présente le système de fichiers de Container-Optimized OS et explique comment installer et formater des disques.

Système de fichiers

La structure du système de fichiers dans l'image de nœud Container-Optimized OS est optimisée pour améliorer la sécurité des nœuds. L'espace disque d'amorçage est divisé en trois types de partitions :

  • Partition racine, installée en lecture seule.
  • Partitions avec état, accessibles en écriture et avec état.
  • Partitions sans état, accessibles en écriture, mais dont le contenu ne persiste pas après un redémarrage.

Lorsque vous utilisez Container-Optimized OS, tenez compte du partitionnement si vous exécutez vos propres services ayant certaines exigences concernant l'organisation du système de fichiers en dehors des conteneurs.

Le système de fichiers racine est installé en lecture seule pour protéger l'intégrité du système. Cependant, les répertoires d'accueil et /mnt/stateful_partition sont persistants et accessibles en écriture.

Travailler avec le système de fichiers de Container-Optimized OS

Vous trouverez ci-dessous la liste des chemins du système de fichiers dans l'image de nœud Container-Optimized OS, ainsi que leurs propriétés et leur utilisation recommandée :

Chemin Propriétés Objectif
/
  • lecture seule
  • exécutable
Le système de fichiers racine est utilisé en lecture seule pour préserver son intégrité. Le noyau vérifie l'intégrité du système de fichiers racine lors du démarrage et refuse de démarrer en cas d'erreur.
/home
/var
  • accessible en écriture
  • non-exécutable
  • avec état
Ces chemins d'accès sont destinés à stocker des données qui sont conservées pendant toute la durée de vie du disque de démarrage. Ils sont installés à partir de /mnt/stateful_partition.
/var/lib/google
/var/lib/docker
/var/lib/toolbox
  • accessible en écriture
  • exécutable
  • avec état
Ces chemins d'accès sont des répertoires de travail pour les packages Compute Engine (par exemple, le service de gestion des comptes), Docker et Toolbox, respectivement.
/var/lib/cloud
  • accessible en écriture
  • exécutable
  • sans état
  • tmpfs
Ce chemin correspond au répertoire de travail du package cloud-init.
/etc
  • accessible en écriture
  • non-exécutable
  • sans état
  • tmpfs
Contient généralement votre configuration (par exemple, les services systemd définis via cloud-init). Il est judicieux d'enregistrer l'état souhaité de vos instances dans cloud-init, car cloud-init est appliqué lors de la création, ainsi que lors du redémarrage d'une instance.
/tmp
  • accessible en écriture
  • non-exécutable
  • sans état
  • tmpfs
Généralement utilisé comme espace de travail et ne doit pas être utilisé pour stocker des données persistantes.
/mnt/disks
  • accessible en écriture
  • exécutable
  • sans état
  • tmpfs
Vous pouvez installer des disques persistants dans des répertoires sous /mnt/disks.

Installer et formater des disques

Vous pouvez associer un disque persistant ou créer une instance avec des disques SSD locaux lorsque vous utilisez Container-Optimized OS. Suivez les instructions de la section Formater et installer un disque persistant ou Formater et installer un disque dur SSD local pour le cas d'utilisation approprié.

Les disques peuvent être installés en créant un sous-répertoire dans le répertoire /mnt/disks. Étant donné que /etc/ est sans état sur Container-Optimized OS, vous ne pouvez pas utiliser /etc/fstab pour faire une vérification automatique de la cohérence du système de fichiers et installer les disques au démarrage. Cependant, vous pouvez obtenir le même résultat en effectuant ces opérations à partir de la section bootcmd dans votre cloud-config.

L'exemple suivant permet d'installer le disque DEVICE_ID sous le répertoire /mnt/disks.

  1. Créez un fichier de script avec le contenu suivant :

    #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
    

    Remplacez les éléments suivants :

    • DEVICE_ID : ID de l'appareil pour le disque que vous souhaitez formater et installer.
    • MNT_DIR : répertoire dans lequel installer votre disque.

    Veuillez consulter la documentation Linux pour connaître l'ensemble des options compatibles avec les commandes fsck.ext4 et mount.

  2. Mettez à jour les métadonnées de la VM pour inclure le fichier de script à l'aide de l'option --metadata-from-file.

    Pour créer une VM, utilisez la commande suivante :

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

    Pour mettre à jour une instance existante, utilisez la commande suivante :

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

    Remplacez les éléments suivants :

    • INSTANCE_NAME : nom de votre instance de VM.
    • SCRIPT_FILE_NAME : nom du fichier de script de métadonnées.