연습 - VM에 데이터 디스크 추가

완료됨

법률 회사가 사례 부하를 확장하고 있으며 클라이언트, 기타 법률 회사 및 법 집행 사무소와 같은 다양한 출처의 중요한 문서를 저장하는 새로운 Linux 웹 서버를 만드는 임무를 맡고 있습니다. 웹 서버를 사용하면 문서를 업로드하고 디스크에 저장할 수 있습니다.

이 연습에서는 Linux를 예제로 사용하지만 VM을 만들고 디스크를 추가하는 기본적인 프로세스는 Windows도 동일합니다. 주요 차이점은 디스크 분할 및 포맷에 있습니다. Windows에서 원격 데스크톱을 통해 VM에 연결하고 기본 제공 디스크 관리 도구를 사용하거나 여기서 사용할 Bash 스크립트와 유사한 PowerShell 스크립트를 배포합니다.

목표는 Linux VM을 만들고 uploadDataDisk1이라는 새 VHD(가상 하드 디스크)를 연결하여 디렉터리를 저장하는 /uploads 것입니다.

Azure CLI 기본값 설정

Azure CLI를 사용하면 기본값을 설정할 수 있으므로 명령을 실행할 때마다 반복하지 않아도 됩니다.

기본 Azure 위치 또는 지역을 지정합니다. 이 위치는 Azure VM이 배치되는 위치입니다.

이상적으로 이 위치는 클라이언트와 가깝습니다. 이 경우에 Azure 샌드박스에서 사용 가능한 위치에서 가장 가까운 지역을 선택합니다.

무료 샌드박스를 사용하면 Azure 글로벌 지역의 일부 하위 지역에 리소스를 만들 수 있습니다. 리소스를 만들 때 다음 목록에서 지역을 선택합니다.

  • westus2
  • southcentralus
  • centralus
  • eastus
  • westeurope
  • southeastasia
  • japaneast
  • brazilsouth
  • australiasoutheast
  • centralindia
  1. az configure를 실행하여 사용할 기본 위치를 설정합니다. eastus를 이전 단계에서 선택한 위치로 바꿉다.

    az configure --defaults location=eastus
    

    복사 단추를 사용하여 클립보드에 명령을 복사할 수 있습니다. 붙여넣으려면 Cloud Shell 터미널에서 새 줄을 마우스 오른쪽 단추로 클릭하고 붙여넣기를 선택하거나 Shift+Insert 바로 가기 키(macOS의 경우 ⌘+V)를 사용합니다.

  2. 기본 리소스 그룹 이름을 Azure 샌드박스를 통해 만든 미리 구성된 리소스 그룹으로 설정합니다. [샌드박스 리소스 그룹]

    az configure --defaults group="<rgn>[sandbox Resource Group]</rgn>"
    

Linux VM 만들기

여기서는 웹 서버를 호스트할 Linux VM을 만듭니다.

  1. az vm create 명령을 실행하여 Ubuntu Linux VM을 만듭니다.

    az vm create \
      --name support-web-vm01 \
      --image Canonical:UbuntuServer:16.04-LTS:latest \
      --size Standard_DS1_v2 \
      --admin-username azureuser \
      --generate-ssh-keys
    
    • VM의 이름은 support-web-vm01입니다.
    • 크기가 Standard_DS1_v2입니다.
    • 관리 사용자 이름은 azureuser입니다. 실제로 이 이름은 원하는 대로 지정할 수 있습니다.
    • --generate-ssh-keys 인수를 사용하면 SSH 키 쌍을 생성하여 SSH를 통해 VM에 연결할 수 있습니다.

    VM을 배포하는 데 몇 분이 걸립니다. VM이 준비되면 JSON 형식의 관련 정보가 표시됩니다. 예를 들면 다음과 같습니다.

    {
      "fqdns": "",
      "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/680469d8-edB7-42ec-b118-cd80d51741e7/providers/Microsoft.Compute/virtualMachines/support-web-vm01",
      "location": "eastus",
      "macAddress": "00-0D-3A-10-63-0A",
      "powerState": "VM running",
      "privateIpAddress": "10.0.0.4",
      "publicIpAddress": "104.211.38.211",
      "resourceGroup": "680469d8-edB7-42ec-b118-cd80d51741e7",
      "zones": ""
    }
    

    참고

    이 단원에서는 이 VM을 사용하여 디스크를 관리하는 방법을 알아봅니다. 실제로 웹 서버 및 기타 소프트웨어를 설치한 다음, az vm open-port를 실행하여 외부에서 필요한 포트를 사용할 수 있습니다.

