연습 - 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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
      "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로 설정합니다.
    • 로컬 중복도를 갖춘 프리미엄 스토리지의 사용을 지정합니다.

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

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

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

일회성 작업의 경우 수동으로 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. 이전 단계에서 만든 ipaddress 변수 데이터를 사용하여 SSH 연결을 통해 VM에서 lsblk 명령을 실행하려면 다음 ssh 명령을 실행합니다. azureuser는 VM을 만들 때 사용한 관리 사용자 이름입니다. 다른 이름을 선택한 경우 대신 사용합니다. 메시지가 표시되면 를 입력합니다.

    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를 선택하는 것입니다.