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


fstab(파일 시스템 테이블)은 시스템 재부팅 시 Linux VM의 디스크 파티션, 파일 시스템, 파일 공유 마운트가 저장되는 방식을 정의하는 데 사용되는 구성 파일입니다.

이 문서에서는 잘못된 fstab 구성으로 인해 부팅 문제가 발생할 수 있는 여러 조건을 간략하게 설명하고 문제 해결을 위한 문제 해결 조언을 제공합니다.

fstab 구성 오류의 일반적인 문제 몇 가지는 다음과 같습니다.

  • fstab 구성 파일에서 구문 오류
  • 잘못된 UUID
  • 연결되지 않거나 사용할 수 없는 기기에 대한 항목 있음
  • SUSE 또는 RHEL 이미지의 xfs 파일 시스템 유형에 대한 지원 중단된 마운트 옵션(예: nobarrier)

시작하기 전에

  • Cloud Logging에서 직렬 포트 출력을 로깅하려면 Cloud Logging에 익숙해야 합니다.
  • 아직 인증을 설정하지 않았다면 설정합니다. 인증은 Google Cloud 서비스 및 API에 액세스하기 위해 ID를 확인하는 프로세스입니다. 로컬 개발 환경에서 코드 또는 샘플을 실행하려면 다음과 같이 Compute Engine에 인증하면 됩니다.

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

      로컬 개발 환경에서 이 페이지의 REST API 샘플을 사용하려면 gcloud CLI에 제공하는 사용자 인증 정보를 사용합니다.

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      자세한 내용은 Google Cloud 인증 문서의 REST 사용 인증을 참조하세요.

fstab 문제 식별

부팅 문제의 경우 Linux VM의 직렬 콘솔에서 부팅 로그를 확인하는 것이 좋습니다. fstab 관련 문제임을 나타내는 오류 메시지가 표시되면서 VM이 긴급 모드로 전환됩니다.

  [K[[1;31m TIME [0m] Timed out waiting for device dev-incorrect.device.
  [[1;33mDEPEND[0m] Dependency failed for /distribution.
  [[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)
  

오류 메시지에 따라 /distribution 파일 시스템에 대한 종속 항목 오류가 있습니다. 파일 시스템 마운트 지점의 종속 항목 오류는 사용된 파일 시스템 이름에 따라 달라집니다.

해결 방법

다음 옵션을 사용하여 Google Cloud에서 호스팅되는 Linux VM에서 fstab 오류를 해결합니다. 수동 방법을 사용하는 것보다 직렬 콘솔을 사용하여 문제를 더 빠르게 해결할 수 있습니다.

fstab 문제를 해결하기 위해 다음 방법을 사용하려면 VM에 대한 직렬 포트 액세스를 사용 설정해야 합니다.

옵션 1: 긴급 모드에서 직렬 콘솔을 사용하여 VM에 로그인

  1. Google Cloud 콘솔에서 VM의 직렬 콘솔에 로그인합니다. 직렬 콘솔

  2. 현재 긴급 모드에서 루트 비밀번호를 입력하여 VM에 액세스합니다.

  3. 원하는 텍스트 편집기를 사용하여 fstab 파일을 엽니다. 필요에 따라 변경하고 fstab 파일에 변경사항을 저장합니다. 다음 예시에서는 vi 편집기가 사용됩니다.

    vi /etc/fstab

    Fstab 파일

    이전 예시에서 /distribution의 기기는 VM에서 분리되었습니다. 파일 시스템을 참조하는 줄을 주석 처리하거나 /distribution 마운트 지점의 fstab 항목을 삭제합니다.

    fstab 구성 및 구문에 대한 자세한 내용은 man fstab를 참조하세요.

  4. 파일을 저장하고 편집기를 종료합니다. vi 편집기를 사용하는 경우 ESC :wq!를 사용하여 편집기를 저장하고 종료합니다.

  5. 프롬프트에 reboot를 입력하여 부팅 프로세스를 재개합니다.

  6. 문제가 성공적으로 해결된 후에는 VM 부팅 프로세스가 완료되고 직렬 콘솔에 로그인 프롬프트가 나타납니다.

  7. SSH를 사용하여 VM에 다시 로그인할 수 있는지 확인합니다.

옵션 2 - 직렬 콘솔에서 단일 사용자 모드 사용

루트 비밀번호가 설정되지 않은 경우에 이 옵션을 사용할 수 있습니다.

기본 요건: grub 구성 파일의 GRUB_TIMEOUT 매개변수를 0이 아닌 값으로 설정해야 합니다. 일반적으로 이 파일은 /etc/default/grub에 있으나 일부 이전 배포판에서는 비표준 디렉터리에 있을 수도 있습니다.

  1. Google Cloud 콘솔의 VM 인스턴스 페이지로 이동합니다. VM 인스턴스로 이동

  2. Google Cloud 콘솔에서 가상 머신의 직렬 콘솔에 로그인합니다. 직렬 콘솔2

  3. Google Cloud 콘솔에서 가상 머신의 재설정을 클릭합니다.

    파일 재설정

  4. 직렬 콘솔 창에서 grub 화면이나 메뉴에서 일시중지할 화살표 키를 클릭하여 부팅 프로세스를 중단합니다.

  5. grub 부트 로더 화면의 커널 목록에서 커널을 선택하고 키보드의 e 키를 누릅니다.

    부트로더 파일

  6. 커널 줄 끝에 rd.break 매개변수를 추가하고 ctrl x 키를 누릅니다. 이렇게 하면 VM을 단일 사용자 모드로 부팅할 수 있습니다.

    부트로더 메뉴

  7. 루트 파일 시스템을 읽기 쓰기 모드로 마운트합니다.

  8. 분석하고 필요한 경우 변경한 후 fstab 파일을 저장합니다. 구성 및 구문에 대한 자세한 내용을 보려면 man fstab를 사용합니다. 원하는 텍스트 편집기를 사용하여 fstab 파일을 엽니다. 다음 예시에서는 vi 편집기가 사용됩니다.

    vi /etc/fstab

    Fstab 파일2

    이 예시에서는 /distribution의 기기가 VM에서 분리되었으므로 줄을 주석 처리하거나 /distribution 마운트 지점의 fstab 항목을 삭제합니다.

  9. 파일을 저장하고 편집기를 종료합니다. vi 편집기를 사용하는 경우 ESC :wq!를 사용하여 저장하고 fstab를 종료합니다.

  10. 프롬프트에 reboot를 입력하여 부팅 프로세스를 재개합니다.

  11. 문제가 성공적으로 해결된 후에는 VM 부팅 프로세스가 완료되고 직렬 콘솔에 로그인 프롬프트가 표시되어야 합니다.

  12. SSH를 사용하여 VM에 로그인할 수 있는지 확인합니다.

옵션 3 - VM 복구

루트 비밀번호가 설정되지 않았거나 단일 사용자 모드를 사용할 수 없는 경우에 이 옵션을 사용할 수 있습니다.

자세한 내용은 액세스할 수 없는 VM 복구를 참조하세요.