Modificar o tamanho de um Persistent Disk

Se a instância de máquina virtual (VM) do Compute Engine precisar de mais espaço de armazenamento ou limites de desempenho maiores, aumente o tamanho do Persistent Disk. É possível aumentar o tamanho do disco a qualquer momento, esteja ele conectado ou não a uma VM em execução.

Nesta página, discutimos como mudar o tamanho de um Persistent Disk. Para aumentar o tamanho de um volume do Google Cloud Hyperdisk, consulte Modificar o tamanho e o desempenho provisionado de um volume do Hyperdisk.

Ao criar uma imagem personalizada do Linux, imagem personalizada do Windows ou uma imagem do Fedora CoreOS, você precisa aumentar manualmente o tamanho dos discos de inicialização e de não inicialização. Se você estiver usando uma imagem pública (exceto imagens do Fedora CoreOS), o Compute Engine redimensionará automaticamente os discos de inicialização.

Aumentar o tamanho de um disco não exclui ou modifica dados de disco. No entanto, como prática recomendada, antes de fazer alterações no sistema de arquivos ou nas partições, sempre faça backup do disco criando um snapshot.

O Compute Engine gerencia o hardware por trás dos discos permanentes. Assim, é possível adicionar e redimensionar os discos sem lidar com divisão ou redundância.

Antes de começar

  • Configure a autenticação, caso ainda não tenha feito isso. Com isso, você confirma sua identidade para acesso a serviços e APIs do Google Cloud . Para executar códigos ou amostras de um ambiente de desenvolvimento local, autentique-se no Compute Engine selecionando uma das seguintes opções:

    Selecione a guia para como planeja usar as amostras nesta página:

    Console

    Quando você usa o console Google Cloud para acessar serviços Google Cloud e APIs, não é necessário configurar a autenticação.

    gcloud

    1. Instale a CLI do Google Cloud. Após a instalação, inicialize a Google Cloud CLI executando o seguinte comando:

      gcloud init

      Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.

  • Defina uma região e uma zona padrão.
  • Terraform

    Para usar os exemplos do Terraform nesta página em um ambiente de desenvolvimento local, instale e inicialize a CLI gcloud e configure o Application Default Credentials com suas credenciais de usuário.

    1. Instale a CLI do Google Cloud.

    2. Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.

    3. Se você estiver usando um shell local, crie credenciais de autenticação local para sua conta de usuário:

      gcloud auth application-default login

      Não é necessário fazer isso se você estiver usando o Cloud Shell.

      Se um erro de autenticação for retornado e você estiver usando um provedor de identidade (IdP) externo, confirme se você fez login na CLI gcloud com sua identidade federada.

    Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

    REST

    Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para CLI gcloud.

      Instale a CLI do Google Cloud.

      Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.

    Saiba mais em Autenticar para usar REST na documentação de autenticação do Google Cloud .

Papéis e permissões necessárias

Para receber a permissão necessária para redimensionar um Persistent Disk, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto:

Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Esse papel predefinido contém a permissão compute.disks.update, que é necessária para redimensionar um Persistent Disk.

Também é possível receber essa permissão com papéis personalizados ou outros papéis predefinidos.

Diminuir o tamanho de um disco

Não é possível diminuir o tamanho de um Persistent Disk. Substitua o disco por um novo e menor. Para isso, crie um disco em branco com um tamanho menor e copie o conteúdo do disco original para o novo. Em seguida, use o novo disco em vez do original.

Para substituir um disco por um menor, siga estas etapas:

  1. Crie um disco permanente em branco e especifique o tamanho desejado. Verifique se o novo disco é grande o suficiente para conter os dados do disco de origem.
  2. Anexe os dois discos à mesma instância. Para instruções, consulte Anexar um disco que não é de inicialização a uma VM.
  3. Formate e ative o novo disco. Consulte as instruções para instâncias do Linux e do Windows.
  4. Copie os dados do disco original para o novo usando utilitários disponíveis para seu sistema operacional (SO). Por exemplo, para Linux, use rsync ou dd. Para instâncias do Windows, use robocopy.
  5. Verifique se o novo disco tem todos os dados e está funcionando como esperado.
  6. Atualize o aplicativo ou SO para usar o novo disco.
  7. Depois de confirmar que a migração foi bem-sucedida, é possível desanexar e excluir o disco original maior.
Você vai receber cobranças pelo disco original até excluí-lo.

Limites de tamanho para volumes do Persistent Disk

O tamanho especificado para um volume Persistent Disk precisa estar dentro dos intervalos listados na tabela a seguir.

