📄

m1.smallでgp2 → gp3のオンライン変更をする

2022/04/06に公開

概要

AWSのEBSはデフォルトでgp2が選択されていることもあり、gp2を利用しているユーザーが大半かと思います。
様々な記事でも紹介されていますが、gp3はIOPS、スループットを可変で設定できるようになっており、最小の値だと、gp2よりも2割安くなるので、ボリュームのサイズが小さい場合は変えない理由がありません。
そこで、基本的にすべてのインスタンスでgp3に変更しようとしたところ、以下の記事を見つけたので検証してみました。

https://dev.classmethod.jp/articles/ebs-volume-covert-gp2-to-gp3/

(旧世代の場合は Elastic Volumes に対応していないだけでなく、 gp3 との組み合わせで起動に失敗する、という例を聞いています。 gp3 の対応状況について現時点でドキュメントに記載は確認できませんでした。今後解消されたりドキュメントに記載が追加される可能性はあるかと思いますが、現時点では旧世代のインスタンスでの gp3 への変更は避けた方がよいかと考えます。)

結論

  • m1.small、c3.largeともに起動したばかりの状況ではgp3にオンラインで変更できました。
  • 噂の詳細はわかりませんが、特定の条件で発生していたのではないかと思います。

要件

インスタンスタイプ

旧世代のインスタンス*2で行いました

  • m1.small
  • c3.large

OS

Amazon Linux 2

ストレージ

ルートボリュームの8GBのみ。

本筋とは関係ありませんが、m1.smallはデフォルトで100GBのHDDをマウントしていて、現在のユースケースと全然違いそうだなと思いました。

実施した内容

  • EC2をコンソールから起動する
  • sshでログインする
  • コンソールからボリュームの変更を選択して、ボリュームタイプを「汎用SSD(gp3)」に変更する
  • 変更中の間、sshでログインしているコンソールが操作可能なことを確認する
  • gp3への変更完了後、再起動する
    • rebootコマンド
    • AWSのコンソールで停止、開始
  • ログインして操作できることを確認する

問題なくできました。

噂とは

googleで調べてみるとgoogleのキャッシュですが添付のような投稿がありました。
https://webcache.googleusercontent.com/search?q=cache:tKNSii-CF4cJ:https://forums.aws.amazon.com/thread.jspa%3FmessageID%3D966661+&cd=7&hl=ja&ct=clnk&gl=jp

噂はこの投稿だと思うのですが、キャッシュの時点で特に回答がないことから、投稿者の特殊な状況でたまたま起動しなくなっただけではないかと思われます。

注意点

古いインスタンスではオンラインのボリューム変更ができない可能性があります。変更する場合には一度インスタンスを停止して起動しなおす必要があります。

https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/modify-volume-requirements.html

ボリュームが 2016 年 11 月 3 日 23:40 (UTC) 以前にアタッチされていた場合は、Elastic Volumes サポートを初期化する必要があります。詳細については、「Elastic Volumes サポートの初期化」を参照してください。

参考

https://blog.serverworks.co.jp/ebs-gp3-vs-gp2
https://hack.nikkei.com/blog/measure_gp3_latency/

Discussion