fstab 오류로 인한 Linux VM 부팅 문제 해결

참고

이 문서에서 참조하는 CentOS는 Linux 배포판이며 EOL(수명 종료)에 도달합니다. 사용을 고려하고 그에 따라 계획하십시오. 자세한 내용은 CentOS 수명 종료 지침을 참조하세요.

Linux 파일 시스템 테이블인 fstab은 시스템 부팅 프로세스 중에 특정 파일 시스템이 검색되고 순서대로 탑재되는 규칙을 구성하도록 설계된 구성 테이블입니다. 이 문서에서는 잘못된 fstab 구성으로 인해 부팅 문제가 발생할 수 있는 여러 조건에 대해 설명하고 문제 해결 지침을 제공합니다.

fstab 잘못된 구성으로 인해 Virtual Machine 부팅 문제가 발생할 수 있는 몇 가지 일반적인 이유는 다음과 같습니다.

  • 기존 파일 시스템 이름은 파일 시스템의 UUID(유니버설 고유 식별자) 대신 사용됩니다.
  • 잘못된 UUID가 사용됩니다.
  • fstab 구성 내에서 옵션 없이 nofail 연결되지 않은 디바이스에 대한 항목이 있습니다.
  • fstab 구성 내의 잘못된 항목입니다.

fstab 문제 식별