Tipo de disco Tamanho mínimo Tamanho máximo Tamanho padrão
Disco permanente equilibrado Por zona: 10 GiB
Regional: 10 GiB
64 TiB 100 GiB
Persistent Disk (SSD) de desempenho Por zona: 10 GiB
Regional: 10 GiB
64 TiB 100 GiB
Disco permanente padrão Por zona: 10 GiB
Regional: 200 GiB
64 TiB 500 GiB
Disco permanente extremo 500 GiB 64 TiB 1 TiB

Aumentar o tamanho de um disco permanente

Para aumentar o tamanho de um disco de inicialização ou não inicialização, use o seguinte procedimento:

Console

  1. No console do Google Cloud , acesse a página Discos.

    Acessar "Discos"

  2. Na lista de discos do projeto, clique no nome do disco que você quer redimensionar.

  3. Na página de Detalhes do disco, clique em Editar. Talvez seja necessário clicar no menu Mais ações e em Editar.

  4. No campo Tamanho, insira o novo tamanho do disco. Os discos com tabelas particionadas de MBR só podem ser redimensionados até 2 TB.

  5. Clique em Salvar para aplicar as mudanças ao disco.

O novo tamanho do disco é exibido na lista de discos.

gcloud

Use o comando gcloud compute disks resize e especifique a flag --size com o novo tamanho do disco, em gibibytes (GiB).

gcloud compute disks resize DISK_NAME \
    --size DISK_SIZE \
    --zone=ZONE

Substitua:

  • DISK_NAME: o nome do disco que você está redimensionando.
  • DISK_SIZE: o novo tamanho do disco em gibibytes (GiB). Discos com tabelas de partição MBR podem ser redimensionados apenas até 2 TB.
  • ZONE: para Persistent Disk zonais, especifique a zona em que o disco está localizado.

    Para discos permanentes regionais, use a flag --region=REGION e especifique a região em que o disco está localizado.

Terraform

Escolha uma das opções a seguir para redimensionar discos zonais ou discos permanentes regionais:

Disco zonal

Para mudar o tamanho de um Persistent Disk, use o recurso google_compute_disk e o parâmetro size.

# Using pd-standard because it's the default for Compute Engine

resource "google_compute_disk" "default" {
  name = "disk-data"
  type = "pd-standard"
  zone = "us-west1-a"
  size = "5"
}

Se você incluir o parâmetro size com o image ou snapshot, o valor size precisa ser igual ou maior que o tamanho da imagem ou do snapshot.

Se você omitir os parâmetros image e snapshot, poderá definir o parâmetro size como menor que o tamanho do disco atual. Se você fizer isso, o Terraform vai destruir o disco e criar um novo Persistent Disk vazio.

Disco permanente regional

Para mudar o tamanho de um disco permanente regional, use o recurso google_compute_region_disk e o parâmetro size.

resource "google_compute_region_disk" "regiondisk" {
  name                      = "region-disk-name"
  snapshot                  = google_compute_snapshot.snapdisk.id
  type                      = "pd-ssd"
  region                    = "us-central1"
  physical_block_size_bytes = 4096
  size                      = 11

  replica_zones = ["us-central1-a", "us-central1-f"]
}

Se você incluir o parâmetro size com o image ou snapshot, o valor size precisa ser igual ou maior que o tamanho da imagem ou do snapshot.

Se você omitir os parâmetros image e snapshot, poderá definir o parâmetro size como menor que o tamanho do disco atual. Se você fizer isso, o Terraform vai destruir o disco e criar um novo RegionalPersistent Disk vazio.

Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.

REST

Para redimensionar um Persistent Disk, crie uma solicitação POST para o método compute.disks.resize.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME/resize
{
  "sizeGb": "DISK_SIZE"
}

Para redimensionar um disco permanente regional, crie uma solicitação POST para o método compute.regionDisks.resize.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/disks/DISK_NAME/resize
{
   "sizeGb": "DISK_SIZE"
}

Substitua:

  • PROJECT_ID: o ID do projeto.
  • ZONE: para Persistent Disk zonal, a zona em que o disco está localizado.
  • REGION: para Persistent Disk regional, a região em que o disco está localizado.
  • DISK_NAME: o nome do disco a ser redimensionado.
  • DISK_SIZE: o novo tamanho do disco em gibibytes (GiB). Discos com tabelas de partição MBR podem ser redimensionados apenas até 2 TB.

Redimensionar o sistema de arquivos e as partições

