起動ディスクのボリュームを別のインスタンスに繋いで編集後に戻す方法を解説します。
分かる人は、この一文だけで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. レスキュー用インスタンスを削除して終了