다음을 통해 공유


전체 OS 디스크로 인한 Azure Linux 가상 머신 부팅 문제 해결

적용 대상: ✔️ Linux VM

특정 상황 및 구성에서 전체 OS(운영 체제) 디스크로 인해 Azure Linux VM(가상 머신) 부팅 문제가 발생할 수 있습니다. 이 문서에서는 부팅 문제에 대한 몇 가지 원인과 솔루션을 제공합니다.

증상

정상적인 시스템 작업 중에 OS 디스크 또는 중요한 시스템 파티션이 가득 차면 다음과 같은 문제가 발생할 수 있습니다.

  • VM이 예기치 않게 종료됩니다.
  • VM이 성공적으로 부팅되지 않습니다.

필수 조건

부팅 문제를 해결하고 시스템 복구를 완료하려면 다음 요구 사항을 충족해야 합니다.

  • 디스크 스냅샷을 만들거나 일부 백업 및 복원 도구를 작동할 수 있는 권한입니다.

    이 문서에서는 데이터 또는 디스크가 변경되므로 VM을 이전 상태로 되돌리는 기능이 안전한 시스템 관리의 중요한 구성 요소입니다.

  • 사용하도록 설정되고 구성된 부팅 진단 입니다.

    이 구성을 사용하면 나중에 콘솔 로그의 스토리지를 검토하고 VM의 직렬 콘솔 인터페이스와 상호 작용할 수 있습니다.

  • 언제든지 구조 VM이 필요한 경우 VM을 만들 수 있는 권한입니다.

  • 디스크 교환이 필요한 경우 디스크를 만들고 분리하고 연결할 수 있는 권한이 필요합니다.

참고 항목

모든 요구 사항이 다음 시나리오에 적용되는 것은 아닙니다.

시나리오 1: VM이 예기치 않게 종료되고 부팅에 실패함

많은 보안 강화 관행은 시스템 유지 관리에 어려움을 초래할 수 있습니다. 감사 로그에 쓸 때 오류가 발생하면 하나의 일반적인 구성에서 시스템을 즉시 종료해야 합니다. 이 시나리오가 시스템 종료의 원인인지 확인하려면 다음 작업을 수행합니다.

  • 직렬 콘솔 로그에서 시스템 종료 메시지를 확인합니다.

    시스템이 부팅되면 "보안 감사 서비스 시작..."입니다. 메시지가 표시됩니다. 이 메시지는 서비스가 시작되었음을 나타내지 않습니다. 대신 VM이 즉시 종료로 전환되고 "전원이 꺼진" 메시지가 표시됩니다. 시스템이 실행 중이고 예기치 않게 종료되는 경우 직렬 콘솔에 "전원 중지" 메시지로 끝나는 순서대로 종료 프로세스가 표시될 수 있습니다. 예제로 다음 스크린샷을 참조하세요.

    직렬 콘솔의 '보안 감사 서비스 시작' 메시지 스크린샷

    직렬 콘솔의 '전원 끄기' 메시지 스크린샷

  • az vm repair 명령, 수동 복구 VM 또는 단일 사용자 모드를 사용하여 OS 디스크를 탑재합니다. 그런 다음 명령줄 도구를 사용하여 df 디스크 사용률을 검사하고 /var/log/audit 디렉터리가 포함된 디스크의 사용률이 100% 가까이인지 확인합니다.

  • az vm repair 명령, 수동 복구 VM 또는 단일 사용자 모드를 사용하여 OS 파일 시스템에 액세스하고 /etc/audit/auditd.conf 파일에 다음 구성이 포함되어 있는지 확인합니다.

    [root@linux /]# grep action /etc/audit/auditd.conf
    admin_space_left_action = HALT
    disk_full_action = HALT
    disk_error_action = HALT
    

해결 방법: 일시적으로 HALT 구성 사용 안 함

참고 항목

이 해결 방법이 작동하지 않거나 환경에 적합하지 않은 경우 해결 섹션으로 이동합니다.

감사된 구성으로 인해 감사 로그 실패 시 시스템 종료가 발생하는 경우 일시적으로 구성을 HALT 사용하지 않도록 설정하면 VM이 수정을 위해 전체 OS로 부팅할 수 있습니다.

이 일반적인 감사 문제 및 기타 몇 가지 일반적인 문제를 해결하려면 ALAR(Azure Linux 자동 복구) 도구의 감사 작업을 사용하여 Azure CLI에서 확장을 자동으로 실행 az vm repair 합니다. 동일한 절차를 수동으로 수행하려면 다음 단계를 수행합니다.

  1. OS 디스크의 스냅샷을 생성하여 복구 상태를 제공합니다.

  2. az vm repair 명령, 수동 복구 VM 또는 단일 사용자 모드를 사용하여 구성 파일에 액세스합니다.

  3. VM에서 파일을 백업하는 데 공간을 사용할 수 없으므로 현재 구성을 기록해 두세요.

  4. /etc/audit/auditd.conf 파일의 이전 구성을 다른 유효한 값SINGLE으로 HALT 변경합니다. 이 시나리오에서 값은 IGNORESUSPENDVM에서 사용되는 소프트웨어 버전에 대한 적절한 매개 변수를 제공하는 auditd.conf 파일의 Linux man 페이지에 나열된 값 또는 기타 값일 수 있습니다.

    [root@linux /]# grep action /etc/audit/auditd.conf
    admin_space_left_action = SUSPEND
    disk_full_action = SUSPEND
    disk_error_action = SUSPEND
    
  • 복구 VM을 사용하는 경우 탑재 해제의 지침에 따라 원래 가상 하드 디스크를 분리하여 OS 디스크 를 문제가 있는 VM으로 다시 교환하고 VM을 정상적으로 부팅해 봅니다. 단일 사용자 모드를 사용하는 경우 종료한 다음 VM이 다시 부팅됩니다.

  • VM이 완전히 부팅되면 파일 시스템을 찾아보고 명령줄 도구(예: df du및 )를 사용하여 공간을 확보합니다. /var/log/audit 디렉터리를 포함하는 파일 시스템의 약 10%가 좋은 초기 대상이어야 합니다.