VM에 빈 데이터 디스크 추가

여기서는 빈 데이터 디스크를 만들고 VM에 연결합니다. 처음에는 데이터 디스크의 크기가 64GB입니다. 나중에 VM의 디렉터리에 이 디스크를 /uploads 탑재합니다.

학습 목적인 경우 VM 및 데이터 디스크를 별도의 단계로 만듭니다. 실제로 az vm create 명령에 대한 --data-disk-sizes-gb 인수를 지정하여 VM을 만들 때 데이터 디스크를 추가할 수 있습니다.

  1. 다음 az vm disk attach 명령을 실행하여 비어 있는 새 디스크를 VM에 추가합니다.

    az vm disk attach \
      --vm-name support-web-vm01 \
      --name uploadDataDisk1 \
      --size-gb 64 \
      --sku Premium_LRS \
      --new
    

    이 명령은 다음을 수행합니다.

    • 디스크의 이름을 uploadDataDisk1로 지정합니다.
    • 해당 크기를 64GB로 설정합니다.
    • 로컬 중복성이 있는 Premium Storage의 사용을 지정합니다.

디스크를 사용하려면 디스크를 분할하고 포맷해야 합니다. 다음으로 수행해 보겠습니다.

데이터 디스크를 초기화하고 포맷합니다.

빈 데이터 드라이브는 초기화하고 포맷해야 합니다. 작업을 수행하는 프로세스는 실제 디스크와 동일합니다.

일회성 작업의 경우 수동으로 SSH를 통해 VM에 연결하고 필요한 명령을 실행할 수 있습니다. 그러나 프로세스를 더 반복하고 오류가 발생하기 쉽도록 하려면 Bash 스크립트 또는 PowerShell 스크립트(사용 가능한 경우)에서 명령을 지정할 수 있습니다.

프로세스를 자동화하는 스크립트를 사용하면 프로세스를 수행하는 방법에 대한 설명서처럼 스크립트에서 제공하는 추가 혜택이 있습니다. 다른 사용자는 시스템을 구성하는 방법을 이해하기 위해 스크립트를 읽을 수 있습니다. 프로세스를 변경해야 하는 경우 프로덕션에 변경 내용을 배포하기 전에 스크립트를 수정하고 임시 스크래치 VM에서 테스트하기만 하면 됩니다.

이 단원의 프로세스를 자동화하려면 사용자 지정 스크립트 확장을 사용합니다. 사용자 지정 스크립트 확장은 Azure VM에서 간편하게 스크립트를 다운로드하고 실행할 수 있는 방법입니다. VM이 가동 중인 상태에서 시스템을 구성할 수 있는 여러 방법 중 하나일 뿐입니다.

Azure 스토리지 또는 GitHub 같은 공용 위치에 스크립트를 저장할 수 있습니다. 스크립트를 수동으로 실행할 수도 있고 자동화된 배포의 일부로 실행할 수도 있습니다. 여기서는 Azure CLI 명령을 실행하여 GitHub에서 미리 작성된 Bash 스크립트를 다운로드하고 VM에서 실행합니다.

