Redimensionar um volume do Amazon EBS usado por um ambiente - AWS Cloud9

AWS Cloud9 não está mais disponível para novos clientes. Os clientes atuais do AWS Cloud9 podem continuar usando o serviço normalmente. Saiba mais

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Redimensionar um volume do Amazon EBS usado por um ambiente

Esta etapa mostra como você pode redimensionar um volume do Amazon EBS.

  1. Abra o ambiente associado à instância do Amazon EC2 para o volume do Amazon EBS que você deseja redimensionar.

  2. No AWS Cloud9 IDE do ambiente, crie um arquivo com o conteúdo a seguir e salve o arquivo com a extensão .sh (por exemplo,resize.sh).

    Observação

    Esse script funciona para volumes do Amazon EBS conectados a instâncias do EC2 que são executadas, AL2023 Amazon Linux 2, Amazon Linux ou Ubuntu Server e estão configurados para uso. IMDSv2

    O script também redimensiona os volumes do Amazon EBS expostos como dispositivos de NVMe bloco em instâncias Nitro baseadas. Para obter uma lista de instâncias baseadas no sistema Nitro, consulte Instâncias baseadas em Nitro no Manual do usuário do Amazon EC2.

    #!/bin/bash # Specify the desired volume size in GiB as a command line argument. If not specified, default to 20 GiB. SIZE=${1:-20} # Get the ID of the environment host Amazon EC2 instance. TOKEN=$(curl -s -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 60") INSTANCEID=$(curl -s -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/meta-data/instance-id 2> /dev/null) REGION=$(curl -s -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/meta-data/placement/region 2> /dev/null) # Get the ID of the Amazon EBS volume associated with the instance. VOLUMEID=$(aws ec2 describe-instances \ --instance-id $INSTANCEID \ --query "Reservations[0].Instances[0].BlockDeviceMappings[0].Ebs.VolumeId" \ --output text \ --region $REGION) # Resize the EBS volume. aws ec2 modify-volume --volume-id $VOLUMEID --size $SIZE # Wait for the resize to finish. while [ \ "$(aws ec2 describe-volumes-modifications \ --volume-id $VOLUMEID \ --filters Name=modification-state,Values="optimizing","completed" \ --query "length(VolumesModifications)"\ --output text)" != "1" ]; do sleep 1 done # Check if we're on an NVMe filesystem if [[ -e "/dev/xvda" && $(readlink -f /dev/xvda) = "/dev/xvda" ]] then # Rewrite the partition table so that the partition takes up all the space that it can. sudo growpart /dev/xvda 1 # Expand the size of the file system. # Check if we're on AL2 or AL2023 STR=$(cat /etc/os-release) SUBAL2="VERSION_ID=\"2\"" SUBAL2023="VERSION_ID=\"2023\"" if [[ "$STR" == *"$SUBAL2"* || "$STR" == *"$SUBAL2023"* ]] then sudo xfs_growfs -d / else sudo resize2fs /dev/xvda1 fi else # Rewrite the partition table so that the partition takes up all the space that it can. sudo growpart /dev/nvme0n1 1 # Expand the size of the file system. # Check if we're on AL2 or AL2023 STR=$(cat /etc/os-release) SUBAL2="VERSION_ID=\"2\"" SUBAL2023="VERSION_ID=\"2023\"" if [[ "$STR" == *"$SUBAL2"* || "$STR" == *"$SUBAL2023"* ]] then sudo xfs_growfs -d / else sudo resize2fs /dev/nvme0n1p1 fi fi
  3. Em uma sessão de terminal no IDE, mude para o diretório que contém o arquivo resize.sh. Depois, execute o comando a seguir, substituindo 20 pelo tamanho desejado em GiB para o qual redimensionar o volume do Amazon EBS:

    • bash resize.sh 20
    • chmod +x resize.sh ./resize.sh 20