다음을 통해 공유


Azure Linux 가상 머신이 부팅에 실패하고 dracut 긴급 셸에 들어갑니다.

적용 대상: ✔️ Linux VM

참고 항목

이 문서에서 참조하는 CentOS는 Linux 배포이며 EOL(수명 종료)에 도달합니다. 사용 및 계획을 적절하게 고려하세요. 자세한 내용은 CentOS 수명 종료 지침을 참조 하세요.

이 문서에서는 RAMdisk에서 운영 체제(OS) 파일 시스템에 액세스할 수 없으므로 Azure Linux VM(가상 머신)을 부팅할 수 없는 문제에 대한 솔루션을 제공합니다. VM은 압정 비상 포탄에 착륙합니다.

필수 조건

Linux VM에서 직렬 콘솔 이 활성화되고 작동하는지 확인합니다.

dracut 부팅 문제를 식별하는 방법

dracut 부팅 문제를 식별하려면 Azure Portal을 사용하여 부팅 진단 창, 직렬 콘솔 창에서 VM의 직렬 콘솔 로그 출력을 보거나 AZ CLI를 사용합니다.

부팅 문제가 있는 모든 VM은 dracut 또는 initramfs 비상 셸에 착륙하고 직렬 콘솔 로그의 끝에 표시됩니다.

  • RHEL/CentOS/SLES/Oracle Linux:

    [  201.935612] dracut-initqueue[455]: Warning: dracut-initqueue timeout - starting timeout scripts
    [  201.941153] dracut-initqueue[455]: Warning: Could not boot.
             Starting Setup Virtual Console...
    [[0;32m  OK  [0m] Started Setup Virtual Console.
             Starting Dracut Emergency Shell...
    Warning: /dev/mapper/rootvg-rootlv does not exist
    
    Generating "/run/initramfs/rdsosreport.txt"
    
    
    Entering emergency mode. Exit the shell to continue.
    Type "journalctl" to view system logs.
    You might want to save "/run/initramfs/rdsosreport.txt" to a USB stick or /boot
    after mounting them and attach it to a bug report.
    
    
    dracut:/# 
    
  • Ubuntu:

    mdadm: No arrays found in config file or automatically
    done.
    Gave up waiting for root file system device.  Common problems:
     - Boot args (cat /proc/cmdline)
       - Check rootdelay= (did the system wait long enough?)
     - Missing modules (cat /proc/modules; ls /dev)
    ALERT!  /dev/mapper/osencrypt does not exist.  Dropping to a shell!
    
    
    BusyBox v1.27.2 (Ubuntu 1:1.27.2-2ubuntu3.4) built-in shell (ash)
    Enter 'help' for a list of built-in commands.
    
    (initramfs)
    

온라인 문제 해결

VM 의 최근 백업이 있는 경우 백업 에서 VM을 복원하여 부팅 문제를 해결합니다.

직렬 콘솔은 문제를 해결하는 가장 빠른 방법입니다. 이를 통해 복구 VM에 시스템 디스크를 표시하지 않고도 문제를 직접 해결할 수 있습니다. 배포에 필요한 필수 조건을 충족하는지 확인합니다. 자세한 내용은 Linux용 가상 머신 직렬 콘솔을 참조하세요.

  1. VM이 드라컷 비상 셸에 있는지 확인합니다.

  2. Azure 직렬 콘솔을 사용하여 문제를 해결해 보세요.

    참고 항목

    Azure 직렬 콘솔을 사용하여 모든 문제를 해결할 수 있는 것은 아닙니다.

    1. 직렬 콘솔에서 VM 다시 시작(하드)을 트리거합니다.
    2. ESC 키를 사용하여 GRUB 메뉴에서 VM을 중단합니다.
    3. E를 선택하여 GRUB 메뉴에서 첫 번째 커널 항목을 수정합니다.
    4. 줄로 이동한 linux16 다음 다음과 같이 GRUB 잘못된 구성의 유효성을 검사하고 수정합니다.
      • GRUB 구성 파일의 루트 디바이스 경로가 잘못되었습니다. 잘못된 UUID 또는 루트 볼륨 이름입니다.
      • GRUB 구성 파일에서 잘못된 스왑 디바이스 경로입니다.
      • GRUB 구성 파일의 중복된 매개 변수입니다.
      • 모든 명백한 오타.
  3. GRUB 설정을 수동으로 수정한 후 Ctrl+X를 선택하여 VM을 부팅합니다.

    이 단계에서 수행된 모든 수정은 비영구적 수정입니다. VM이 부팅할 수 있는 경우 GRUB 구성 파일에서 이 문제를 해결하거나 다시 발생합니다.

  4. VM이 다시 온라인 상태가 되면 구성 파일의 /etc/default/grub 구성 문제를 해결하고 GRUB 구성을 업데이트합니다. 이렇게 하려면 GRUB 다시 설치 및 GRUB 구성 파일 다시 생성을 참조하세요.

  5. 수동으로 개입하지 않고 부팅할 수 있도록 VM을 다시 부팅합니다.

오프라인문제 해결

VM 의 최근 백업이 있는 경우 백업 에서 VM을 복원하여 부팅 문제를 해결합니다.

  1. Azure 직렬 콘솔특정 VM에서 작동하지 않거나 구독의 옵션이 아닌 경우 복구/복구 VM을 사용하여 이 문제를 해결합니다. vm 복구 명령을 사용하여 영향을 받는 VM의 OS 디스크 복사본이 연결된 복구 VM을 만듭니다. 크로트를 사용하여 복구 VM에 OS 파일 시스템의 복사본을 탑재합니다.

    참고 항목

    또는 Azure Portal 사용하여 구조 VM을 수동으로 만들 수 있습니다. 자자세한 내용은 Azure Portal을 사용하여 OS 디스크를 복구 VM에 연결함으로써 Linux VM 문제 해결을 참조하세요.

  2. 특정 문제를 해결하려면 다음 섹션으로 이동합니다.

  3. dracut/initramfs 관련 부팅 문제가 해결된 후 다음 작업을 수행합니다.

    1. 크로트를 종료합니다.
    2. 복구/복구 VM에서 파일 시스템의 복사본을 분리합니다.
    3. az vm repair restore 이 명령을 실행하여 복구된 OS 디스크를 VM의 원래 OS 디스크로 교환합니다. 자세한 내용은 Azure Virtual Machine 복구 명령을 사용하여 Linux VM 복구의 5 단계를 참조하세요.
    4. Azure 직렬 콘솔을 살펴보거나 VM에 연결하여 VM이 부팅할 수 있는지 확인합니다.

VFAT를 사용하지 않도록 설정하여 ADE 암호화된 VM이 부팅되지 않음

자세한 내용은 ADE 암호화 VM 부팅 실패를 참조하세요.

Hyper-V 드라이버가 없습니다.

모든 최신 Linux 배포판의 Linux 커널에 포함된 Hyper-V 드라이버를 사용하지 않도록 설정한 경우 다시 사용하도록 설정하고 initramfs/initrd 이미지를 다시 생성합니다. 자세한 내용은 시나리오 3: 다른 Hyper-V 드라이버를 사용할 수 없음을 참조하세요.

VM이 Red Hat이고 온-프레미스에서 마이그레이션되는 경우 initramfs 이미지에서 필요한 Hyper-V 드라이버를 사용하도록 설정합니다. 자세한 내용은 Hyper-V가 아닌 하이퍼바이저를 사용하는 경우 Hyper-V 드라이버를 초기 RAM 디스크에 포함할 수 없음을 참조 하세요.

GRUB 구성 오류

매개 변수는 rd.break VM이 dracut 비상 셸에서 부팅되도록 합니다. 이 매개 변수가 GRUB 구성 파일에서 하드 코딩되지 않았는지 확인합니다.

GRUB 구성 파일의 루트 디바이스 경로가 잘못되었습니다.

GRUB 구성 파일의 루트 경로 root=/dev/*** 가 올바른지 확인합니다. 적절한 디바이스 경로가 사용되는지 확인합니다.

이 유효성 검사 중에 다음 사항을 확인합니다.

  • OS 암호화를 사용하는 Ubuntu VM에서 디바이스 이름이 /dev/mapper/osencrypt.인지 확인합니다.
  • OS 디스크에 LVM(논리 볼륨 관리자)이 있는 VM에서 루트 볼륨은 다음과 같습니다 /dev/mapper/rootvg-rootlv. ADE OS 디스크가 암호화된 RHEL VM에서도 동일한 경로가 사용됩니다.
  • 다시 부팅 시 변경되고 Linux에서 영구적이지 않으므로 사용되는 형식 /dev/sdX 의 디바이스 이름이 없는지 확인합니다. 자세한 내용은 Linux VM 디바이스 이름 변경 문제 해결을 참조 하세요.
  • UUID를 사용하는 경우 적절한 루트 파일 시스템 UUID가 사용되고 구문이 root=UUID=xxx-yyy-zzz사용되는지 확인합니다.

GRUB 구성 파일에서 잘못된 스왑 디바이스 경로

이 시나리오에서 VM은 부팅 프로세스를 완료하지 못하고 다음과 유사한 오류와 함께 dracut 긴급 셸을 입력합니다.

[  188.000765] dracut-initqueue[324]: Warning: /dev/VG/SwapVol does not exist
         Starting Dracut Emergency Shell...
Warning: /dev/VG/SwapVol does not exist

이 예제의 GRUB 구성 파일은 LV(논리 볼륨)를 매개 변수 rd.lvm.lv=VG/SwapVol와 교환으로 로드하도록 설정됩니다. 그러나 VM은 부팅 프로세스 중에 이 LV를 찾을 수 없습니다.

Azure Linux VM에서 이러한 방식으로 스왑 디바이스를 사용하는 것은 권장되지 않습니다. 자세한 내용은 Azure Linux VM에 대한 SWAP 파일 만들기를 참조하세요.

이 문제를 해결하려면 GRUB 구성 파일(/etc/default/grub)에서 스왑 경로를 rd.lvm.lv=VG/SwapVol 찾아 제거합니다. 이렇게 하려면 다음 메서드 중 하나를 사용합니다.

GRUB 구성 파일의 중복된 매개 변수

GRUB 구성 파일에 중복된 매개 변수가 있는지 확인합니다.

  • 복구/구조 VM의 크로엇 안에 있는 경우:

    1. 오프라인 문제 해결의 1단계를 따릅니다.
    2. 파일 및 항목의 /etc/default/grub 유효성을 검사합니다 GRUB_CMDLINE_LINUX .
    3. 중복된 매개 변수를 찾아 제거합니다.
    4. GRUB 구성 파일을 업데이트합니다. 자세한 내용은 GRUB 다시 설치 및 GRUB 구성 파일 다시 생성을 참조하세요.
  • Azure 직렬 콘솔에 있는 경우:

    1. 온라인 문제 해결의 3단계를 따릅니다.
    2. 줄의 유효성을 검사하고 linux16 중복된 매개 변수를 찾아 제거합니다.
    3. Ctrl+X를 선택하여 VM을 부팅합니다.
    4. VM이 성공적으로 부팅되면 파일을 적절하게 수정 /etc/default/grub 하고, 이전에 식별된 구성 문제를 수정하고, GRUB 다시 설치 및 GRUB 구성 파일 다시 생성에 지시된 대로 GRUB 구성 파일을 업데이트합니다.

루트 파일 시스템 손상

루트 파일 시스템이 손상되면 initrd/initramfs 이미지에서 탑재할 수 없습니다.

루트 파일 시스템 손상을 해결하려면 파일 시스템 오류로 인한 Linux 가상 머신 부팅 문제 해결의 지침 에 따라 파일 시스템 복구를 수행합니다.

LVM 활성화 관련 문제

LVM PV(물리적 볼륨), VG(볼륨 그룹) 및/또는 LV(논리 볼륨)에 액세스할 때 몇 가지 문제가 발생할 수 있습니다. Azure 직렬 콘솔에서 해결할 수 없습니다. 이를 해결하려면 복구/구조 VM을 사용합니다.

  1. 오프라인 문제 해결의 1단계를 따릅니다.

  2. 문제를 식별하려면 다음 명령을 실행하고 명령 출력을 살펴봅니다.

    1. OS 디스크에 해당하는 디바이스를 식별하고 PV로 검색되었는지 확인합니다.

      lsblk
      pvs
      
    2. VG가 rootvg 검색되었는지 확인합니다.

      vgs
      
    3. LV가 검색되었는지 확인합니다.

      lvs
      
  3. 루트 볼륨에 액세스하는 데 문제가 발생하는 다음과 같은 일반적인 LVM 오류를 해결합니다.

    • rootvg VG에 단일 PV만 있는 경우 알 수 없는 PV(표준 Azure 구성)

      PV를 보유하는 파티션이 잘못 삭제, 크기 조정 또는 생성되었습니다. 이 문제를 해결하려면 루트 파티션이 누락된 것을 참조하세요.

    • rootvg VG가 수정되고 둘 이상의 디스크에서 분할될 때 알 수 없는 PV

      rootvg VG에 2개 PV가 있는 것은 권장되는 구성이 아닙니다. 이 시나리오에서는 데이터 디스크가 가상 머신에서 분리될 수 있으며 rootvg 논리 볼륨에 더 이상 액세스할 수 없습니다. 이 문제를 해결하려면 원래 디스크를 VM에 다시 연결하고 다시 시작합니다.

  4. PV를 복구할 수 없는 경우 백업에서 복원을 수행합니다.

루트 파티션이 없습니다.

파티션 크기 조정 작업 중 파티션 수준에서 발생하는 일부 문제 또는 다른 문제로 인해 루트 파일 시스템에 액세스할 수 없을 수 있습니다.

이 시나리오에서 원래 파티션 테이블 레이아웃을 각 원래 파티션에 대한 정확한 시작 및 끝 섹터로 문서화한 경우(새 파일 시스템 만들기와 같이 시스템에서 더 이상 수정하지 않음) 동일한 원래 레이아웃을 사용하여 파티션을 다시 만듭니다. (MBR 파티션 테이블의 경우) 또는 gdisk (GPT 파티션 테이블의 경우) 같은 fdisk 도구를 사용하여 액세스할 수 없는 파일 시스템에 액세스할 수 있습니다. 복구/구조 VM에서 이 복구 작업을 수행합니다. 자세한 내용은 오프라인 문제 해결 섹션을 참조 하세요 .

이 방법이 작동하지 않는 경우 백업에서 복원을 수행하는 것이 좋습니다.

Initrd 또는 initramfs 손상

initrd/initramfs 이미지에는 루트 볼륨을 탑재하고 OS 시작 프로세스를 시작하는 데 실패하는 일부 수준의 손상이 있습니다.

이 문제를 해결하려면 복구/구조 VM의 크로엇 내부에서 다음 단계를 수행합니다.

  1. 오프라인 문제 해결의 1단계를 따릅니다.
  2. 누락된 initramfs를 수동으로 다시 생성합니다.
  3. VM을 다시 시작하여 부팅할 수 있는지 확인합니다.

다음 단계

특정 부팅 오류가 dracut 또는 initramfs 문제가 아닌 경우 추가 문제 해결 옵션은 Azure Linux Virtual Machines 부팅 오류 문제를 참조하세요.

도움을 요청하십시오.

질문이 있거나 도움이 필요한 경우 지원 요청을 생성하거나Azure 커뮤니티 지원에 문의하세요. Azure 피드백 커뮤니티에 제품 피드백을 제출할 수도 있습니다.