En esta página se ofrece una descripción general del sistema de archivos de Container-Optimized OS y se explica cómo montar y formatear discos.
Sistema de archivos
El diseño del sistema de archivos de la imagen de nodo de Container-Optimized OS se ha optimizado para mejorar la seguridad de los nodos. El espacio del disco de arranque se divide en tres tipos de particiones:
- Partición raíz: se monta como de solo lectura.
- Particiones con reconocimiento del estado: se pueden escribir y tienen estado.
- Particiones sin estado: se pueden escribir, pero el contenido no se conserva al reiniciar.
Cuando uses Container-Optimized OS, ten en cuenta las particiones si ejecutas tus propios servicios que tengan ciertas expectativas sobre el diseño del sistema de archivos fuera de los contenedores.
El sistema de archivos raíz se monta como de solo lectura para proteger la integridad del sistema.
Sin embargo, los directorios principales y /mnt/stateful_partition
son persistentes y se pueden escribir.
Trabajar con el sistema de archivos de Container-Optimized OS
La siguiente es una lista de rutas en el sistema de archivos de la imagen de nodo de Container-Optimized OS, junto con sus propiedades y el uso recomendado:
Ruta | Propiedades | Finalidad |
---|---|---|
/ |
|
El sistema de archivos raíz está activado como solo lectura para mantener la integridad. El kernel verifica la integridad del sistema de archivos raíz durante el arranque y se niega a arrancar si se producen errores. |
/home /var |
|
Estas rutas se usan para almacenar datos que se conservan durante la vida útil del disco de arranque. Se montan desde /mnt/stateful_partition . |
/var/lib/google /var/lib/docker /var/lib/toolbox |
|
Estas rutas son directorios de trabajo de los paquetes de Compute Engine (por ejemplo, el servicio de gestión de cuentas), Docker y Toolbox, respectivamente. |
/var/lib/cloud |
|
Esta ruta es el directorio de trabajo del paquete cloud-init . |
/etc |
|
Normalmente, contiene tu configuración (por ejemplo, systemd servicios definidos mediante cloud-init ).
Es recomendable registrar el estado deseado de tus instancias en cloud-init , ya que cloud-init se aplica cuando se crea una instancia y cuando se reinicia. |
/tmp |
|
Se suele usar como espacio de almacenamiento temporal y no se debe usar para almacenar datos persistentes. |
/mnt/disks |
|
Puedes activar discos persistentes en directorios de /mnt/disks . |
Montar y formatear discos
Puedes conectar un disco persistente o crear una instancia con SSDs locales cuando utilices Container-Optimized OS. Sigue las instrucciones de Formatear y montar un disco persistente o Formatear y montar un dispositivo SSD local, según el caso.
Los discos se pueden montar creando un subdirectorio en el directorio /mnt/disks
. Como /etc/
no tiene estado en Container-Optimized OS, no puedes usar /etc/fstab
para hacer un fsck (comprobación de coherencia del sistema de archivos) automáticamente y montar los discos al arrancar. Sin embargo, puedes conseguir lo mismo haciendo esas operaciones desde la sección bootcmd
de tu cloud-config
.
En el siguiente ejemplo se monta el disco DEVICE_ID
en el directorio /mnt/disks
.
Crea un archivo de secuencia de comandos con el siguiente contenido:
#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
Haz los cambios siguientes:
DEVICE_ID
: el ID del dispositivo del disco que quieres formatear y montar.MNT_DIR
: el directorio en el que montar el disco.
Consulta la documentación de Linux para ver todas las opciones compatibles con los comandos
fsck.ext4
ymount
.Actualiza los metadatos de la VM para incluir el archivo de secuencia de comandos mediante la marca
--metadata-from-file
.Para crear una VM, usa el siguiente comando:
gcloud compute instances create INSTANCE_NAME \ --metadata-from-file user-data=SCRIPT_FILE_NAME
Para actualizar una instancia, usa el siguiente comando:
gcloud compute instances add-metadata INSTANCE_NAME \ --metadata-from-file user-data=SCRIPT_FILE_NAME
Haz los cambios siguientes:
INSTANCE_NAME
: el nombre de tu instancia de VM.SCRIPT_FILE_NAME
: el nombre del archivo de secuencia de comandos de metadatos.