Depois de aumentar o tamanho de um disco, talvez seja necessário redimensionar o sistema de arquivos e as partições dele. Confira mais informações sobre discos de inicialização e não inicialização:

  • Discos de inicialização: se você estiver usando uma imagem personalizada do Linux, imagem personalizada do Windows ou uma imagem do Fedora CoreOS, será preciso redimensionar manualmente a partição raiz e o sistema de arquivos. Para instâncias com imagens públicas (exceto imagens do Fedora CoreOS), o Compute Engine redimensiona automaticamente a partição raiz e o sistema de arquivos depois que você aumenta o tamanho do disco de inicialização, sem precisar reiniciar a instância.

  • Discos que não são de inicialização: depois de aumentar o tamanho do disco, estenda o sistema de arquivos no disco para usar o espaço adicionado.

Nos exemplos a seguir, mostramos como redimensionar manualmente a partição raiz e o sistema de arquivos de um disco de inicialização e como redimensionar manualmente o sistema de arquivos de um disco de dados que não seja de inicialização sem tabela de partição. Nos dois exemplos, presumimos que os discos conectados foram formatados e montados anteriormente.

Instâncias do Linux

  1. No console do Google Cloud , acesse a página Instâncias de VM.

    Acessar instâncias de VM

  2. Encontre a instância a que o disco redimensionado está anexado. Clique em SSH. O navegador abre uma conexão de terminal com a instância.

  3. Use os comandos df e lsblk para listar o tamanho do sistema de arquivos e encontrar os nomes dos dispositivos para seus discos.

    $ sudo df -Th
    
    Filesystem      Type      Size  Used Avail Use% Mounted on
    udev            devtmpfs  3.9G     0  3.9G   0% /dev
    /dev/nvme0n1p1  ext4      9.7G  2.0G  7.2G  22% /
    /dev/nvme0n1p15 vfat      124M   12M  113M  10% /boot/efi
    /dev/nvme0n2    ext4       98G   24K   98G   1% /mnt/disks/data
    
    
    $ sudo lsblk
    
    NAME        MAJ:MIN   RM  SIZE RO TYPE MOUNTPOINT
    nvme0n1      259:0    0   20G  0 disk
    ├─nvme0n1p1  259:5    0  9.9G  0 part /
    ├─nvme0n1p14 259:6    0    3M  0 part
    └─nvme0n1p15 259:7    0  124M  0 part /boot/efi
    nvme0n2      259:4    0  100G  0 disk /mnt/disks/data
    
    

    Este exemplo inclui os seguintes discos:

    • Disco de inicialização: a partição /dev/nvme0n1p1 está em um disco de inicialização que foi redimensionado para 20 GB. A tabela de partição e o sistema de arquivos fornecem apenas 9,9 GB para o sistema operacional.
    • Disco de dados não inicializável: o disco de dados /dev/nvme0n2 não inicializável não tem tabela de partição, mas o sistema de arquivos nesse disco fornece 100 GB para o sistema operacional. O diretório de ativação para este disco é /mnt/disks/data.

    Anote a coluna Tipo na resposta ao comando df, que indica se o disco usa um sistema de arquivos ext4 ou xfs.

  4. Verifique o tipo de partição:

    sudo parted -l
    

    Na primeira vez que você executar esse comando após redimensionar um disco, uma mensagem semelhante a esta será exibida:

    Warning: Not all of the space available to /dev/nvme0n1 appears to be
    used, you can fix the GPT to use all of the space (an extra 20971520
    blocks) or continue with the current setting?
    Fix/Ignore?
    

    Se você digitar Fix, o SO vai particionar o disco automaticamente para disponibilizar o espaço extra. Pule para a última etapa se você não tiver mais discos para modificar.

  5. Se você optar por não usar a opção de correção automática ou ela não estiver disponível, veja as informações do disco que você quer reparticionar:

    sudo parted -l /dev/DEVICE_NAME
    

    Procure o campo: Tabela particionado. Se o valor for msdos, o disco terá um tipo de partição MBR. Isso significa que o tamanho máximo desse disco seria de 2 TB.

  6. Para um disco de inicialização, redimensione a partição raiz e o sistema de arquivos no disco. Neste exemplo, supomos que a imagem da VM não aceita particionamento raiz automático e o redimensionamento do sistema de arquivos.

    1. Redimensione a partição raiz usando parted. Por exemplo, os comandos a seguir expandem a partição 1 do dispositivo para o tamanho máximo possível:

      1. Abra o parted no dispositivo:

        sudo parted /dev/DEVICE_NAME
        

        Substitua DEVICE_NAME pelo nome do dispositivo do disco de inicialização, por exemplo, nvme0n1.

      2. No prompt , insira:

        (parted) resizepart
        
      3. No prompt Partition number?, insira:

        1
        
      4. No prompt Warning: Partition /dev/DEVICE_NAMEp1 is being used. Are you sure you want to continue?, insira:

        Yes
        
      5. No prompt End?, insira:

        100%
        
      6. No prompt (parted), insira:

        (parted) quit
        
    2. Visualize a nova tabela de partições usando parted -l.

      sudo parted -l /dev/DEVICE_NAME
      
      Model: nvme_card-pd (nvme)
      Disk /dev/DEVICE_NAME: 21.5GB
      Sector size (logical/physical): 512B/512B
      Partition Table: gpt
      Disk Flags:
      
      Number  Start   End     Size    File system  Name  Flags
      14      1049kB  4194kB  3146kB                     bios_grub
      15      4194kB  134MB   130MB   fat16              boot, esp
      1       134MB   21.5GB  21.3GB  ext4
      
    3. Ampliar o sistema de arquivos:

      • Se você estiver usando ext4, use o comando resize2fs:

        sudo resize2fs /dev/PARTITION_NAME
        

        Substitua PARTITION_NAME pelo nome da partição do disco de inicialização, por exemplo, nvme0n1p1.

      • Se você estiver usando xfs, use o comando xfs_growfs:

        sudo xfs_growfs -d /
        
      • Se você estiver usando btrfs, use o comando btrfs:

        sudo btrfs filesystem resize max /
        
  7. Para um disco de dados que não seja de inicialização, redimensione o sistema de arquivos no disco.

    • Se você estiver usando ext4, use o comando resize2fs para estender o sistema de arquivos:

      sudo resize2fs /dev/PARTITION_NAME
      

      Substitua PARTITION_NAME pelo nome da partição do disco de dados. Neste exemplo, o nome da partição é /dev/nvme0n2p1.

    • Se você estiver usando xfs, utilize o comando xfs_growfs para estender o sistema de arquivos:

      sudo xfs_growfs MOUNT_DIR
      
    • Se você estiver usando btrfs, utilize o comando btrfs para estender o sistema de arquivos:

      sudo btrfs filesystem resize max MOUNT_DIR
      

      Substitua MOUNT_DIR pelo ponto de montagem do dispositivo. É possível encontrar o ponto de montagem listado na coluna MOUNTPOINT na saída do comando lsblk.

  8. Use o comando df para verificar se o sistema de arquivos foi estendido. Por exemplo:

    df -h /dev/PARTITION_NAME
    
    Filesystem       Size  Used  Avail    Use%     Mounted on
    /dev/nvme0n2p1   118G  70M   118G     1%     /mnt/disks/data
    

