fstab 오류로 인한 Linux VM 부팅 문제 해결
적용 대상: ✔️ Linux VM
참고
이 문서에서 참조하는 CentOS는 Linux 배포이며 EOL(수명 종료)에 도달합니다. 사용 및 계획을 적절하게 고려하세요. 자세한 내용은 CentOS 수명 종료 지침을 참조 하세요.
Linux 파일 시스템 테이블인 fstab은 시스템 부팅 프로세스 중에 특정 파일 시스템이 검색되고 순서대로 탑재되는 규칙을 구성하도록 설계된 구성 테이블입니다.
이 문서에서는 잘못된 fstab 구성으로 인해 부팅 문제가 발생할 수 있는 여러 조건에 대해 설명하고 문제 해결 지침을 제공합니다.
fstab 잘못된 구성으로 인해 VM(가상 머신) 부팅 문제가 발생할 수 있는 몇 가지 일반적인 이유는 다음과 같습니다.
- 기존 파일 시스템 이름은 파일 시스템의 UUID(Universally Unique Identifier) 대신 사용됩니다.
- 잘못된 UUID가 사용됩니다.
- fstab 구성 내에서 옵션 없이 연결되지 않은 디바이스에
nofail
대한 항목이 있습니다. - fstab 구성 내의 잘못된 항목입니다.
fstab 문제 식별
Azure Portal의 부팅 진단 블레이드 내의 직렬 로그에서 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
는 사용된 탑재 지점의 예입니다. 파일 시스템 탑재 지점에 대한 종속성 오류는 사용된 이름에 따라 달라집니다.
해결 방법
이 문제를 해결하는 다음 두 가지 방법이 있습니다.
- 온라인으로 VM 복구
- 오프라인으로 VM 복구
온라인으로 VM 복구
직렬 콘솔 사용
- Azure Portal에서 VM의 직렬 콘솔에 연결합니다.
- fstab을 다시 구성하려면 단일 사용자 모드에 대한 수동 액세스가 필요합니다. 이 단계는 사용되는 Linux OS 유형과 루트 계정에 대한 액세스 권한에 따라 달라질 수 있습니다. 단일 사용자 모드 설명서에 따라 지원되는 각 Linux 파트너 이미지에 대한 단일 사용자 모드에 액세스합니다.
Fstab 문제 해결 단계
VM이 단일 사용자 모드로 부팅되면 즐겨 찾는 텍스트 편집기를 사용하여 fstab 파일을 엽니다.
vi /etc/fstab
에서 나열된 파일 시스템을 검토합니다
/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이 시작되도록 하는 데 도움이 됩니다.
변경 내용을 fstab 파일에 저장합니다.
fstab 항목을 변경한 후 모범 사례로 사용합니다
mount -a
. 그러면 fstab 구성을 다시 실행하고 사용자에게 기존 구문 또는 항목 오류를 알립니다.구문 및 항목이 확인되면 다음 명령을 사용하여 VM을 다시 부팅합니다.
reboot -f
항목 주석 또는 수정에 성공한 경우 시스템은 포털에서 bash 프롬프트에 도달해야 합니다. VM에 연결할 수 있는지 확인합니다.
참고
VM을
ctrl+x
다시 부팅하는 명령을 사용할 수도 있습니다.
오프라인으로 VM 복구
VM 직렬 콘솔 액세스를 사용할 수 없는 경우 대체 솔루션은 VM을 오프라인으로 복구하는 것입니다. 오프라인 접근 방식을 사용하는 방법에는 두 가지가 있습니다.
ALAR(Azure Linux 자동 복구) 사용
ALAR(Azure Linux 자동 복구) 스크립트는 Azure Linux ALAR(자동 복구)를 사용하여 Linux VM을 수정하는 데 설명된 VM 복구 확장의 일부입니다. ALAR는 문제를 포함하여 /etc/fstab
여러 복구 시나리오의 자동화를 다룹니다.
ALAR 스크립트는 복구 확장을 repair-button
사용하여 fstab 문제를 해결합니다 --button-command fstab
. 이 매개 변수는 자동화된 복구를 트리거합니다. 다음 단계를 구현하여 오프라인 ALAR 접근 방식을 통해 fstab 오류를 자동화합니다.
az extension add -n vm-repair
az extension update -n vm-repair
az vm repair repair-button --button-command 'fstab' --verbose $RGNAME --name $VMNAME
참고
그에 따라 리소스 그룹 이름 $RGTEST
및 VM 이름을 $VMNAME
바꿉니다.
- 복구 VM 스크립트는 ALAR 스크립트와 함께 일시적으로 리소스 그룹, 복구 VM 및 영향을 받는 VM의 OS 디스크 복사본을 만듭니다. 원래
/etc/fstab
파일을 백업하고 시스템을 부팅하는 데 필요하지 않은 데이터 파일 시스템 항목을 제거하거나 주석 처리하여 수정합니다. - OS가 성공적으로 시작되면 파일을 검토하고 편집
/etc/fstab
하여 적절한 재부팅을 방지할 수 있는 오류를 수정합니다. - 마지막으로 스크립트는
repair-button
복구 VM을 포함하는 리소스 그룹을 자동으로 삭제합니다.
수동 메서드 사용
직렬 콘솔과 ALAR 접근 방식이 모두 가능하지 않거나 실패하는 경우 복구를 수동으로 수행해야 합니다. OS 디스크를 복구 VM에 수동으로 연결하고 OS 디스크를 원래 VM으로 다시 교환하려면 다음 단계를 수행합니다.
OS 디스크가 복구 VM에 성공적으로 연결되면 자세한 chroot 지침 에 따라 연결된 OS 디스크의 파일 시스템에 탑재하고 크로트합니다. 그런 다음 fstab 문제 해결 단계를 구현하여 문제가 있는 OS 디스크의 fstab 파일을 적절하게 변경합니다.
도움을 요청하십시오.
질문이 있거나 도움이 필요한 경우 지원 요청을 생성하거나Azure 커뮤니티 지원에 문의하세요. Azure 피드백 커뮤니티에 제품 피드백을 제출할 수도 있습니다.