AWSのEC2バックアップとして「スナップショット」機能を利用しました。
いざ、スナップショットからEC2をリストアしようとしたところ、リストアしたボリュームをルートデバイスとして認識できずに「インスタンス開始のエラー」となりOSが起動できませんでした。
ブロックデバイスをルートデバイスとしてどうしたら良いのでしょうか?
レジュメ
結論、ボリュームアタッチ時に「デバイス」を指定する
「ボリューム」を「インスタンス」にアタッチする時に、「デバイス」にエラー時に表示されたルートデバイス名を指定しボリュームマッピングしてあげると、ルートデバイスとして認識され、インスタンスを開始出来るようになります。
代表的なOSのルートデバイスは?
この記事ではamazon linuxでのルートデバイスを紹介していますが、
代表的なOSのルートデバイス名を記載します。
- amazon linux・・・「/dev/xvda」
- redhat linux・・・「/dev/sda1」
- sentos linux・・・「/dev/sda1」
- windows server 2012 r2・・・「/dev/sda1」
微妙にOSによってルートデバイスが違っているんですね(というかamazon linuxだけ)
スナップショットからルートデバイスのリストア方法
最後に、AWSスナップショットからのルートデバイスリストア方法を紹介します。
今回の記事では
- インスタンスはすでに存在する(ボリュームが既にデタッチされている状態=ルートデバイスやディスクがない状態)
- リストアしたいスナップショットは存在している
- amazon linuxでの画面
で紹介します。
1、スナップショットからボリュームを作成する
EC2画面から「スナップショット」メニューを表示させ、リストアしたいスナップショットを右クリックし、「ボリュームの作成」を押します。
アタッチしたいインスタンスがあるアベイラビリティーゾーンと同じAZ(アベイラビリティーゾーン)を指定し、「作成」ボタンを押します。
ボリュームのリンクをクリックします。
2、ボリュームをインスタンスにアタッチする
リストアしたいボリュームを右クリックし「ボリュームのアタッチ」を押します。
リストアするインスタンス名を指定し(インスタンス名を入力するとインスタンスID一覧が表示され、インスタンスIDを指定します)、デバイスにルートデバイスを指定し「アタッチ」ボタンをします
ルートデバイスとして、リストアしたボリュームがマッピングされたことが確認できます。
これでスナップショットからのリストア作業完了です。
インスタンスが起動し、OSが元の時点(バックアップ時点)に戻っていることを確認します。