문제가 해결되면 /etc/audit/auditd.conf 파일의 내용을 원래 값으로 되돌려 VM을 다시 부팅합니다.

시나리오 2: VM 디스크는 Azure에서 크기가 조정되지만 OS의 크기를 조정할 수 없으며 VM이 완전히 부팅되지 않습니다.

전체 디스크가 식별되고 OS 디스크 크기를 조정하기 위해 VM이 종료된 후 VM이 성공적으로 부팅되지 않을 수 있습니다. 이 시나리오는 OS가 다시 부팅할 때 루트(/) 파일 시스템의 크기를 자동으로 조정하려고 하는 일부 배포에서 혼동될 수 있습니다. 디스크가 가득 차면 프로세스에 파일 시스템을 확장할 여유 공간이 필요하기 때문에 크기 조정 작업이 실패할 수 있습니다. 여유 공간이 없으면 cloud-init가 실패할 수 있으며 VM은 부팅을 완료하지 않습니다.

이 문제를 식별하려면 직렬 콘솔에서 부팅 로그를 검토하고 다음 텍스트와 유사한 줄이 있는지 확인합니다.

[   15.384699] cloud-init[1142]: OSError: [Errno 28] No space left on device
[   15.384742] cloud-init[1142]: Original exception was:
[   15.384784] cloud-init[1142]: OSError: [Errno 28] No space left on device

특정 cloud-init 메시지가 반환된 가장 눈에 띄는 메시지가 아닐 수 있으므로 "[Errno 28] 장치에 공백이 남아 있지 않음" 텍스트 또는 유사한 "공백 없음" 메시지가 포함된 다른 줄을 찾습니다.

이 문제를 해결하려면 불필요한 데이터를 지우고 적은 양의 디스크 공간을 확보한 다음 파일 시스템을 확장합니다.

시나리오 3: VM 부팅하지만 서비스 오류로 인해 액세스할 수 없음

완전히 부팅되는 것처럼 보이는 VM에는 다음과 같은 문제가 있을 수 있습니다.

  • 부팅하는 동안 서비스 문제가 발생합니다.
  • Azure 에이전트를 사용할 수 없는 것 같습니다.
  • VM에 대한 연결이 실패할 수 있습니다.
  • 애플리케이션에 따라 VM이 오프라인으로 표시될 수 있습니다.

부팅하는 동안 "[Errno 28] 장치에 공간이 남아 있지 않음" 또는 다른 유형의 메시지와 같은 여러 메시지는 루트 파일 시스템 가득 찼음을 나타냅니다.

VM이 부팅되지만 사용할 수 없는 것으로 표시되는 경우 부팅 진단 내의 직렬 로그를 확인하여 부팅 메시지를 보거나 직렬 콘솔사용하여 VM과 상호 작용합니다. 공간이 부족한 경우 불필요한 데이터를 지워 공간을 확보하거나 디스크를 확장합니다.

콘솔 로그에 "ERROR ExtHandler /proc/net/route에 경로가 없음"이라는 많은 메시지가 포함된 경우 네트워킹 서비스를 완전히 시작할 수 없기 때문에 전체 OS 디스크도 원인일 수 있습니다.

해결

다음 해결 방법은 이전 시나리오에 적용됩니다.

해결 방법 1: 불필요한 데이터 지우기

  1. 시스템이 정상적으로 부팅되지 않으므로 az vm repair 명령, 수동 복구 VM 또는 단일 사용자 모드를 사용하여 OS 디스크 및 파티션에 액세스할 수 있습니다.

  2. 표준 Linux 도구 및 명령을 사용하여 큰 파일 및 디렉터리를 식별합니다.

    • du -ks /* | sort -n - 한 위치에서 가장 많은 공간을 사용하는 파일 또는 디렉터리를 찾습니다. 일부 큰 데이터가 발견될 때까지 가장 큰 보고된 디렉터리에서 반복합니다.

    • ls -altSr /var/log - 크기순으로 오름차순으로 디렉터리의 내용을 나열합니다.

    • find / -size +500M -exec ls -alFh {} \; - 큰 개별 파일을 찾습니다. 500M 정리할 가장 효과적인 파일을 찾기 위해 필요에 따라 값을 몇 메가바이트 또는 기가바이트로 조정합니다.

  3. 이전 로그, 잊어버린 백업 및 유사한 파일과 같이 불필요하게 식별할 수 있는 파일을 제거합니다.

  4. 적절한 양의 공간이 지워지면 약 10% 사용 가능한 디스크를 대상으로 지정하고 시스템을 다시 부팅합니다.

해결 방법 2: OS 파일 시스템 확장

OS 파일 시스템으로부터 데이터를 지울 수 없는 경우 중요한 OS 볼륨이 포함된 디스크를 확장하는 것이 좋습니다. 자세한 내용은 Linux VM에서 가상 하드 디스크 확장을 참조 하세요.

다음 단계

전체 OS 디스크 로 인해 특정 부팅 오류가 Linux 부팅 문제가 아닌 경우 추가 문제 해결을 위해 Azure Linux 가상 머신 부팅 오류 문제를 참조하세요.

도움을 요청하십시오.

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