[アップデート] EBS マルチアタッチが io2 ボリュームでもサポートされました!
コンバンハ、千葉(幸)です。
EBS のマルチアタッチに対応したボリュームタイプに io2 が追加されました!
io2 の発表から数ヶ月……これは早いのでしょうか遅いのでしょうか。
EBS のマルチアタッチとは
2020年2月に発表された機能で、 EBS ボリュームを複数のインスタンスにアタッチできるものです。
いくつか制約があり、代表的なものは以下です。
- AZ を跨げない
- アタッチするインスタンスは Nitro インスタンスである必要がある
- プロビジョンド IOPS ボリュームのみサポート
- 今回のアップデートで io1 だけでなく io2 も対象に
- 使用できるリージョンが限定的
- 東京リージョンはまだ
- ブートボリュームには使用不可
- インスタンスローンチ時にあわせてアタッチは不可
- アプリケーション側でデータの整合性を担保する必要がある
単純に「 2 台のインスタンスで共有できるファイルサーバー」といった用途では使用できません。
詳細は以下のドキュメントから確認してください。
- Attaching a volume to multiple instances with Amazon EBS Multi-Attach - Amazon Elastic Compute Cloud
EBS マルチアタッチの使い所
こちらは当時しばたが検討していました。ここではクラスター製品での使用を想定しています。
具体的なユースケースとしては、 CLUSTERPRO X による共有ディスク型クラスターに使用できるようです。
あわせて以下もご参照ください。
- EBS Multi-Attach ボリュームを使用して、複数の EC2 インスタンスが標準ファイルシステムに同時にアクセスできるようにする
- AWSのMulti-Attach EBS Volumesが「共有ストレージ」に使えるか検証してみた - Qiita
プロビジョンド IOPS io2 とは
2020年8月に発表された新たなボリュームタイプです。
同じくプロビジョンド IOPS という括りに属する io1 と比較して、耐久性と 1GiBあたりの最大 IOPS が改善しています。お値段は据え置きです。
(表は上記エントリより引用)
項目 | io1 | io2 |
---|---|---|
耐久性 | 99.9% | 99.999% |
1GiBあたりの最大IOPS | 50 | 500 |
IOPS範囲(最小~最大) | 100~64000 | 100~64000 |
月額料金($):1GBあたり | 0.142 | 0.142 |
月額料金($):1IOPSあたり | 0.074 | 0.074 |
io2 の発表後、あえて io1 を選択する理由としてマルチアタッチのサポート有無がありましたが、今回のアップデートによりそれも無くなりました。(とは言え対応リージョンに差異があります。後述。)
ちなみに、先日発表された io2 Block Express(プレビュー) と io2 は別物ですので、混同しないようにしましょう。
マルチアタッチにおける io1 と io2 の違い
いくつか違いがあるので確認しておきます。
対応リージョン
「●」が付与されている箇所が、対応していることを表します。 io2 と io1 で被らないようになっているのは何か意図があるのでしょうか。
io2 ボリューム | io1 ボリューム | |
---|---|---|
us-east-1 | - | ● |
us-east-2 | ● | - |
us-west-2 | - | ● |
eu-west-1 | - | ● |
eu-central-1 | ● | - |
ap-south-1 | ● | - |
ap-northeast-2 | - | ● |
ボリューム変更操作サポート
マルチアタッチが有効になっているボリュームの変更操作に対するサポート状況は以下です。
io2 ボリューム | io1 ボリューム | |
---|---|---|
ボリュームタイプの変更 | できる(マルチアタッチ無効後) | できない |
ボリュームサイズの変更 | できる | できない |
プロビジョンド IOPS の変更 | できる | できない |
マルチアタッチの有効化 | できる | できない |
マルチアタッチの無効化 | できる(デタッチ後) | できない |
io2 ボリュームの方が柔軟に変更ができますね。
やってみた
マルチアタッチをap-south-1(ムンバイ)で試してみます。今回はアタッチできるところまでをゴールとします。
EBS ボリュームの作成
EBS ボリュームの作成時に、 io2 と マルチアタッチ有効化を選択します。
注意書きには以下の内容が表示されます。(機械翻訳)
マルチアタッチ対応ボリュームは、I/O フェンシングをサポートしていません。I/O フェンシング プロトコルは、共有ストレージ環境での書き込みアクセスを制御してデータの一貫性を維持します。マルチアタッチ対応ボリュームでデータの一貫性を維持するには、アプリケーションでインスタンス間の書き込み順序を指定する必要があります。
Name タグをつけて作成します。
EBS ボリュームのアタッチ
すでに以下条件で EC2 インスタンスが 2 台準備されています。
- 使用 AMI
- amzn2-ami-hvm-2.0.20201218.1-x86_64-gp2
- インスタンスタイプ
- t3.micro
- アベイラビリティゾーン
- EBS ボリュームと同一
EBS ボリュームの画面より、ボリュームのアタッチを選択します。
作成済みのインスタンスの片方を指定しアタッチを行います。
2台目も同様にアタッチを行います。すでに1台アタッチ済みであることがここで判別できます。
問題なくアタッチできました!
ちなみに EC2 インスタンスからはこのように見えます。ここで見える情報だけでは、当該ボリュームがマルチアタッチ有効なものかどうかは判断できないですね。
ちなみに
同じく ap-south-1(ムンバイ)リージョンで io1 ボリュームの作成を試みました。ムンバイでは io1 のマルチアタッチがサポートされていないので、有効化を選択する箇所がありません。
対応リージョンにはお気をつけください。
終わりに
io2 ボリュームがマルチアタッチに対応したというアップデートでした。
io1 と対応リージョンが重ならないようになっている、というのが面白いですね。引き続き東京リージョンでは使えませんが、首を長くして待ちましょう。
(そしてマルチアタッチでどういう時に使うの?というのが揉まれていくのを待ちましょう。)
以上、千葉(幸)がお送りしました。