VM do Windows

Use a ferramenta Gerenciamento de disco do Windows para redimensionar as partições de uma instância nesse SO.

  1. No console do Google Cloud , acesse a página Instâncias de VM.

    Acessar instâncias de VM

  2. Encontre a instância que tem o disco redimensionado. Clique no botão RDP da instância. O navegador abre uma conexão RDP com a instância.

  3. Clique com o botão direito do mouse no botão Iniciar do Windows e selecione Gerenciamento de disco para abrir a ferramenta Gerenciamento de disco.

    Como selecionar a ferramenta Gerenciamento de Disco no menu de contexto ao clicar com o botão direito do mouse no Iniciar do Windows.

  4. Mostre o tipo de partição dos discos executando o seguinte comando no PowerShell:

    Get-Disk
    

    Na coluna Estilo de partição, se o valor for MBR, o disco terá um tipo de partição MBR. Isso significa que o tamanho máximo desse disco seria de 2 TB.

  5. Atualize a ferramenta Gerenciamento de disco para que ela reconheça o espaço extra no disco. Na parte de cima da janela Gerenciamento de disco, clique em Ação e selecione Atualizar.

    Como clicar no menu Ação e selecionar Atualizar na ferramenta Gerenciamento de Disco para atualizar as informações do disco.

  6. No disco que você redimensionou, clique com o botão direito do mouse na partição formatada e selecione Estender Volume.

    Como clicar com o botão direito na parte formatada do disco e selecionar a opção Estender volume.

  7. Siga as instruções do Assistente para Extensão de Volumes para estender a partição atual e incluir o espaço extra no disco. Se a partição atual estiver formatada em NTFS, o tamanho máximo da partição será limitado pelas configurações de tamanho do cluster.

  8. Depois de concluir o Assistente de extensão de volume e a formatação do volume, verifique a coluna Status na lista de discos anexados para confirmar se o novo disco está com o status Healthy.

    Ao ver a lista de discos reconhecidos pelo Windows, verifique se a instância está on-line e com status íntegro.

Não é preciso reiniciar a instância depois de concluir esse processo. Já é possível usar o espaço em disco adicionado.

A seguir