LoginSignup
13
14

More than 5 years have passed since last update.

AWSのLinuxインスタンスにログインできなくなった時の対処法

Last updated at Posted at 2014-09-22

起動ディスクのボリュームを別のインスタンスに繋いで編集後に戻す方法を解説します。
分かる人は、この一文だけでOKと思いますが、幾つか引っかかったので自分用の備忘録もかねてメモします。
(もっと良い方法があれば教えてください m(_ _)m )

検索するとAmazonのサイトでも同じ方法を紹介していました。
Amazon EC2 インスタンスに関するよくある質問

状況

Amazon Web Service上に作成したLinuxインスタンスで、インスタンス自体は起動しているが外部から接続できない。
(インスタンスの起動に失敗する場合にも対応可能)

対応

1. トラブルを起こしたインスタンスを停止

2. インスタンスのルートボリュームをDetach

作業前にボリュームの「Name」タグに適切な名前を付けておくと分かり易いです。

3. レスキュー用に新しいインスタンスを作成

トラブルを起こしたインスタンスと同じAvailability zoneに作成します。
(普通にAWSコンソールで作業していれば同じになります)

(注意)Amazon Linuxのインスタンスが良いです。
初めはUbuntuのインスタンスを作成して作業しましたが(今回トラブルを起こしたのがUbuntuのインスタンスだったので)、デバイス名の規則の関係からかAttach後にうまく起動しませんでした。

4. レスキュー用のインスタンスにAttach

2.でDetachしたボリュームをレスキュー用インスタンスに接続します。
この時にデバイス名をメモしておく。「/dev/sdb」など。

5. マウントポイントを作成する

レスキュー用のインスタンスに接続し、rootになってから次のコマンドを投入します(以降の処理は全てrootユーザーで行う)。

[root@resq ~]# mkdir /mnt/attached_disk

6. デバイスの本名(本来のデバイス名)を確認する

AWSのLinuxインスタンスはディスクデバイスを別名で管理しているので、次のコマンドで本来のデバイス名を確認します。

[root@resq ~]# ls -l /dev/(4.でメモしたデバイス名)

今回の例では下のコマンド。リンクになっているので、この場合は「/dev/xvda1」が本来のデバイス名です。

[root@resq ~]# ls -l /dev/sda1
lrwxrwxrwx 1 root root 5 May 14 15:26 /dev/sda1 -> xvda1

7. マウントする

次のコマンドで作成したマウントポイントにマウントします。

[root@resq ~]# mount /dev/xvda1 /mnt/attached_disk

8. マウントしたディスクで問題のある部分を修正する

トラブルによってケースバイケース。
私の場合は/etc/profile.d/にあるトラブルの元になっていたファイルを削除。

9. レスキュー用インスタンスを停止し、作業したボリュームをDetach

10. Detachしたボリュームを、元のインスタンスにAttach

(注意)Attachする際にデバイス名として「/dev/sda1」を指定します。これを指定しないと、ルートボリュームとして認識されません。

11. 元のインスタンスを起動し、無事に接続できればOK

12. レスキュー用インスタンスを削除して終了

13
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
14