雑多なインフラエンジニア日記

技術ブログでっす~

EC2(EBS) PIOPS有りのEBSをPIOPS無しにする

とあるEC2インスタンスでPIOPSを無効にするのにハマったのでメモ。

・背景
ディスクI/Oバウンドになる濃厚なインスタンスにPIOPSを有効にして
運用してたらコストがそこそこ跳ねたので、そもそも、PIOPS要るん?
→ 無効にしようぜ と言った流れです。

・EBS構成
ブート領域(/dev/sda1) PIOPS無し
データ領域(/dev/sdb) PIOPS有り
データ領域をPIOPS無しにしてEC2インスタンスを立ち上げる
のがゴールです。

その1. AMI作成時にPIOPS無しで指定して起動してみる


前述で説明した構成のインスタンスのAMIを作成する際に、
VolumeTypeをio1(PIOPSのこと)から、standard に変更してみる。
なんか上手くいきそうな予感。



んが、結果から言うと、Kenelパニックで立ち上がりません・・・。

途中までは良い感じに進むのですが、AMI作成→インスタンス起動せず。
GetSystemLogで確認すると以下が表示されてました。
AMI作成時にエラーとして欲しいものですね。。

Kernel panic - not syncing: VFS Unable to mount root fs on unknown-block




その2.データ領域無しのAMIを作成し、インスタンス起動


はい、全然ダメです。
興味本位でやっただけです。
確かその1と同じく、Kernelパニックだった気がします。
fstabに書いてあるVOLが存在しないからだと思います。
たぶん。

その3.データ領域のSnapshot作成&VOL作成&PIOPS無しにする


はい、これで上手く行きました。
その1の方法で何となく上手くいきそう&インスタンス起動までエラー
は発生しなかったので、これにたどり着くまで時間掛かりました。
完全に妄想でやりましたが、後日サポートに聞いたので裏は取れてます。

具体的には、

1. データ領域のSnapshotからVOL(Data2とする)をstandardで新規で作成
2. PIOPS有りの状態のAMIを作成 → インスタンス作成
3. VOL(Data2)をインスタンスにアタッチ(/dev/sdf)
4. インスタンス起動後、VOL(Data2)をマウント
5. 確認できたら、/dev/sdb(PIOPS有り)、/dev/sdf(PIOPS無し) をアンマウント
6. /dev/sdb 、/dev/sdf をインスタンスからデタッチする。
7. VOL(Data2)を/dev/sdbとしてアタッチする。
8. インスタンス起動後、正しくマウントされか確認する。

でOKでした。

こんな感じになります。



なるほどねぇ。
めんどくさいな・・・