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 |
---|---|---|
/ |
|
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 |
|
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 |
|
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 |
|
Este caminho é o diretório de trabalho do pacote cloud-init . |
/etc |
|
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 |
|
Normalmente, é usado como um espaço temporário e não deve ser usado para armazenar dados persistentes. |
/mnt/disks |
|
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
.
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
emount
.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.