Azure CLI를 사용하여 OS 디스크를 복구 VM에 연결하여 Linux VM 문제 해결
적용 대상: ✔️ Linux VM
Linux 가상 머신(VM)에 부팅 또는 디스크 오류가 발생하는 경우 가상 하드 디스크에서 바로 문제 해결 단계를 수행해야 합니다. 일반적인 예는 VM이 성공적으로 부팅되지 않도록 하는 잘못된 항목 /etc/fstab
입니다. 이 문서에는 가상 하드 디스크를 다른 Linux VM에 연결하여 모든 오류를 수정한 후 원래 VM을 다시 만들기 위해 Azure CLI를 사용하는 방법을 자세히 설명합니다.
복구 프로세스 개요
문제 해결 프로세스는 다음과 같습니다.
- 영향을 받는 VM을 중지합니다.
- VM의 OS 디스크에서 스냅샷을 만듭니다.
- OS 디스크 스냅샷에서 디스크를 만듭니다.
- 문제 해결을 위해 새 OS 디스크를 다른 Linux VM에 연결하고 탑재합니다.
- 문제 해결 VM에 연결합니다. 파일을 편집하거나 도구를 실행하여 새 OS 디스크의 문제를 해결합니다.
- 문제 해결 VM에서 새 OS 디스크를 분리하고 분리합니다.
- 영향을 받는 VM의 OS 디스크를 변경합니다.
이러한 문제 해결 단계를 수행하려면 az login을 사용하여 최신 Azure CLI를 설치하고 Azure 계정에 로그인해야 합니다.
VM 복구 명령을 사용하여 1, 2, 3, 4, 6 및 7단계를 자동화할 수 있습니다. 자세한 설명서 및 지침은 Azure Virtual Machine 복구 명령을 사용하여 Linux VM 복구를 참조 하세요.
Important
이 문서의 스크립트는 Managed Disk를 사용하는 VM에만 적용됩니다.
다음 예제에서는 매개 변수 이름을 사용자 고유의 값(예: 및 myVM
.)으로 myResourceGroup
바꿉니다.
부팅 문제 확인
VM이 올바르게 부팅할 수 없는 원인을 확인하려면 직렬 출력을 검사합니다. 일반적인 예는 잘못된 항목 /etc/fstab
또는 기본 가상 하드 디스크를 삭제하거나 이동하는 것입니다.
az vm boot-diagnostics get-boot-log를 사용하여 부팅 로그를 가져옵니다. 다음 예제에서는 리소스 그룹 myResourceGroup
의 VM myVM
에서 직렬 출력을 수신합니다.
az vm boot-diagnostics get-boot-log --resource-group myResourceGroup --name myVM
직렬 출력을 검토하여 VM을 부팅하지 못하는 이유를 확인합니다. 직렬 출력에 아무런 표시가 없는 경우, 가상 하드 디스크가 문제 해결 VM에 연결하고 /var/log
에 로그 파일을 검토해야 할 수 있습니다.
VM을 중지합니다.
다음 예제에서는 리소스 그룹 myResourceGroup
에서 VM myVM
을 중지합니다.
az vm stop --resource-group MyResourceGroup --name MyVm
영향을 받는 VM의 OS 디스크에서 스냅샷 만들기
스냅샷은 VHD의 전체 읽기 전용 복사본입니다. VM에 연결할 수 없습니다. 다음 단계에서는 이 스냅샷에서 디스크를 만듭니다. 다음 예제에서는 이름이 'myVM'인 VM의 OS 디스크에서 이름으로 mySnapshot
스냅샷을 만듭니다.
#Get the OS disk Id
$osdiskid=(az vm show -g myResourceGroup -n myVM --query "storageProfile.osDisk.managedDisk.id" -o tsv)
#creates a snapshot of the disk
az snapshot create --resource-group myResourceGroupDisk --source "$osdiskid" --name mySnapshot
스냅샷에서 디스크 만들기
이 스크립트는 이름이 지정된 mySnapshot
스냅샷의 이름으로 myOSDisk
관리 디스크를 만듭니다.
#Provide the name of your resource group
$resourceGroup="myResourceGroup"
#Provide the name of the snapshot that will be used to create Managed Disks
$snapshot="mySnapshot"
#Provide the name of the Managed Disk
$osDisk="myNewOSDisk"
#Provide the size of the disks in GB. It should be greater than the VHD file size.
$diskSize=128
#Provide the storage type for Managed Disk. Premium_LRS or Standard_LRS.
$storageType="Premium_LRS"
#Provide the OS type
$osType="linux"
#Get the snapshot Id
$snapshotId=(az snapshot show --name $snapshot --resource-group $resourceGroup --query id -o tsv)
# Create a new Managed Disks using the snapshot Id.
az disk create --resource-group $resourceGroup --name $osDisk --sku $storageType --size-gb $diskSize --source $snapshotId
리소스 그룹과 원본 스냅샷이 동일한 지역에 없는 경우 실행할 az disk create
때 "리소스를 찾을 수 없습니다." 오류가 표시됩니다. 이 경우 원본 스냅샷과 동일한 지역에 디스크를 만들도록 지정 --location <region>
해야 합니다.
이제 원래 OS 디스크의 복사본이 있습니다. 문제 해결을 위해 이 새 디스크를 다른 Windows VM에 탑재할 수 있습니다.
새 가상 하드 디스크를 다른 VM에 연결
다음 몇 단계에서는 문제 해결을 위해 다른 VM을 사용합니다. 디스크를 이 문제 해결 VM에 연결하여 디스크의 콘텐츠를 찾아 편집합니다. 이 프로세스를 통해 구성 오류를 수정하거나 추가 애플리케이션 또는 시스템 로그 파일을 검토할 수 있습니다.
이 스크립트는 디스크 myNewOSDisk
를 VM MyTroubleshootVM
에 연결합니다.
# Get ID of the OS disk that you just created.
$myNewOSDiskid=(az disk show -g $resourceGroup -n $osDisk --query id -o tsv)
# Attach the disk to the troubleshooting VM
az vm disk attach --disk $myNewOSDiskid --resource-group $resourceGroup --size-gb $diskSize --sku $storageType --vm-name MyTroubleshootVM
연결된 데이터 디스크 탑재
참고 항목
다음 예제에서는 Ubuntu VM에 필요한 단계를 자세히 설명합니다. Red Hat Enterprise Linux 또는 SUSE와 같은 다른 Linux 배포판을 사용하는 경우 로그 파일 위치 및 mount
명령이 약간 다를 수 있습니다. 명령의 적절한 변경 내용은 특정 배포판에 대한 설명서를 참조하세요.
적절한 자격 증명을 사용하여 문제 해결 VM에 SSH합니다. 이 디스크가 문제 해결 VM에 연결된 첫 번째 데이터 디스크인 경우 디스크가 연결된 것
/dev/sdc
같습니다. 연결된 디스크를 보는 데 사용합니다dmesg
.dmesg | grep SCSI
다음 예제와 유사하게 출력됩니다.
[ 0.294784] SCSI subsystem initialized [ 0.573458] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252) [ 7.110271] sd 2:0:0:0: [sda] Attached SCSI disk [ 8.079653] sd 3:0:1:0: [sdb] Attached SCSI disk [ 1828.162306] sd 5:0:0:0: [sdc] Attached SCSI disk
앞의 예제에서는 OS 디스크가 있고
/dev/sda
각 VM에 대해 제공된 임시 디스크가 있습니다/dev/sdb
. 데이터 디스크가 여러 대 있는 경우 해당 디스크는/dev/sdd /dev/sde
/> 등이어야 합니다.디렉터리를 만들어 기존 가상 하드 디스크를 탑재합니다. 다음 예제에서는 이름이
troubleshootingdisk
지정된 디렉터리를 만듭니다.sudo mkdir /mnt/troubleshootingdisk
기존 가상 하드 디스크에 여러 파티션이 있는 경우 필요한 파티션을 탑재합니다. 다음 예제에서는 첫 번째 주 파티션을 다음 위치에서
/dev/sdc1
탑재합니다.sudo mount /dev/sdc1 /mnt/troubleshootingdisk
참고 항목
모범 사례는 가상 하드 디스크의 UUID(유니버설 고유 식별자)를 사용하여 Azure의 VM에 데이터 디스크를 탑재하는 것입니다. 이 짧은 문제 해결 시나리오에서는 UUID를 사용하여 가상 하드 디스크를 탑재할 필요가 없습니다. 그러나 일반적인 사용에서 UUID가 아닌 디바이스 이름을 사용하여 가상 하드 디스크를 탑재하도록 편집
/etc/fstab
하면 VM이 부팅되지 않을 수 있습니다.
새 OS 디스크의 문제 해결
기존 가상 하드 디스크를 탑재하면 이제 필요에 따라 모든 유지 관리 및 문제 해결 단계를 수행할 수 있습니다. 문제를 해결했으면 다음 단계를 계속 진행합니다.
새 OS 디스크 분리 및 분리
오류가 해결되면 문제 해결 VM에서 기존 가상 하드 디스크를 탑재 해제하고 분리합니다. 문제 해결 VM에 가상 하드 디스크를 연결하는 임대가 해제될 때까지 다른 VM에서 가상 하드 디스크를 사용할 수 없습니다.
SSH 세션에서 문제 해결 VM까지 기존 가상 하드 디스크를 분리합니다. 먼저 탑재 지점의 부모 디렉터리에서 변경합니다.
cd /
이제 기존 가상 하드 디스크를 분리합니다. 다음 예제는
/dev/sdc1
에 있는 디바이스를 탑재 해제합니다.sudo umount /dev/sdc1
이제 VM에서 가상 하드 디스크를 분리합니다. 문제 해결 VM에 대한 SSH 세션을 종료합니다.
az vm disk detach -g MyResourceGroup --vm-name MyTroubleShootVm --name myNewOSDisk
영향을 받는 VM의 OS 디스크 변경
Azure CLI를 사용하여 OS 디스크를 교환할 수 있습니다. VM을 삭제하고 다시 만들 필요가 없습니다.
이 예제에서는 myVM
이라는 VM을 중지하고 myNewOSDisk
라는 디스크를 새 OS 디스크로 할당합니다.
# Stop the affected VM
az vm stop -n myVM -g myResourceGroup
# Get ID of the OS disk that is repaired.
$myNewOSDiskid=(az disk show -g $resourceGroup -n $osDisk --query id -o tsv)
# Change the OS disk of the affected VM to "myNewOSDisk"
az vm update -g myResourceGroup -n myVM --os-disk $myNewOSDiskid
# Start the VM
az vm start -n myVM -g myResourceGroup
다음 단계
VM에 연결하는 데 문제가 있는 경우 Azure VM에 대한 SSH 연결 문제를 참조하세요. VM에서 실행 중인 애플리케이션에 액세스하는 데 문제가 있는 경우 Linux VM에서 애플리케이션 연결 문제 해결을 참조하세요.
도움을 요청하십시오.
질문이 있거나 도움이 필요한 경우 지원 요청을 생성하거나Azure 커뮤니티 지원에 문의하세요. Azure 피드백 커뮤니티에 제품 피드백을 제출할 수도 있습니다.