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 ファイルを保持したまま削除する手順が必要となります。
- 対象の仮想マシンを VHD ファイルを保持したまま削除します
- 他の仮想マシンに VHD ファイルをデータディスクとして接続します
- データディスクをマウントして復旧作業を行います
- 2 の手順で設定したディスクの接続を解除します
- 復旧済みの VHD ファイルから仮想マシンを作成します
ご注意事項
仮想マシンをいったん削除する手順となるため、以下の点にご注意ください。
- 診断ログやアラートルールなど、Azure 上の設定は再設定が必要となりますので、事前に設定内容をメモしておくことおすすめします。
- 仮想マシンの一時ディスク (※2) に保存されているデータが消失します。保存が必要なデータは、一時ディスク以外に移動してください。
- 仮想マシンの再作成後も同じIP アドレスを使用する場合には、IPアドレスの割り当てを「静的」に設定しておき(※3)、仮想マシン再作成時にそのIPアドレス を割り当てる必要があります。
- 必要に応じて、事前に仮想マシンのバックアップを取得してください。
- VHD ファイルからの仮想マシンの作成手順は、仮想マシンの構成によってカスタマイズが必要となります。
手順
- 対象の仮想マシンを VHD ファイルを保持したまま削除します
- Azure ポータルを開きます
- 左側のメニューより「Virtual Machines」をクリックします
- 仮想マシンの一覧より対象の仮想マシンをクリックします
- 「設定」メニューより「ディスク」をクリックします
- OS ディスクおよびデータ ディスクをクリックして、VHD ファイルの情報をメモします。
- 3 の直後の画面に戻り、画面上部の「削除」をクリックします
- 「仮想マシン ×× を削除しますか?」とメッセージが表示されますので「はい」をクリックします
- 他の仮想マシンに VHD ファイルをデータディスクとして接続します
- データディスクをマウントして復旧作業を行います
上記 2 の 2 の手順で選択した仮想マシンに SSH 接続します
以下のコマンドを実行し、追加されたディスクの識別子 (※5) を確認します
例) $ sudo grep SCSI /var/log/messages
追加したディスクをマウントするディレクトリを作成します
例) $ sudo mkdir /datadrive
追加したディスクをマウントします
例)$ sudo mount /dev/sdc1 /datadrive
マウントポイント配下 (上記の例では/datadrive) にあるファイルを修正してトラブルシュートします
復旧作業が完了したらディスクをアンマウントします
例)$ sudo umount /datadrive
- 2 の手順で設定したディスクの接続を解除します
- 復旧済みの VHD ファイルから仮想マシンを作成します
- 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:復旧対象の仮想マシンと復旧作業を行う仮想マシンが同じイメージから作成されている場合、まれにこのようなエラーが発生します。異なるイメージから作成した仮想マシンからマウントいただき、エラーが解消するかお試しください。