ログインできないec2インスタンスを調査する

2015.02.07

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

サーバを運用しているといろいろなことが起こります。
今回はなんらかのトラブルによりインスタンスが正常に起動しない、
ログインできなくなった場合の対応方法をご紹介します。

障害インスタンンスはAmazon LinuxでrootボリュームはEBSということで話を進めていきます。

skitch

障害インスタンスを停止する

正常に起動しない、ログインができないインスタンスをstopします。
サーバにログインできないのでマネジメントコンソールやAPIでstopします。

skitch

障害インスタンスのルートボリュームをデタッチする

ルートボリュームのEBS IDを確認してVolumesへ移動します。
・DescriptionのRoot Device 「/dev/xvda」をクリック
 また後でアタッチし直すのでRoot Device名はメモしておきます。

skitch

 

・EBS ID をクリック

skitch

 

・Volumesに移動します。

skitch

 

・Actionsからデタッチします。
 後でわからなくならないようにボリュームのNameタグに名前つけておくといいですよ。

skitch

 

・Yes,Detachをクリック

skitch

・StateがavailableになればOKです。

skitch

調査用のインスタンスにアタッチする

同じアベイラビリティゾーン内に調査用のインスタンスを新規に起動して
先ほどデタッチしたボリュームをアタッチします。

・Actionsからアタッチします。

skitch

・アタッチしたいインスタンスを選択します。
調査用インスタンスを選択し
Deviceは今回はそのまま「/dev/sdf」とします。
Attachをクリック

skitch

・Stateがin-useになればOKです。

skitch

調査用インスタンスにログインしてアタッチしたボリュームをマウントする

調査用のインスタンスにログインしますがこの時点ではまだアタッチしたボリュームはマウントされていません。

[ec2-user@ip-x-x-x-x ~]$ df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/xvda1 7.8G 1.1G 6.7G 14% /
devtmpfs 491M 64K 491M 1% /dev
tmpfs 499M 0 499M 0% /dev/shm

そこで先ほどアタッチしたボリュームをマウントします。
アタッチしたデバイス名は「/dev/sdf」でした。

・「/dev/sdf」を確認してみます。
「/dev/sdf」「/dev/sdf1」はそれぞれ「/dev/xvdf」「/dev/xvdf1」のリンクになっています。

[ec2-user@ip-x-x-x-x ~]$ ll /dev/ | grep sdf
lrwxrwxrwx 1 root root 4 2月 7 03:16 sdf -> xvdf
lrwxrwxrwx 1 root root 5 2月 7 03:16 sdf1 -> xvdf1


・インスタンスにアタッチされたブロックデバイスを一覧を確認します。
「xvdf1」がdisk「xvdf」のパーティションです。

[ec2-user@ip-x-x-x-x ~]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 8G 0 disk
└─xvda1 202:1 0 8G 0 part /
xvdf 202:80 0 8G 0 disk
└─xvdf1 202:81 0 8G 0 part

それではマウントをしていきましょう。
・マウントポイントを作成

[ec2-user@ip-x-x-x-x ~]$ sudo mkdir /mnt/ebs

・マウント

[ec2-user@ip-x-x-x-x ~]$ sudo mount /dev/xvdf1 /mnt/ebs
[ec2-user@ip-x-x-x-x ~]$ df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/xvda1 7.8G 1.1G 6.7G 14% /
devtmpfs 491M 64K 491M 1% /dev
tmpfs 499M 0 499M 0% /dev/shm
/dev/xvdf1 7.8G 1.1G 6.7G 14% /mnt/ebs

調査しよう

ここまできたらあとは調査可能です。
また保存したいデータなどの復旧もできますね。

設定の修正などを行い、障害を復旧させたら元のインスタンスにアタッチします。

アンマウントしてデタッチ

・アンマウント

[ec2-user@ip-x-x-x-x ~]$ sudo umount /mnt/ebs/
[ec2-user@ip-x-x-x-x ~]$ df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/xvda1 7.8G 1.1G 6.7G 14% /
devtmpfs 491M 64K 491M 1% /dev
tmpfs 499M 0 499M 0% /dev/shm

 デタッチですが調査用インスタンスを停止してからでも起動したままでも大丈夫です。

・デタッチする

手順は先ほどと同じです。Volumesから先ほどアタッチしたボリュームを選択しDetacch Volumeをクリック

skitch

・Yes Detachをクリック

skitch

・StateがavailableになればOKです。

skitch

 

元のインスタンスにアタッチする

・ActionsからAttach Volumeをクリック

skitch

 

・インスタンスを選択
Deviceは前回デタッチした時と同じ「/dev/xvda」にしてAttachをクリック

 

skitch

 

・Statusがin-useになったらOK

skitch

元のインスタンスを起動する

無事起動しましたね。

skitch

まとめ

今回はなんらかの原因によりインスタンスが正常に起動しない、サーバへログインが行えなくなった場合の調査方法を紹介しました。また「Instance status checks」がNGの場合はドキュメントに書いてある通り自分で調査する必要がありますのでこちらの調査方法も試してみてください。

・ドキュメント「ステータスチェックでインスタンスをモニタリングする

Instance status checksでは、個々のインスタンスのソフトウェアとネットワークの設定を監視します。これらのチェックでは、お客様が修復する必要のある問題が検出されます。インスタンスステータスチェックが失敗した場合、通常はお客様ご自身で(インスタンスの再起動、オペレーティングシステムの修正など)問題を修復する必要があります。