연습 - VM 디스크 크기 조정

완료됨

업로드된 파일 중 일부가 얼마나 크고 업로드 디스크의 공간이 부족한지 과소평가했다고 가정해 보겠습니다. 64GB에서 128GB로 공간을 두 배로 늘리기로 결정했습니다.

여기서는 이전 단위에서 배운 프로세스를 연습합니다.

데이터 디스크 크기 조정

디스크 크기를 조정하려면 디스크 ID 또는 이름이 필요합니다. 이 경우에 이름(uploadDataDisk1)을 이미 알고 있습니다. 그러나 사용자가 디스크를 만들지 않았거나 다른 사람이 디스크를 만든 경우 실행 az disk list 하여 이름을 찾을 수 있습니다.

  1. az disk list 명령을 실행하여 리소스 그룹의 관리 디스크 목록을 인쇄합니다. 동일한 리소스 그룹에 여러 VM이 있는 경우 이 목록에는 다른 디스크가 포함될 수 있습니다.

    az disk list \
      --query '[*].{Name:name,Gb:diskSizeGb,Tier:sku.tier}' \
      --output table
    

    uploadDataDisk1이라는 디스크를 확인합니다.

    Name                                                        Tier
    ----------------------------------------------------------  -------
    support-web-vm01_OsDisk_1_a7c59897dfda42dfab2edf4933e713a6  Premium
    uploadDataDisk1                                             Premium
    
  2. 다음 az vm deallocate 명령을 실행하고 VM의 할당을 중지하고 취소합니다. 이 명령은 VM을 삭제하지 않지만 가상 디스크를 수정할 수 있는 상태로 만듭니다.

    az vm deallocate --name support-web-vm01
    
  3. az disk update 명령을 실행하여 디스크 크기를 128GB로 조정합니다.

    az disk update --name uploadDataDisk1 --size-gb 128
    
  4. az vm start 명령을 실행하여 VM을 다시 시작합니다.

    az vm start --name support-web-vm01
    

    하지만 아직 끝나지 않았습니다. VM의 운영 체제는 아직 추가 공간을 사용할 수 없습니다. 이 상황은 다음 섹션에서 처리합니다.

디스크 파티션 확장

마지막 단계는 사용 가능한 공간에 대해 OS에 알려주는 것입니다. 앞에서 수행한 분할 및 형식 단계와 마찬가지로 이 프로세스는 실제 온-프레미스 디스크를 확장하기 위해 수행하는 프로세스와 동일합니다.

  1. VM에 대해 고정 공용 IP 주소를 예약할 수 있지만 VM이 할당 취소되고 다시 시작될 때 기본적으로 VM은 새 공용 IP 주소를 받습니다. 다음 az vm show 명령을 실행하여 VM의 새 공용 IP 주소로 Bash 변수를 업데이트합니다.

    ipaddress=$(az vm show --name support-web-vm01 -d --query [publicIps] -o tsv)
    
  2. 이전에 수행한 대로 SSH를 통해 VM에서 lsblk를 실행하여 현재 상태를 이해합니다.

    ssh azureuser@$ipaddress lsblk
    

    디스크 sdc/sdc1에 크기가 여전히 64GB임을 알 수 있습니다.

    NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sdb       8:16   0    7G  0 disk 
    └─sdb1    8:17   0    7G  0 part /mnt
    sdc       8:32   0  128G  0 disk 
    └─sdc1    8:33   0   64G  0 part /uploads
    sda       8:0    0   30G  0 disk 
    ├─sda14   8:14   0    4M  0 part 
    ├─sda15   8:15   0  106M  0 part /boot/efi
    └─sda1    8:1    0 29.9G  0 part /
    
  3. 디스크를 초기화하기 위해 이전에 수행한 작업과 마찬가지로 다음 az vm extension set 명령을 실행하여 VM의 OS에 새로 사용할 수 있는 공간에 대해 알려줄 수 있도록 미리 만들어진 Bash 스크립트를 실행합니다.

    az vm extension set \
      --vm-name support-web-vm01 \
      --name customScript \
      --publisher Microsoft.Azure.Extensions \
      --settings '{"fileUris":["https://raw.githubusercontent.com/MicrosoftDocs/mslearn-add-and-size-disks-in-azure-virtual-machines/master/resize-data-disk.sh"]}' \
      --protected-settings '{"commandToExecute": "./resize-data-disk.sh"}'
    

    명령을 실행하는 동안 원하는 경우 별도의 브라우저 탭에서 Bash 스크립트를 검사할 수 있습니다.

    요약하자면 스크립트는 다음을 수행합니다.

    • /dev/sdc1 디스크를 분리합니다.
    • 파티션 1의 크기를 128GB로 조정합니다.
    • 파티션 일관성을 확인합니다.
    • 파일 시스템의 크기를 조정합니다.
    • 마지막으로, /dev/sdc1 드라이브를 /uploads 탑재 지점에 다시 탑재합니다.
  4. 구성을 확인하려면 SSH를 통해 VM에서 lsblk를 두 번째로 실행합니다.

    ssh azureuser@$ipaddress lsblk
    

    이번에는 디스크의 증가된 크기를 수용하기 위해 디스크 sdc/sdc1이 확장되었습니다.

    NAME    MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
    sdb       8:16   0     7G  0 disk 
    └─sdb1    8:17   0     7G  0 part /mnt
    sdc       8:32   0   128G  0 disk 
    └─sdc1    8:33   0 119.2G  0 part /uploads
    sda       8:0    0    30G  0 disk 
    ├─sda14   8:14   0     4M  0 part 
    ├─sda15   8:15   0   106M  0 part /boot/efi
    └─sda1    8:1    0  29.9G  0 part /
    
  5. 마지막 확인 단계에서는 OS가 올바르게 볼 수 있음을 증명하기 위해 SSH를 통해 VM에서 운영 체제의 df 유틸리티를 실행합니다.

    ssh azureuser@$ipaddress df -h
    

    드라이브의 크기가 128GB로 표시됩니다.

    Filesystem      Size  Used Avail Use% Mounted on
    udev            1.7G     0  1.7G   0% /dev
    tmpfs           345M  9.3M  335M   3% /run
    /dev/sda1        29G  1.9G   28G   7% /
    tmpfs           1.7G     0  1.7G   0% /dev/shm
    tmpfs           5.0M     0  5.0M   0% /run/lock
    tmpfs           1.7G     0  1.7G   0% /sys/fs/cgroup
    /dev/sda15      105M  3.2M  102M   3% /boot/efi
    /dev/sdb1       6.8G   16M  6.4G   1% /mnt
    /dev/sdc1       118G   60M  112G   1% /uploads
    tmpfs           345M     0  345M   0% /run/user/1000