다음을 통해 공유


VFAT 파일 시스템 형식이 사용하지 않도록 설정된 후 Azure Linux 가상 머신이 부팅되지 않음

적용 대상: ✔️ Linux VM

참고 항목

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

이 문서에서는 VFAT(가상 파일 할당 테이블) 파일 시스템 형식을 사용하지 않도록 설정한 후 Azure Linux VM(가상 머신)을 부팅할 수 없는 문제에 대한 솔루션을 제공합니다.

VFAT는 다음 시나리오에서 필요합니다.

  • Azure VM의 보증 Linux 배포판은 /boot/efi 파일 시스템을 탑재합니다.

    Linux Gen2 VM(UEFI 기반)에는 /boot/efi 파일 시스템이 필요하지만 Gen1(BIOS 기반) Linux 이미지에 포함되어 있습니다.

  • Azure Disk Encryption(ADE)을 사용하여 Azure Linux VM의 OS 및 데이터 디스크를 모두 암호화합니다.

VFAT를 사용하지 않도록 설정하면 Azure Linux VM이 부팅되지 않습니다. 여러 강화 도구는 VFAT를 사용하지 않도록 설정할 수 있습니다. 이러한 종류의 문제를 방지하려면 VFAT가 강화에서 제외되고 사용하도록 설정되어 있는지 확인합니다.

필수 조건

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

부팅 문제를 식별하는 방법

부팅 문제를 식별하려면 AZ CLI 또는 Azure Portal을 사용하여 부팅 진단 창 또는 직렬 콘솔 창에서 VM의 직렬 콘솔 로그 출력을 확인합니다. VFAT를 사용하지 않도록 설정하면 다음과 같은 문제가 발생합니다.

/boot/efi를 탑재하지 못했습니다.

