Linux OS が起動しない時のトラブル シューティングについて (ARM編)

最終更新日:2017/4/27 画面差し替え

こんにちは。Microsoft Azure テクニカル サポートの乾です。

今回は、Microsoft Azure 上で Linux OS が起動しなくなってしまった場合のトラブル シューティング についてご紹介します。なお、本記事はリソース マネージャー デプロイ モデルを対象しており、クラシック デプロイ モデルの仮想マシンの場合は、Linux OSが起動しないときのトラブルシューティングについて (ASM編) をご参照ください。
※本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。

利用シーン


以下のような原因で Linux OS が正常に起動しなくなり、Microsoft Azure 上で仮想マシンの復旧が必要となった場合に、本トラブルシューティングの手順をご活用いただくことが可能です。

 

  • /etc/fstab に誤った内容を編集して、仮想マシンの再起動を行った場合
  • コンソール ログ (※1) に fsck の実行が必要であるメッセージが記録されている場合
  • パッケージのアップデートを実施した後、仮想マシンが起動できなくなった場合

 

概要


問題が発生している仮想マシンの VHD ファイルを他の仮想マシンのデータ デ ィスクとして接続することで復旧が可能です。データ ディスクとして接続するために、いったん仮想マシンを VHD ファイルを保持したまま削除する手順が必要となります。

  1. 対象の仮想マシンを VHD ファイルを保持したまま削除します
  2. 他の仮想マシンに VHD ファイルをデータディスクとして接続します
  3. データディスクをマウントして復旧作業を行います
  4. 2 の手順で設定したディスクの接続を解除します
  5. 復旧済みの VHD ファイルから仮想マシンを作成します

 

ご注意事項


仮想マシンをいったん削除する手順となるため、以下の点にご注意ください。

  • 診断ログやアラートルールなど、Azure 上の設定は再設定が必要となりますので、事前に設定内容をメモしておくことおすすめします。
  • 仮想マシンの一時ディスク (※2) に保存されているデータが消失します。保存が必要なデータは、一時ディスク以外に移動してください。
  • 仮想マシンの再作成後も同じIP アドレスを使用する場合には、IPアドレスの割り当てを「静的」に設定しておき(※3)、仮想マシン再作成時にそのIPアドレス を割り当てる必要があります。
  • 必要に応じて、事前に仮想マシンのバックアップを取得してください。
  • VHD ファイルからの仮想マシンの作成手順は、仮想マシンの構成によってカスタマイズが必要となります。

 

手順


  1. 対象の仮想マシンを VHD ファイルを保持したまま削除します
    1. Azure ポータルを開きます
    2. 左側のメニューより「Virtual Machines」をクリックします
    3. 仮想マシンの一覧より対象の仮想マシンをクリックします
    4. 「設定」メニューより「ディスク」をクリックします
    5. OS ディスクおよびデータ ディスクをクリックして、VHD ファイルの情報をメモします。osdisk
    6. 3 の直後の画面に戻り、画面上部の「削除」をクリックしますdelete
    7. 「仮想マシン ×× を削除しますか?」とメッセージが表示されますので「はい」をクリックします

 

  1. 他の仮想マシンに VHD ファイルをデータディスクとして接続します
    1. 上記 1 の 3 の仮想マシンの一覧が選択されている画面に戻ります
    2. 同じリージョンでご利用いただいている Linux の仮想マシン (※4) をクリックします(ない場合はお手数ですが、作成ください)
    3. 「設定」メニューより「ディスク」をクリックします
    4. 「データディスクの追加」をクリックしますadddatadisk
    5. 「ソースの種類」で「既存の BLOB」を選択し、「ソース BLOB」で上記 1 の 5 の手順でメモした VHD ファイルを選択しますdatadiisk
    6. 「OK」をクリックします
    7. 「データディスク」に選択した VHD ファイルが追加されていることを確認します

 

  1. データディスクをマウントして復旧作業を行います
    1. 上記 2 の 2 の手順で選択した仮想マシンに SSH 接続します

    2. 以下のコマンドを実行し、追加されたディスクの識別子 (※5) を確認します

       例) $ sudo grep SCSI /var/log/messages
      
    3. 追加したディスクをマウントするディレクトリを作成します

       例) $ sudo mkdir /datadrive
      
    4. 追加したディスクをマウントします

       例)$ sudo mount /dev/sdc1 /datadrive
      
    5. マウントポイント配下 (上記の例では/datadrive) にあるファイルを修正してトラブルシュートします

    6. 復旧作業が完了したらディスクをアンマウントします

       例)$ sudo umount /datadrive
      

 

  1. 2 の手順で設定したディスクの接続を解除します
    1. 上記 2 の 4 の画面に戻ります
    2. 「設定」メニューより「ディスク」をクリックします
    3. 「データ ディスク」の一覧より 2 の手順で接続したディスクをクリックします
    4. 「切断」をクリックしますdetach
    5. 「ディスク ×× を切断しますか?」とメッセージが表示されますので「はい」をクリックします
    6. 「データディスク」に切断した VHD ファイルが表示されなくなったことを確認します

 

  1. 復旧済みの VHD ファイルから仮想マシンを作成します
    1. IaaS v2 (ARM) で特殊化イメージの仮想マシンをテンプレートから作成する方法 の手順に沿って、作成してください。

 

