연습 - 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
az configure
를 실행하여 사용할 기본 위치를 설정합니다. eastus를 이전 단계에서 선택한 위치로 바꿉다.az configure --defaults location=eastus
팁
복사 단추를 사용하여 클립보드에 명령을 복사할 수 있습니다. 붙여넣으려면 Cloud Shell 터미널에서 새 줄을 마우스 오른쪽 단추로 클릭하고 붙여넣기를 선택하거나 Shift+Insert 바로 가기 키(macOS의 경우 ⌘+V)를 사용합니다.
기본 리소스 그룹 이름을 Azure 샌드박스를 통해 만든 미리 구성된 리소스 그룹으로 설정합니다.
[샌드박스 리소스 그룹] az configure --defaults group="<rgn>[sandbox Resource Group]</rgn>"
Linux VM 만들기
여기서는 웹 서버를 호스트할 Linux VM을 만듭니다.
아
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을 만들 때 데이터 디스크를 추가할 수 있습니다.
다음
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이 예상대로 구성되었는지 확인해 보겠습니다.
az vm show
를 실행하여 VM의 공용 IP 주소를 가져오고 이 IP 주소를 Bash 변수로 저장합니다.ipaddress=$(az vm show \ --name support-web-vm01 \ --show-details \ --query [publicIps] \ --output tsv)
다음
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
는 탑재되지 않습니다. 드라이브는 아직 초기화되지 않았기 때문에 이러한 방식으로 나열됩니다.다음
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
를 업데이트하면 시스템이 다시 부팅된 후에 드라이브가 자동으로 탑재됩니다.
구성을 확인하려면 이전에 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를 선택하는 것입니다.