Crie e anexe um disco que não é de inicialização à sua máquina virtual (VM) usando as instruções nesta página.
Antes de começar
Para usar os comandos da interface de linha de comando (CLI) gdcloud
, verifique se você baixou, instalou
e configurou a CLI gdcloud
.
Todos os comandos do Distributed Cloud usam a CLI gdcloud
ou kubectl
e exigem um ambiente de sistema operacional (SO).
Extrair o caminho do arquivo kubeconfig
Para executar comandos no servidor da API Management, verifique se você tem os seguintes recursos:
Faça login e gere o arquivo kubeconfig para o servidor da API Management se você não tiver um.
Use o caminho para o arquivo kubeconfig do servidor da API Management para substituir
MANAGEMENT_API_SERVER
nestas instruções.
Solicitar permissões e acesso
Para executar as tarefas listadas nesta página, você precisa ter o papel de administrador de máquina virtual do projeto. Siga as etapas para
verificar
se você tem o papel de administrador de máquina virtual do projeto (project-vm-admin
) no namespace
do projeto em que a VM reside.
Para operações de VM usando o console do GDC ou a CLI gdcloud,
peça ao administrador do IAM do projeto para atribuir a você os papéis de
administrador de máquina virtual do projeto e leitor do projeto (project-viewer
).
Anexar um disco a uma VM
Crie e anexe discos que não são de inicialização à VM. Cada disco adicional pode especificar uma imagem personalizada ou um disco em branco. É possível adicionar vários discos de uma só vez a uma VM.
Console
No menu de navegação, clique em Virtual Machines > Instâncias.
Na lista de VMs, clique no nome de uma delas para ver os detalhes.
Clique em Adicionar disco novo.
Na caixa de diálogo de confirmação, clique em Parar para interromper a VM.
Aguarde alguns minutos até que a VM seja interrompida.
Clique em Atualizar.
Quando a VM estiver parada, clique em Adicionar novo disco novamente.
Na caixa de diálogo "Adicionar disco", escolha um disco novo ou um disco atual.
Para provisionar um novo disco, clique na guia Novo disco.
- No campo Nome do disco, insira um nome exclusivo para o projeto.
- No campo Tamanho, insira um tamanho de disco entre 10 e 65.536 GiB. Por exemplo, 10 GiB.
- Na seção Regra de exclusão, clique em Manter disco ou Excluir disco.
Para escolher um disco existente, clique na guia Disco existente.
- Na lista Disco, selecione um disco.
- Na seção "Regra de exclusão", clique em Manter disco ou Excluir disco.
Clique em Salvar. O disco aparece na lista de discos da VM.
API
Crie um
VirtualMachineDisk
:kubectl --kubeconfig MANAGEMENT_API_SERVER apply -n PROJECT -f - <<EOF apiVersion: virtualmachine.gdc.goog/v1 kind: VirtualMachineDisk metadata: name: NON_BOOT_BLANK_DISK spec: size: NON_BOOT_BLANK_DISK_SIZE EOF
Adicione o
VirtualMachineDisk
aoVirtualMachine
spec.disks
atual:kubectl --kubeconfig MANAGEMENT_API_SERVER edit virtualmachines.virtualmachine.gdc.goog -n PROJECT VM_NAME
Edite o seguinte no seu editor de texto:
... disks: - virtualMachineDiskRef: name: VM_BOOT_DISK_NAME boot: true - virtualMachineDiskRef: name: NON_BOOT_BLANK_DISK autoDelete: false ...
Substitua as variáveis usando as seguintes definições.
Variável Definição MANAGEMENT_API_SERVER
O arquivo kubeconfig do servidor da API Management. PROJECT
O projeto do Google Distributed Cloud isolado (GDC) em que a VM será criada. VM_NAME
O nome da nova VM. VM_BOOT_DISK_NAME
O nome do novo disco de inicialização da VM. NON_BOOT_BLANK_DISK
O nome do seu disco adicional. NON_BOOT_BLANK_DISK_SIZE
O tamanho dos seus discos adicionais, como 20G
.
Formatar e ativar um disco que não é de inicialização
Depois de anexar um disco à VM, execute as etapas necessárias a seguir para torná-lo acessível na VM.
Conectar-se à VM
Formatar o disco
Liste os discos anexados à instância por número de série e localize o disco que você quer formatar e ativar.
ls -l /dev/disk/by-id/
Este exemplo de saída mostra os nomes dos discos como números de série:
total 0 lrwxrwxrwx 1 root root 9 Sep 13 23:51 ata-QEMU_HARDDISK_agentSADisk -> ../../sdc lrwxrwxrwx 1 root root 9 Sep 13 23:51 scsi-0ATA_QEMU_HARDDISK_agentSADisk -> ../../sdc lrwxrwxrwx 1 root root 9 Sep 13 23:51 scsi-0QEMU_QEMU_HARDDISK_vm-disk-boot -> ../../sda lrwxrwxrwx 1 root root 10 Sep 13 23:51 scsi-0QEMU_QEMU_HARDDISK_vm-disk-boot-part1 -> ../../sda1 lrwxrwxrwx 1 root root 11 Sep 13 23:51 scsi-0QEMU_QEMU_HARDDISK_vm-disk-boot-part14 -> ../../sda14 lrwxrwxrwx 1 root root 11 Sep 13 23:51 scsi-0QEMU_QEMU_HARDDISK_vm-disk-boot-part15 -> ../../sda15 lrwxrwxrwx 1 root root 9 Sep 13 23:51 scsi-0QEMU_QEMU_HARDDISK_vm-disk-data -> ../../sdb lrwxrwxrwx 1 root root 9 Sep 13 23:51 scsi-1ATA_QEMU_HARDDISK_agentSADisk -> ../../sdc lrwxrwxrwx 1 root root 9 Sep 13 23:51 scsi-SATA_QEMU_HARDDISK_agentSADisk -> ../../sdc lrwxrwxrwx 1 root root 9 Sep 13 23:51 scsi-SQEMU_QEMU_HARDDISK_vm-disk-boot -> ../../sda lrwxrwxrwx 1 root root 10 Sep 13 23:51 scsi-SQEMU_QEMU_HARDDISK_vm-disk-boot-part1 -> ../../sda1 lrwxrwxrwx 1 root root 11 Sep 13 23:51 scsi-SQEMU_QEMU_HARDDISK_vm-disk-boot-part14 -> ../../sda14 lrwxrwxrwx 1 root root 11 Sep 13 23:51 scsi-SQEMU_QEMU_HARDDISK_vm-disk-boot-part15 -> ../../sda15 lrwxrwxrwx 1 root root 9 Sep 13 23:51 scsi-SQEMU_QEMU_HARDDISK_vm-disk-data -> ../../sdb
As informações que seguem a seta,
->
, em cada linha indicam o nome do dispositivo de disco. Por exemplo, emscsi-SQEMU_QEMU_HARDDISK_vm-disk-data -> ../../sdb
, o número de série éscsi-SQEMU_QEMU_HARDDISK_vm-disk-data
e o nome do dispositivo ésdb
.Identifique o número de série do disco nessa lista.
Comportamento importante de recursos contextuais que pode afetar a lista de números de série:
- Se o valor
virtualMachineDiskRef.name
tiver mais de 20 caracteres, apenas os primeiros 20 caracteres serão usados como o número de série. - Se houver dois discos com os mesmos primeiros 20 caracteres, somente o primeiro terá um número de série.
- Se o valor
Formate o disco:
sudo mkfs.ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0,discard /dev/disk/by-id/DISK_ID
- Substitua
DISK_ID
pelo número de série do disco que você está formatando. - Neste exemplo, especifique
scsi-SQEMU_QEMU_HARDDISK_vm-disk-data
para formatar todo o disco sem uma tabela de partição.
Para aumentar o desempenho do disco, use as opções de formatação recomendadas na
sinalização -E
. Como não é necessário reservar espaço para o volume raiz no disco secundário, especifique -m 0
para usar todo o espaço disponível.
Montar o disco
Crie um diretório que sirva como ponto de ativação para o novo disco. É possível usar qualquer diretório. O exemplo a seguir cria um diretório em
/mnt/disks/
:sudo mkdir -p /mnt/disks/MOUNT_DIR
Substitua
MOUNT_DIR
pelo diretório em que você quer ativar o disco.Ative o disco na instância e habilite a opção de descarte:
sudo mount -o discard,defaults /dev/disk/by-id/DISK_ID /mnt/disks/MOUNT_DIR
Substitua:
DISK_ID
com o número de série do disco a ser ativado.MOUNT_DIR
com o diretório em que você quer ativar o disco.
Opcional: configure as permissões de leitura e gravação no disco. O comando a seguir concede acesso de gravação,
a+w
, ao disco para todos os usuários.sudo chmod a+w /mnt/disks/MOUNT_DIR
Opcional: configure a montagem automática na reinicialização da VM usando o identificador exclusivo universal (UUID) ou o script de inicialização.
Configurar a montagem automática na reinicialização da VM: UUID do disco
Adicione o disco ao arquivo /etc/fstab
para que ele seja montado de novo
automaticamente quando a VM for reiniciada. Em um sistema operacional (SO), o nome do dispositivo
muda a cada reinicialização, mas o UUID do dispositivo sempre aponta para o mesmo volume,
mesmo quando você move discos entre sistemas. Portanto, sempre use o UUID do dispositivo
para configurar a montagem automática na reinicialização da VM.
Crie um backup do seu arquivo
/etc/fstab
atual:sudo cp /etc/fstab /etc/fstab.backup
Liste o UUID do disco:
sudo blkid /dev/DEVICE_NAME
O exemplo de saída mostra o UUID de
accc19c5-d0d6-4157-9672-37d4e1d48eb5
para o disco./dev/sdb: UUID="accc19c5-d0d6-4157-9672-37d4e1d48eb5" TYPE="ext4"
DEVICE_NAME
é o nome do dispositivo do disco que você quer ativar automaticamente. Se você criou uma tabela de partição no disco, especifique a partição que quer ativar como um sufixo do nome do dispositivo. Por exemplo, sesdb
for o nome do dispositivo de disco e você quiser ativar a partição 1,DEVICE_NAME
se tornarásdb1
.Abra o arquivo
/etc/fstab
em um editor de texto e crie uma entrada que inclua o UUID:UUID=UUID_VALUE /mnt/disks/MOUNT_DIR ext4 discard,defaults,MOUNT_OPTION 0 2
Substitua:
UUID_VALUE
com o discoUUID
, listado como a saída do comando Listar o UUID.MOUNT_DIR
com o diretório em que você ativou o disco.MOUNT_OPTION
com o valorMOUNT_OPTION
para seu SO, que especifica o que o SO faz se não for possível ativar o disco durante a inicialização.
Verifique se as entradas
/etc/fstab
estão corretas:cat /etc/fstab
Confira um exemplo de saída:
LABEL=cloudimg-rootfs / ext4 defaults 0 1 LABEL=UEFI /boot/efi vfat umask=0077 0 1 UUID=UUID_VALUE /mnt/disks/MOUNT_DIR ext4 discard,defaults,MOUNT_OPTION 0 2
Se você desanexar esse disco ou criar um snapshot pelo
disco de inicialização para essa VM, edite o arquivo /etc/fstab
e exclua a
entrada desse disco. Mesmo que você tenha
MOUNT_OPTION
definido como nofail
ou nobootwait
, mantenha o arquivo /etc/fstab
sincronizado com os dispositivos anexados à VM. Remova essas entradas antes de criar o snapshot do disco de inicialização ou desanexar o disco.
Configurar a montagem automática na reinicialização da VM: script de inicialização da VM
Também é possível usar um script de inicialização para montar o disco em cada reinicialização adicionando os comandos de Montar o disco a um script de inicialização. Antes de adicionar o script para ativar o disco, formate-o usando os comandos em Formatar o disco.
Crie o secret do script de inicialização.
cat <<EOF >>mount-disk-script #!/bin/bash mkdir -p /mnt/disks/MOUNT_DIR mount -o discard,defaults /dev/disk/by-id/DISK_ID /mnt/disks/MOUNT_DIR EOF
kubectl create secret -n PROJECT generic VM_NAME-mount-script --from-file=script=mount-disk-script
rm mount-disk-script
Adicione o script de inicialização à VM.
kubectl --kubeconfig MANAGEMENT_API_SERVER edit virtualmachines.virtualmachine.gdc.goog -n PROJECT VM_NAME
Edite o
spec.startupScripts
para incluir o nome do secret.apiVersion: virtualmachine.gdc.goog/v1 kind: VirtualMachine metadata: name: VM_NAME namespace: PROJECT spec: … startupScripts: - name: mount-script scriptSecretRef: name: VM_NAME-mount-script
Para mais informações sobre como configurar scripts de inicialização, consulte.