/boot/efi 파일 시스템이 탑재되지 않으면 다음 출력 중 하나 이상이 표시됩니다.

  • 출력 1

    [[1;31mFAILED[0m] Failed to mount /boot/efi.
    
    See 'systemctl status boot-efi.mount' for details.
    
    [[1;33mDEPEND[0m] Dependency failed for Local File Systems.
    
    [[1;33mDEPEND[0m] Dependency failed for Relabel all filesystems, if necessary.
    
    [[1;33mDEPEND[0m] Dependency failed for Migrate local... structure to the new structure.
    
    [[1;33mDEPEND[0m] Dependency failed for Mark the need to relabel after reboot.
    
  • 출력 2

    [FAILED] Failed to mount /boot/efi.
    See 'systemctl status boot-efi.mount' for details.
    [DEPEND] Dependency failed for Local File Systems.
    [DEPEND] Dependency failed for Mark the need to relabel after reboot.
    
  • 출력 3

    [   17.707983] ------------[ cut here ]------------
    [   17.714144] request_module fs-vfat succeeded, but still no fs?
    [   17.714426] RPC: Registered named UNIX socket transport module.
    [   17.721163] WARNING: CPU: 1 PID: 933 at fs/filesystems.c:275 get_fs_type+0xcd/0xe0
    [   17.738587] RPC: Registered udp transport module.
    [   17.722103] Modules linked in: fat sunrpc(+) rdma_ucm ib_srpt ib_isert iscsi_target_mod target_core_mod intel_rapl_msr intel_rapl_common isst_if_mbox_msr isst_if_common ib_iser libiscsi nfit scsi_transport_iscsi ib_umad libnvdimm rdma_cm ib_ipoib iw_cm ib_cm kvm_intel kvm irqbypass mlx5_ib crct10dif_pclmul crc32_pclmul ib_uverbs ghash_clmulni_intel rapl pcspkr ib_core i2c_piix4 hv_balloon hv_utils joydev ip_tables xfs libcrc32c mlx5_core mlxfw tls pci_hyperv pci_hyperv_intf ata_generic sd_mod t10_pi sg hv_storvsc hv_netvsc hyperv_keyboard scsi_transport_fc hid_hyperv hyperv_fb ata_piix libata hv_vmbus crc32c_intel serio_raw dm_mod
    [   17.766462] RPC: Registered tcp transport module.
    [   17.722103] CPU: 1 PID: 933 Comm: mount Not tainted 4.18.0-305.17.1.el8_4.x86_64 #1
    [   17.722103] Hardware name: Microsoft Corporation Virtual Machine/Virtual Machine, BIOS 090008  12/07/2018
    [   17.722103] RIP: 0010:get_fs_type+0xcd/0xe0
    [   17.722103] Code: 5d 41 5c c3 80 3d 6a 7a 49 01 00 75 ec 48 89 da 44 89 e6 48 89 04 24 48 c7 c7 c8 47 ce b7 c6 05 50 7a 49 01 01 e8 6c 67 da ff <0f> 0b 48 8b 04 24 e9 66 ff ff ff 0f 1f 84 00 00 00 00 00 0f 1f 44
    [   17.722103] RSP: 0018:ffffabd68394fe70 EFLAGS: 00010282
    [   17.722103] RAX: 0000000000000000 RBX: ffffa04a1e6879e0 RCX: 0000000000000000
    [   17.722103] RDX: ffffa04a37d267a0 RSI: ffffa04a37d167c8 RDI: ffffa04a37d167c8
    [   17.722103] RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000092
    [   17.722103] R10: 00000000ff000000 R11: ffffabd682fec020 R12: 0000000000000004
    [   17.722103] R13: ffffa04a1d80f920 R14: ffffa04a1e6879e0 R15: 0000000000000000
    [   17.722103] FS:  00007fb0630e1080(0000) GS:ffffa04a37d00000(0000) knlGS:0000000000000000
    [   17.722103] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [   17.722103] CR2: 00007fb86bb7a0c0 CR3: 000000029bfe4004 CR4: 00000000003706e0
    [   17.722103] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [   17.722103] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [   17.722103] Call Trace:
    [   17.722103]  do_mount+0x1f2/0x950
    [   17.722103]  ksys_mount+0xb6/0xd0
    [   17.722103]  __x64_sys_mount+0x21/0x30
    [   17.722103]  do_syscall_64+0x5b/0x1a0
    [   17.722103]  entry_SYSCALL_64_after_hwframe+0x65/0xca
    [   17.874253] RPC: Registered tcp NFSv4.1 backchannel transport module.
    [   17.722103] RIP: 0033:0x7fb06211192e
    [   17.722103] Code: 48 8b 0d 5d 15 2c 00 f7 d8 64 89 01 48 83 c8 ff c3 66 2e 0f 1f 84 00 00 00 00 00 90 f3 0f 1e fa 49 89 ca b8 a5 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 2a 15 2c 00 f7 d8 64 89 01 48
    [   17.722103] RSP: 002b:00007fff02a92b78 EFLAGS: 00000246 ORIG_RAX: 00000000000000a5
    [   17.722103] RAX: ffffffffffffffda RBX: 00005626752f3460 RCX: 00007fb06211192e
    [   17.722103] RDX: 00005626752f36e0 RSI: 00005626752f3700 RDI: 00005626752f53d0
    [   17.722103] RBP: 00007fb062ebe184 R08: 00005626752f3670 R09: 0000000000000003
    [   17.722103] R10: 00000000c0ed0000 R11: 0000000000000246 R12: 0000000000000000
    [   17.722103] R13: 00000000c0ed0000 R14: 00005626752f53d0 R15: 00005626752f36e0
    [   17.722103] ---[ end trace 910fa795ff1c6c89 ]---
    [[0;1;31mFAILED[0m] Failed to mount /boot/efi.
    
    See 'systemctl status boot-efi.mount' for details.
    

ADE 암호화된 VM이 루트 볼륨에 액세스할 수 없음

OS가 암호화되고 VFAT가 비활성화된 VM이 부팅되지 않으면 아래와 같이 해당 출력이 표시됩니다. 시스템 시간이 초과되면 직렬 콘솔 로그의 끝에 dracut 또는 initramfs 셸이 표시됩니다.

  • OS 디스크가 암호화되고 VFAT가 비활성화된 Ubuntu VM:

        [   24.062228] dracut-initqueue[261]: +++ '[' -z 0 ']'
        [   24.065039] dracut-initqueue[261]: + luksname=osencrypt
        [   24.068026] dracut-initqueue[261]: + ask_passphrase=1
        [   24.070498] dracut-initqueue[261]: + '[' /dev/sda2 '!=' /dev/sda2 ']'
        [   24.073528] dracut-initqueue[261]: + device=/dev/sda2
        [   24.076046] dracut-initqueue[261]: + numtries=1
        [   24.078410] dracut-initqueue[261]: + info 'luksOpen /dev/sda2 osencrypt'
        [   24.081822] dracut-initqueue[261]: + check_quiet
        [   24.084663] dracut-initqueue[261]: + '[' -z no ']'
        [   24.087067] dracut-initqueue[261]: + '[' no '!=' yes ']'
        [   24.089711] dracut-initqueue[261]: + echo 'luksOpen /dev/sda2 osencrypt'
        [   24.092857] dracut-initqueue[261]: luksOpen /dev/sda2 osencrypt
        [   24.095737] dracut-initqueue[261]: + ls '/mnt/azure_bek_disk/LinuxPassPhraseFileName*'
        [   24.099506] dracut-initqueue[261]: ls: cannot access /mnt/azure_bek_disk/LinuxPassPhraseFileName*: No such file or directory
        [   24.104460] dracut-initqueue[261]: + mkdir -p /mnt/azure_bek_disk/
        [   24.107648] dracut-initqueue[261]: + mount -L 'BEK VOLUME' /mnt/azure_bek_disk/
        [   24.111029] dracut-initqueue[261]: mount: unknown filesystem type 'vfat'
        [   24.114456] dracut-initqueue[261]: ++ ls '/mnt/azure_bek_disk/LinuxPassPhraseFileName*'
        [   24.118570] dracut-initqueue[261]: ls: cannot access /mnt/azure_bek_disk/LinuxPassPhraseFileName*: No such file or directory
        [   24.124108] dracut-initqueue[261]: + cryptsetupopts='--header /osluksheader'
        [   24.127630] dracut-initqueue[261]: + '[' -n '' -a '' '!=' none -a -e '' ']'
        [   24.131265] dracut-initqueue[261]: + '[' 1 -eq 0 ']'
        [   24.134614] dracut-initqueue[261]: + sleep 1 
        [   24.817478] dracut-initqueue[261]: + info 'No key found for /dev/sda2.  Will try 1 time(s) more later.'
        [   24.823243] dracut-initqueue[261]: + check_quiet
    
  • OS 디스크가 암호화되고 VFAT가 비활성화된 RHEL 7.x VM:

    %G%G[[32m  OK  [0m] Found device Virtual_Disk BEK_VOLUME.
    
             Mounting /bek...
    
    [[1;31mFAILED[0m] Failed to mount /bek.
    
    See 'systemctl status bek.mount' for details.
    
  • OS 디스크가 암호화되고 VFAT가 비활성화된 RHEL 8.x VM:

    [   11.592932] dracut-initqueue[470]: + systemctl start bek.mount
    [   11.600362] dracut-initqueue[470]: Bus n/a: changing state UNSET → OPENING         Mounting /bek...
    
    [   11.611171] dracut-initqueue[470]: Bus n/a: changing state OPENING → AUTHENTICATING
    [   11.616206] dracut-initqueue[470]: Executing dbus call org.freedesktop.systemd1.Manager StartUnit(bek.mount, replace)
    [   11.622972] dracut-initqueue[470]: Bus n/a: changing state AUTHENTICATING → RUNNING
    [   11.628048] dracut-initqueue[470]: Sent message type=method_call sender=n/a destination=org.freedesktop.systemd1 path=/org/freedesktop/systemd1 interface=org.freedesktop.systemd1.Manager member=StartUnit cookie=1 reply_cookie=0 signature=ss error-name=n/a error-message=n/a
    [   11.639221] dracut-initqueue[470]: Got message type=method_return sender=org.freedesktop.systemd1 destination=n/a path=n/a interface=n/a member=n/a cookie=1 reply_cookie=1 signature=o error-name=n/a error-message=n/a[[0;1;31mFAILED[0m] Failed to mount /bek.
    See 'systemctl status bek.mount' for details.
    
  • 일부 이전 시스템에서는 Azure 직렬 콘솔에서 다음 오류가 표시 될 수 있습니다.

    알 수 없는 파일 시스템 형식 'vfat' 오류입니다.

이 문제가 있는 모든 VM은 dracut/initramfs에서 중단되고 직렬 콘솔 로그의 끝에 표시됩니다.

  • RHEL/CentOS/SLES:

    ///lib/dracut/hooks/emergency/80-\x2fdev\x2fmapper\x2frootvg-rootlv.sh@1(source): warn '/dev/mapper/rootvg-rootlv does not exist'
    //lib/dracut-lib.sh@79(warn): echo 'Warning: /dev/mapper/rootvg-rootlv does not exist'
    Warning: /dev/mapper/rootvg-rootlv does not exist
    /bin/dracut-emergency@19(main): echo
    ...
    /bin/dracut-emergency@29(main): '[' -f /run/dracut/fsck/fsck_help_auto.txt ']'
    /bin/dracut-emergency@30(main): '[' -f /etc/profile ']'
    /bin/dracut-emergency@30(main): . /etc/profile
    //etc/profile@1(source): PS1='dracut:${PWD}# '
    /bin/dracut-emergency@31(main): '[' -z 'dracut:${PWD}# ' ']'
    /bin/dracut-emergency@32(main): exec sh -i -l
    dracut:/# 
    
  • Ubuntu:

    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)
    

부팅 문제를 해결하려면 온라인 문제 해결 또는 오프라인 문제 해결로 이동합니다.

참고 항목

OS 디스크가 암호화되지 않고 데이터 파일 시스템만 ADE를 사용하여 암호화된 경우 VFAT를 사용하지 않도록 설정하여 ADE 암호화 데이터 디스크를 탑재하지 못합니다. 이 경우 온라인 문제 해결 또는 오프라인 문제 해결에서 동일한 단계를 수행하여 이 문제를 해결합니다.

온라인 문제 해결

VFAT를 사용하지 않도록 설정 하기 전에 VM의 최근 백업이 있는 경우 백업 에서 VM을 복원하여 부팅 문제를 해결합니다.

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

암호화되지 않은 VM이 /boot/efi를 탑재하지 못 함

  1. Azure 직렬 콘솔사용하여 단일 사용자 모드에서 VM을 부팅합니다. 자세한 내용은 직렬 콘솔을 사용하여 GRUB 및 단일 사용자 모드 액세스를 참조하세요.

    단일 사용자 모드로 VM을 부팅하려면 GRUB 메뉴 수준에서 부팅 프로세스를 중단하고 기본 커널 항목을 편집하여 시작하는 GRUB 줄에 커널 옵션을 추가 init=/bin/bash 합니다 linux.

    GRUB 메뉴 수준에서 부팅 프로세스를 중단하여 단일 사용자 모드로 시스템을 부팅하는 프로세스를 보여 주는 애니메이션 GIF입니다.

  2. 필요한 모든 파일 시스템이 탑재되고 루트가 읽기 및 쓰기 모드인지 확인합니다.

    1. 커널 옵션을 사용하여 시스템을 부팅하는 init=/bin/bash 경우 다음 명령을 실행하여 필요한 파일 시스템을 준비합니다.

      mount -o rw,remount /
      mount -a
      
    2. VFAT를 다시 사용하도록 설정합니다.

    3. 시스템을 다시 시작합니다.

참고 항목

VM이 Gen1이고 암호화되지 않은 경우 Gen1 VM에서 필요하지 않으므로 /etc/fstab /boot/efi 에서 항목을 주석으로 처리 /boot/efi 할 수도 있습니다. 자세한 내용은 fstab 오류로 인한 Linux VM 시작 문제 해결을 참조 하세요.

ADE 암호화된 VM이 부팅되지 않습니다.

  • OS 디스크가 암호화된 VM:

    OS 디스크가 암호화되면 Azure 직렬 콘솔에서 이 문제를 해결할 수 없습니다.

  • /etc/fstab 문제로 인해 암호화된 데이터 디스크만 있는 VM이 부팅되지 않습니다.

    1. VM 데이터 디스크만 암호화된 경우(OS 디스크가 암호화되지 않음) 시스템을 부팅하려면 Azure 직렬 콘솔을 사용하여 단일 사용자 모드에서 /etc/fstab 의 해당 항목에 탑재 옵션을 추가 nofail 합니다. 자세한 내용은 fstab 오류로 인한 Linux VM 시작 문제 해결을 참조 하세요.

    2. VM이 부팅되면 VFAT 를 다시 사용하도록 설정하고 VM을 다시 시작합니다.

오프라인문제 해결

VFAT를 사용하지 않도록 설정 하기 전에 VM의 최근 백업이 있는 경우 백업 에서 VM을 복원하여 부팅 문제를 해결합니다.

Azure 직렬 콘솔특정 VM에서 작동하지 않거나 구독의 옵션이 아닌 경우 복구/복구 VM을 사용하여 이 문제를 해결합니다.

암호화되지 않은 VM이 /boot/efi를 탑재하지 못 함

  1. vm 복구 명령을 사용하여 영향을 받는 VM의 OS 디스크 복사본이 연결된 복구 VM을 만듭니다. 크로트를 사용하여 복구 VM에 OS 파일 시스템의 복사본을 탑재합니다.

    참고 항목

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

  2. VFAT를 다시 사용하도록 설정합니다.

  3. VFAT를 다시 사용하도록 설정한 후 다음 작업을 수행합니다.

    1. 크로트를 종료하고 복구/복구 VM에서 파일 시스템의 복사본을 분리합니다.

    2. az vm repair restore 이 명령을 실행하여 복구된 OS 디스크를 VM의 원래 OS 디스크로 교환합니다. 자세한 내용은 Azure Virtual Machine 복구 명령을 사용하여 Linux VM 복구의 5 단계를 참조하세요.

    3. Azure 직렬 콘솔을 살펴보거나 VM에 연결하여 VM이 부팅할 수 있는지 확인합니다.

참고 항목

VM이 Gen1이고 암호화되지 않은 경우 Gen1 VM에서 필요하지 않으므로 /etc/fstab /boot/efi 에서 항목을 주석으로 처리 /boot/efi 할 수도 있습니다. 자세한 내용은 fstab 오류로 인한 Linux VM 시작 문제 해결을 참조 하세요.

ADE 암호화된 VM이 부팅되지 않습니다.

  1. vm 복구 명령을 사용하여 영향을 받는 VM의 OS 디스크 복사본이 연결된 복구 VM을 만듭니다.

  2. ADE 를 사용하여 VM을 암호화하는 경우 Azure VM 복구 명령은 암호화된 파일 시스템의 잠금을 해제하고 탑재하는 작업을 처리합니다. 암호화된 파일 시스템은 다음과 같이 /investigateroot/* /investigateboot탑재됩니다. 복구 VM에 로그인하고 chroot를 사용하여 파일 시스템을 원하는 탑재 지점에 다시 탑재할 수 있습니다.

    참고 항목

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

  3. VFAT를 다시 사용하도록 설정합니다.

  4. VFAT를 다시 사용하도록 설정한 후 다음 작업을 수행합니다.

    1. 크로트를 종료하고 복구/복구 VM에서 파일 시스템의 복사본을 분리합니다.

    2. az vm repair restore 이 명령을 실행하여 복구된 OS 디스크를 VM의 원래 OS 디스크로 교환합니다. 자세한 내용은 Azure Virtual Machine 복구 명령을 사용하여 Linux VM 복구의 5 단계를 참조하세요.

    3. Azure 직렬 콘솔을 살펴보거나 VM에 연결하여 VM이 부팅할 수 있는지 확인합니다.

VFAT 다시 사용

  1. 다음 명령을 실행하여 VFAT 및 해당 줄 번호를 사용하지 않도록 설정하는 파일을 식별합니다.

    grep -nr vfat /etc/modprobe.d/
    
  2. 해당 파일을 수정하고 VFAT 항목을 주석 처리하거나 삭제합니다. 항목은 가장 일반적으로 다음과 install vfat /bin/true같습니다.

    vi /etc/modprobe.d/disable.conf
    

    참고 항목

    VFAT를 사용하지 않도록 설정된 해당 파일 이름으로 바꿉 disable.conf 있습니다.

  3. 다음 해당 명령을 사용하여 initramfs 파일을 다시 생성합니다.

    • Azure 직렬 콘솔에서 명령을 실행합니다.

      • RHEL/CentOS/Oracle Linux 7/8

        dracut -f /boot/initramfs-$(uname -r).img $(uname -r)
        
      • SLES 12/15

        dracut -f /boot/initrd-$(uname -r) $(uname -r)
        
      • Ubuntu 18.04

        mkinitramfs -k -o /boot/initrd.img-$(uname -r)
        
    • 복구/구조 VM에서 명령을 실행합니다.

      Important

      오프라인 문제 해결1단계가 수행되고 이러한 명령이 chroot 내에서 실행되는지 확인합니다.

      • RHEL/CentOS/Oracle Linux 7/8

        dracut -f /boot/initramfs-3.10.0-1160.59.1.el7.x86_64.img 3.10.0-1160.59.1.el7.x86_64
        

        Important

        해당 커널 버전으로 바꿉다 3.10.0-1160.59.1.el7.x86_64 .

      • SLES 12/15

        dracut -f /boot/initrd-5.3.18-150300.38.53-azure 5.3.18-150300.38.53-azure
        

        Important

        해당 커널 버전으로 바꿉다 5.3.18-150300.38.53-azure .

      • Ubuntu 18.04

        mkinitramfs -k -o /boot/initrd.img-5.4.0-1077-azure
        

        Important

        해당 커널 버전으로 바꿉다 5.4.0-1077-azure .

다음 단계

특정 부팅 오류가 VFAT 사용 안 함 문제가 아닌 경우 추가 문제 해결 옵션은 Azure Linux Virtual Machines 부팅 오류 문제를 참조하세요.

도움을 요청하십시오.

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