Azure Portal [부팅 진단](/azure/virtual-machines/boot-진단#boot-진단-view) 블레이드 내의 직렬 로그에서 VM의 현재 부팅 상태를 확인합니다. VM은 긴급 모드에 있습니다. 비상 모드 상태로 이어지는 다음 예제와 유사한 로그 항목이 표시됩니다.

[K[[1;31m TIME [0m] Timed out waiting for device dev-incorrect.device.
[[1;33mDEPEND[0m] Dependency failed for /data.
[[1;33mDEPEND[0m] Dependency failed for Local File Systems.
…
Welcome to emergency mode! After logging in, type "journalctl -xb" to viewsystem logs, "systemctl reboot" to reboot, "systemctl default" to try again to boot into default mode.
Give root password for maintenance
(or type Control-D to continue)

참고

"/data"는 사용되는 탑재 지점의 예입니다. 파일 시스템 탑재 지점에 대한 종속성 오류는 사용된 이름에 따라 달라집니다.

해결 방법

문제를 resolve 방법에는 두 가지가 있습니다.

VM Online 복구

직렬 콘솔 사용

  1. Azure Portal VM의 직렬 콘솔에 연결합니다.
  2. fstab을 다시 구성하려면 단일 사용자 모드에 대한 수동 액세스가 필요합니다. 이 단계는 사용 중인 Linux OS 유형 및 루트 계정에 대한 액세스에 따라 달라질 수 있습니다. 단일 사용자 모드 설명서에 따라 지원되는 각 Linux 파트너 이미지에 대한 단일 사용자 모드에 액세스합니다.
Fstab 문제 해결 단계
  1. vm이 단일 사용자 모드로 부팅되면 즐겨 찾는 텍스트 편집기를 사용하여 fstab 파일을 엽니다.

    vi /etc/fstab
    
  2. 에서 나열된 파일 시스템을 검토합니다 /etc/fstab. fstab 파일의 각 줄은 VM이 시작될 때 탑재되는 파일 시스템을 나타냅니다. fstab 파일의 구문에 대한 자세한 내용은 명령을 실행합니다 man fstab . 부팅 실패 문제를 해결하려면 탑재에 실패한 파일 시스템의 항목을 검토합니다. 구조와 콘텐츠 모두에서 올바른지 확인하기 위해 각 줄을 검토하는 것이 좋습니다. fstab 파일을 올바르게 관리하기 위해 고려해야 할 몇 가지 사항은 다음과 같습니다.

    • 각 줄의 필드는 탭 또는 공백으로 구분됩니다. 빈 줄은 무시됩니다. 첫 번째 문자로 숫자 기호(#)가 있는 줄은 주석입니다. 주석 처리된 줄은 fstab 파일에 남아 있을 수 있지만 처리되지는 않습니다. 줄을 제거하는 대신 확실하지 않은 fstab 줄을 주석으로 표시하는 것이 좋습니다.

    • 파일 시스템 파티션의 UUID를 사용하여 Azure VM에 데이터 디스크를 탑재합니다. 파일 시스템의 UUID를 확인하려면 명령을 실행합니다 blkid . 구문에 대한 자세한 내용은 명령을 실행합니다 man blkid . fstab 파일의 UUID 항목 예:

      UUID=<UUID number here>  /data      xfs    defaults,nofail 0  0
      
    • nofail 파일 시스템 항목(데이터 디스크)의 옵션을 사용하여 해당 항목에 대한 파티션에서 오류가 발생한 후에도 시작을 계속할 수 있습니다. 이 nofail 옵션은 파일 시스템이 손상되었거나 시작 시 VM이 없는 경우에도 VM이 시작되는지 확인하는 데 도움이 됩니다.

  3. 변경 내용을 fstab 파일에 저장합니다.

  4. fstab 항목을 변경한 후 모범 사례로 사용합니다 mount -a . 그러면 fstab 구성이 다시 실행되고 사용자에게 기존 구문 또는 항목 오류를 알립니다.

  5. 구문과 항목이 확인되면 아래 명령을 사용하여 vm을 다시 부팅합니다.

    reboot -f
    
  6. 항목 주석 또는 수정에 성공한 경우 시스템은 포털에서 bash 프롬프트에 도달해야 합니다. VM에 연결할 수 있는지 확인합니다.

참고

vm을 다시 부팅하는 "ctrl+x" 명령을 사용할 수도 있습니다.

오프라인으로 VM 복구

VM 직렬 콘솔 액세스를 사용할 수 없는 경우 대체 솔루션은 VM을 오프라인으로 복구하는 것입니다. 오프라인 접근 방식을 사용하는 방법에는 두 가지가 있습니다.

ALAR(Azure Linux 자동 복구) 사용

ALAR(Azure Linux 자동 복구) 스크립트는 Azure Virtual Machine 복구 명령을 사용하여 Linux VM 복구에 설명된 VM 복구 확장의 일부입니다. ALAR는 문제를 포함한 /etc/fstab 여러 복구 시나리오의 자동화를 다룹니다.

ALAR 스크립트는 복구 확장 run 명령 및 해당 --run-id 옵션을 사용합니다. 자동화된 복구에 대한 script-id는 linux-alar2입니다. 오프라인 ALAR 접근 방식을 통해 fstab 오류를 자동화하려면 다음 단계를 구현합니다.

az vm repair create --verbose -g centos7 -n cent7 --repair-username rescue --repair-password 'password!234' --copy-disk-name  repairdiskcopy
az vm repair run --verbose -g centos7 -n cent7 --run-id linux-alar2 --parameters fstab --run-on-repair
az vm repair restore --verbose -g centos7 -n cent7

참고

리소스 그룹 이름 "centos7, vm name "cent7", --copy-disk-name "repairdiskcopy"는 예제이며 값이 그에 따라 변경되어야 합니다.

fstab 복구 스크립트는 원래 파일의 백업을 수행하고 시스템을 부팅할 필요가 없는 /etc/fstab 파일의 모든 줄을 제거합니다. OS를 성공적으로 시작한 후 fstab을 다시 편집하고 이전에 시스템을 다시 부팅할 수 없었던 오류를 수정합니다.

또는 복구 vm이 만들어지면 복구 vm에 수동으로 로그인하고, OS 디스크의 연결된 복사본을 탑재하고, fstab 파일을 변경하여 변경 내용을 구현할 수도 있습니다. 아래 단계를 따릅니다.

  • 명령을 사용하여 복구 VM을 만듭니다 az vm repair create .
  • 구조 VM에서 연결된 OS 디스크의 파일 시스템에 탑재하고 크로트하려면 자세한 chroot 지침을 따릅니다.
  • 다음으로, 위와 동일한 fstab 문제 해결 단계를 수행 합니다.
  • 변경 내용이 적용 az vm repair restore 되면 명령을 사용하여 원래 VM과 자동 OS 디스크 교환을 수행할 수 있습니다.

수동 메서드 사용

직렬 콘솔 및 ALAR 접근 방식이 모두 가능하지 않거나 실패하는 경우 복구를 수동으로 수행해야 합니다. 다음 단계에 따라 OS 디스크를 복구 VM에 수동으로 연결하고 OS 디스크를 원래 VM으로 다시 교환합니다.

OS 디스크가 복구 VM에 성공적으로 연결되면 자세한 chroot 지침 에 따라 연결된 OS 디스크의 파일 시스템에 탑재하고 크로트합니다. 그런 다음 fstab 문제 해결 단계를 구현하여 문제가 있는 OS 디스크의 fstab 파일을 적절하게 변경합니다.

도움을 요청하십시오.

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