학습을 위해 VM에서 몇 가지 명령을 실행하여 VM이 예상대로 구성되었는지 확인해 보겠습니다.

  1. az vm show를 실행하여 VM의 공용 IP 주소를 가져오고 이 IP 주소를 Bash 변수로 저장합니다.

    ipaddress=$(az vm show \
      --name support-web-vm01 \
      --show-details \
      --query [publicIps] \
      --output tsv)
    
  2. 다음 ssh 명령을 실행하여 이전 단계에서 만든 변수 데이터를 사용하여 ipaddress SSH 연결을 통해 VM에서 명령을 실행 lsblk 합니다. azureuser는 VM을 만들 때 사용한 관리 사용자 이름입니다. 다른 이름을 선택한 경우 대신 사용합니다. 메시지가 표시되면 yes를 입력합니다.

    ssh azureuser@$ipaddress lsblk
    

    이 명령 출력은 다음과 같아야 합니다.

    NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sdb       8:16   0    7G  0 disk 
    └─sdb1    8:17   0    7G  0 part /mnt
    sr0      11:0    1  628K  0 rom  
    sdc       8:32   0   64G  0 disk 
    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 /
    

    만든 64GB 드라이브 sdc는 탑재되지 않습니다. 드라이브는 아직 초기화되지 않았기 때문에 이러한 방식으로 나열됩니다.

  3. 다음 az vm extension set 명령을 실행하여 VM에서 미리 작성된 Bash 스크립트를 실행합니다.

    Warning

    스크립트는 /etc/fstab를 수정합니다. /etc/fstab 파일을 부적절하게 수정하면 부팅할 수 없는 시스템이 발생할 수 있습니다. 프로덕션에 배포하기 전에 임시 스크래치 시스템에서 구성 변경 내용을 항상 테스트합니다. 이 파일을 올바르게 편집하는 방법에 대해서는 배포 설명서를 참조하세요. 프로덕션에서 필요한 경우 구성을 복원할 수 있도록 이 파일의 백업을 만드는 것이 좋습니다.

    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/add-data-disk.sh"]}' \
      --protected-settings '{"commandToExecute": "./add-data-disk.sh"}'
    

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

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

    • /dev/sdc 드라이브를 분할합니다.
    • 드라이브에 ext4 파일 시스템을 만듭니다.
    • 탑재 지점으로 사용할 /uploads 디렉터리를 만듭니다.
    • 디스크를 탑재 지점에 연결합니다.
    • /etc/fstab를 업데이트하면 시스템이 다시 부팅된 후에 드라이브가 자동으로 탑재됩니다.
  4. 구성을 확인하려면 이전에 SSH 연결을 통해 VM에서 lsblk 명령을 수행한 것과 동일한 ssh 명령을 실행합니다.

    ssh azureuser@$ipaddress lsblk
    

    sdc/sdc1이 예상대로 /uploads 디렉터리에 분할되고 탑재되었다고 표시됩니다.

    NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sdb       8:16   0    7G  0 disk 
    └─sdb1    8:17   0    7G  0 part /mnt
    sr0      11:0    1  628K  0 rom  
    sdc       8:32   0   64G  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 /
    

일부 Linux 커널은 디스크에서 사용되지 않은 블록을 버릴 수 있도록 TRIM을 지원합니다. 이 기능은 Azure 디스크에서 사용할 수 있으며 큰 파일을 만든 다음, 삭제하면 비용을 절약할 수 있습니다. Azure 설명서에서 이 기능을 설정하는 방법을 확인하세요.

요약

여기에서 데이터 디스크를 만들고 VM에 연결했습니다. 사용자 지정 스크립트 확장을 사용하여 VM에서 미리 작성된 Bash 스크립트를 실행하여 프로세스를 더 반복할 수 있도록 했습니다. Bash 스크립트는 웹 서버가 디스크에 작성할 수 있도록 해당 디스크를 분할하고, 포맷하고, 탑재합니다.

이제 VM의 데이터 디스크가 준비되었으므로 만들 수 있는 다양한 유형의 디스크에 대해 좀 더 살펴보겠습니다. 기본 결정은 표준 또는 Premium Storage를 선택하는 것입니다.