補足


  • ※1 コンソールログのご確認方法は Linux OSが起動しないときのトラブルシューティングについて (ASM編)の「ご参考:コンソール出力について」をご参照ください
  • ※2 一時ディスクは通常、Azure Linux Agent によって管理され、/mnt/resource (または Ubuntu イメージでは /mnt ) に自動的にマウントされます。
  • ※3 IP アドレスの割り当ての変更手順は Azure VM のメンテナンス FAQ の「Q. Azureメンテナンスによる再起動において、動的に設定しているパブリック IP が書き換わるようなことはないということでしょうか。」をご参照ください。
  • ※4 復旧対象の仮想マシンと同じイメージを利用して作成した仮想マシンに VHD ファイルを接続する場合、データ ディスクのマウント時に UUID が重複しているためのエラーが発生する場合がございます。異なるイメージで作成した仮想マシンに VHD ファイルを接続いただくことをおすすめしています。
  • ※5 ディスクの識別子の確認方法などについては、データ ディスクを Linux 仮想マシンに接続する方法にも記載がございますので、あわせてご参照ください。

 

FAQ


Q: この記事の手順に沿って、仮想マシンを削除した場合に、仮想マシンの OS ディスクならびにデータ ディスクとして利用している VHD も一緒に削除されますか?
A: いいえ、仮想マシンを削除しても VHD は削除されません。ストレージアカウントに保存されている VHD から仮想マシンを再作成いただくことが可能です。

Q: VHD から、可用性セットを構成した仮想マシンを作成したい場合は、どのようにすればよいでしょうか。
A: リソース マネージャー (ARM) 環境で既存の VM を既存の可用性セットに追加する方法の手順をご参照ください。

Q: 「3.データディスクをマウントして復旧作業を行います 」の 4 の手順でマウントする際に以下のようなエラーが発生しました。どのように対処すればよいでしょうか。

 
[azureuser@vmname ~]$ sudo mount /dev/sdc1 /datadrive
mount: wrong fs type, bad option, bad superblock on /dev/sdc1,
       missing codepage or helper program, or other error

       In some cases useful info is found in syslog - try
       dmesg | tail or so.

dmesg | tail の結果

 
[ XXXX.XXXXXX] XFS (sdc1): Filesystem has duplicate UUID XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX - can't mount

A:復旧対象の仮想マシンと復旧作業を行う仮想マシンが同じイメージから作成されている場合、まれにこのようなエラーが発生します。異なるイメージから作成した仮想マシンからマウントいただき、エラーが解消するかお試しください。