fstab エラーに起因する Linux VM の起動に関する問題のトラブルシューティング


fstab(ファイル システム テーブル)は、システムの再起動後も Linux VM のディスク パーティション、ファイル システム、ファイル共有のマウントを維持する方法を定義するために使用される構成ファイルです。

このドキュメントでは、不適切な fstab 構成が起動の問題の原因となる複数の状況について概説し、問題を解決するためのトラブルシューティングのアドバイスを提供します。

fstab の構成ミスに関する一般的な問題は次のとおりです。

  • fstab 構成ファイルの構文エラー
  • 間違った UUID
  • 接続されていないまたは使用できないデバイスのエントリがある
  • SUSE または RHEL イメージの xfs ファイル システムタイプの nobarrier などのマウント オプションが非推奨になる

始める前に

  • Cloud Logging でシリアルポート出力をロギングする場合は、Cloud Logging に習熟します。
  • まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように Compute Engine に対する認証を行います。

    このページのサンプルをどのように使うかに応じて、タブを選択してください。

    コンソール

    Google Cloud コンソールを使用して Google Cloud サービスと API にアクセスする場合、認証を設定する必要はありません。

    gcloud

    1. Google Cloud CLI をインストールし、次のコマンドを実行して初期化します。

      gcloud init
    2. デフォルトのリージョンとゾーンを設定します

    REST

    このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。

      Google Cloud CLI をインストールし、次のコマンドを実行して初期化します。

      gcloud init

fstab の問題を特定する

起動に関する問題については、Linux VM のシリアル コンソールでブートログを確認することを強くおすすめします。VM が緊急モードになり、fstab に問題があることを示すエラー メッセージが表示されます。

  [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 にアクセスするには、root パスワードを入力します。

  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 - シリアル コンソールでシングル ユーザーモードを使用する

このオプションは、root パスワードが設定されていない場合に使用できます。

前提条件: grub 構成ファイルの GRUB_TIMEOUT パラメータがゼロ以外の値に設定されている必要があります。通常、このファイルは /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 にログインできることを確認します。