Vista geral dos discos e do sistema de ficheiros

Esta página oferece uma vista geral do sistema de ficheiros do SO otimizado para contentores e descreve como montar e formatar discos.

Sistema de ficheiros

O esquema do sistema de ficheiros da imagem do nó do SO otimizado para contentores está otimizado para melhorar a segurança do nó. O espaço do disco de arranque está dividido em três tipos de partições:

  • Partição raiz, que é montada como só de leitura.
  • Partições com monitorização de estado, que são graváveis e com monitorização de estado.
  • Partições sem estado, que são graváveis, mas o conteúdo não persiste após o reinício.

Quando usar o SO otimizado para contentores, tenha em atenção a partição se executar os seus próprios serviços que tenham determinadas expetativas sobre a disposição do sistema de ficheiros fora dos contentores.

O sistema de ficheiros raiz está montado como só de leitura para proteger a integridade do sistema. No entanto, os diretórios iniciais e /mnt/stateful_partition são persistentes e graváveis.

Trabalhar com o sistema de ficheiros do SO otimizado para contentores

Segue-se uma lista de caminhos no sistema de ficheiros de imagem do nó do SO otimizado para contentores, juntamente com as respetivas propriedades e utilização recomendada:

Caminho Propriedades Finalidade
/
  • só de leitura
  • executável
O sistema de ficheiros raiz está montado como só de leitura para manter a integridade. O kernel verifica o sistema de ficheiros raiz de integridade durante o arranque e recusa-se a arrancar em caso de erros.
/home
/var
  • gravável
  • não executável
  • com estado
Estes caminhos destinam-se ao armazenamento de dados que persistem durante a duração total do disco de arranque. Estão montadas a partir de /mnt/stateful_partition.
/var/lib/google
/var/lib/docker
/var/lib/toolbox
  • gravável
  • executável
  • com estado
Estes caminhos são diretórios de trabalho para pacotes do Compute Engine (por exemplo, o serviço de gestão de contas), o Docker e a caixa de ferramentas, respetivamente.
/var/lib/cloud
  • gravável
  • executável
  • sem estado
  • tmpfs
Este caminho é o diretório de trabalho do pacote cloud-init.
/etc
  • gravável
  • executável
  • sem estado
  • tmpfs
Normalmente, contém a sua configuração (por exemplo, os serviços definidos através de cloud-init). É recomendável capturar o estado pretendido das suas instâncias em cloud-init, uma vez que cloud-init é aplicado quando uma instância é criada recentemente, bem como quando uma instância é reiniciada.systemd
/tmp
  • gravável
  • não executável
  • sem estado
  • tmpfs
Normalmente, é usado como um espaço temporário e não deve ser usado para armazenar dados persistentes.
/mnt/disks
  • gravável
  • executável
  • sem estado
  • tmpfs
Pode montar discos persistentes em diretórios em /mnt/disks.

Montar e formatar discos

Pode anexar um disco persistente ou criar uma instância com SSDs locais quando usar o SO otimizado para contentores. Siga as instruções em Formatar e montar um disco persistente ou Formatar e montar um dispositivo SSD local para o exemplo de utilização adequado.

Os discos podem ser montados criando um subdiretório no diretório /mnt/disks. Uma vez que /etc/ não tem estado no SO otimizado para contentores, não pode usar /etc/fstab para executar automaticamente o fsck (verificação de consistência do sistema de ficheiros) e montar os discos no arranque. No entanto, pode conseguir o mesmo fazendo essas operações na secção bootcmd do cloud-config.

O exemplo seguinte monta o disco DEVICE_ID no diretório /mnt/disks.

  1. Crie um ficheiro de script com o seguinte conteúdo:

    #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
    

    Substitua o seguinte:

    • DEVICE_ID: o ID do dispositivo do disco que quer formatar e montar.
    • MNT_DIR: o diretório no qual montar o disco.

    Consulte a documentação do Linux para ver um conjunto completo de opções suportadas pelos comandos fsck.ext4 e mount.

  2. Atualize os metadados da VM para incluir o ficheiro de script através da flag --metadata-from-file.

    Para criar uma VM, use o seguinte comando:

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

    Para atualizar uma instância existente, use o seguinte comando:

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

    Substitua o seguinte:

    • INSTANCE_NAME: o nome da sua instância de VM.
    • SCRIPT_FILE_NAME: o nome do ficheiro de script de metadados.