年別アーカイブ: 2011年

EBSインスタンスのrootデバイスを不揮発性にする

EBSインスタンスはStopさせてもデータを保持することができるが、Terminateさせると、さすがにEBSボリュームは削除されてしまう。 必要に迫られているわけではないが、TerminateさせてもEBSボリュームが保持されるようにしてみる。

起動中のインスタンスに適用する方法

起動中のインスタンスの情報をManagement Consoleから参照し、Root Device、またはBlock Devicesのsda1の情報を取得すると、次のようにDelete on terminationがTrueになっていることがわかる。 これによって、Terminate時にEBSボリュームが削除されるのであろう。

Delete on termination is True

ec2-api-toolsを利用して、このオプションを変更してみる。

次のように該当するインスタンスに対して、/dev/sda1の設定を変更してみる。

# ec2-modify-instance-attribute -b '/dev/sda1=:false' -K pk-xxxxx.pem -C cert-xxxxx.pem --region ap-northeast-1 i-xxxxx
BLOCKDEVICE     /dev/sda1                       false

これによって、次のようにDelete on terminationがFalseになる。このボリュームはインスタンスをTerminate させると、何に紐づくこともなく、Availableの状態で保持される。

Delete on termination is False

AMIの作成時に設定する方法

起動時にEBSボリュームが消えないようにしておくこともできる。 次のように、AMIの登録時にスナップショットの指定をブロックデバイスを指定するオプションの中に入れ、Delete on terminationをfalseに指定する。

# ec2-register -a i386 -n sl6-base32-nv -b '/dev/sda1=snap-xxxxx::false' -b '/dev/sda2=ephemeral0' -b '/dev/sda3=ephemeral1' --kernel aki-ec5df7ed -K pk-xxxxx.pem -C cert-xxxxx.pem  --region ap-northeast-1

これで不慮の事故によってrootデバイスのボリュームを失うことはなくなる。ただし、見分けのつきにくいEBSボリュームがたくさん残ってしまう可能性があるので、注意しておいたほうがよさそう。