Visão geral de discos e sistema de arquivos

Nesta página, você terá uma visão geral do sistema de arquivos do Container-Optimized OS e verá como ativar e formatar discos.

Sistema de arquivos

O layout do sistema de arquivos de imagem de nó do Container-Optimized OS é otimizado para melhorar a segurança do nó. O espaço do disco de inicialização foi dividido em três tipos de partições:

  • partição raiz, que é montada como somente leitura
  • partições com estado, que podem ser gravadas e têm estado
  • partições sem estado, que podem ser gravadas, mas o conteúdo não permanece durante as reinicializações

Ao usar o Container-Optimized OS, fique atento ao particionamento se você executar serviços próprios com certas expectativas sobre o layout do sistema de arquivos fora dos contêineres.

O sistema de arquivos raiz é ativado como somente leitura para proteger a integridade do sistema. No entanto, os diretórios iniciais e /mnt/stateful_partition são permanentes e graváveis.

Como trabalhar com o sistema de arquivos do Container-Optimized OS

Na lista a seguir, mostramos os caminhos no sistema de arquivos de imagem do node do Container-Optimized OS, juntamente com as propriedades e o uso recomendado:

Caminho Propriedades Finalidade
/
  • somente leitura
  • executável
O sistema de arquivos raiz é ativado como somente leitura para manter a integridade. O kernel verifica a integridade do sistema de arquivos raiz durante a inicialização e se recusa a inicializar em caso de erros.
/home
/var
  • gravável
  • não executável
  • com estado
Esses caminhos visam armazenar dados que permanecem durante todo o período do disco de inicialização. Eles são montados a partir de /mnt/stateful_partition.
/var/lib/google
/var/lib/docker
/var/lib/toolbox
  • gravável
  • executável
  • com estado
Esses caminhos são diretórios de trabalho para pacotes do Compute Engine (como o serviço de gerente de contas), Docker e Toolbox, respectivamente.
/var/lib/cloud
  • gravável
  • executável
  • sem estado
  • tmpfs
Esse caminho é o diretório de trabalho do pacote cloud-init.
/etc
  • gravável
  • não executável
  • sem estado
  • tmpfs
Geralmente mantém sua configuração. Por exemplo, os serviços do systemd definidos por meio do cloud-init. É recomendável registrar o estado pretendido das instâncias no cloud-init, já que o cloud-init é aplicado quando uma instância é criada ou reinicializada.
/tmp
  • gravável
  • não executável
  • sem estado
  • tmpfs
Normalmente é usado como um espaço de rascunho. Não o use para armazenar dados persistentes.
/mnt/disks
  • gravável
  • executável
  • sem estado
  • tmpfs
É possível montar discos permanentes nos diretórios em /mnt/disks.

Como ativar e formatar discos

É possível anexar um disco permanente ou criar uma instância com SSDs locais ao usar o Container-Optimized OS. Siga as instruções em Como formatar e ativar um disco permanente ou Formatar e ativar um dispositivo SSD local para ver os casos de uso apropriados.

É possível ativar os discos criando um subdiretório no diretório /mnt/disks. Como /etc/ é sem estado no Container-Optimized OS, não é possível usar /etc/fstab para realizar fsck (verificação de consistência do sistema de arquivos) automaticamente e ativar os discos na inicialização. No entanto, é possível fazer isso realizando essas operações na seção bootcmd no cloud-config.

No exemplo a seguir, o disco DEVICE_ID é montado no diretório /mnt/disks.

  1. Crie um arquivo de script usando 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:

    • DEVICE_ID é o ID do dispositivo do disco que você quer formatar e montar.
    • MNT_DIR: o diretório em que o disco será montado.

    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 arquivo de script usando a sinalização --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, use o seguinte comando:

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

    Substitua:

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