2020/2/14のAWSアップデートで、プロビジョンドIOPS (io1) のEBSボリュームに限り、複数EC2から同時アタッチできるようになりました。
つまり共有ストレージに使えるということになります。
New – Multi-Attach for Provisioned IOPS (io1) Amazon EBS Volumes
https://aws.amazon.com/jp/blogs/aws/new-multi-attach-for-provisioned-iops-io1-amazon-ebs-volumes/
このアップデートを聞いて、Windows Server 2019 で共有ストレージを組んでみようと思い、検証してみました。
検証の結果ですが、記事タイトルの通り、驚きの結果となりました。
Multi-Attach EBSを作成して2台でアタッチ
プロビジョンドIOPSでEBSを作って、Multi-Attachにチェックを入れます。
2台のEC2 (Windows Server 2019) からアタッチします。
こんなふうに見えます。
早速ローカルディスクとして使ってみる
両サーバからディスクをオンラインにして、ローカルディスクとして使うことを考えます。
記憶域での操作により、両サーバから同時にオンラインにできました。
これでファイル共有できる! と思いきや
それぞれのWindows Serverの記憶域からはディスクが見えています。
なんかいい感じなので、1台目でテストファイルを置いてみます。
次に2台目で確認すると・・・
なんと、1台目で置いたテキストファイルが見えません。
これは予想外の展開です。
なんと予想に反して、ファイルの共有ができませんでした。
ただ、お互いがお互いのファイルを独立して保存できているように見えます。
ということは、もしかして容量が倍になる?
そこで、仮説として、共有ではなく、1台目と2台目ともに、EBSで割り当てた容量分使えるんじゃないの? と想像しました。
この仮説が正しいと、今回EBSを20GBで作りましたが、1台目と2台目を合わせて、40GB使えるということになりますが・・・
早速、検証してみました。
fsutil
コマンドを使い、1台目で容量を埋め尽くしに行きます。
無事作成できました。
この時点でEBSの20GB中、19GBは埋まっています。
先ほどの検証結果からも分かりますが、2台目では見えていません。
ここで、2台目からも埋め尽くしに行きます。
なんと作成できました。
この瞬間を切り取ると、20GBのEBSに、38GBのファイルが保存されていることになります。
もう一度、マネジメントコンソールでEBSを確認します。
確かに20GBしか割り当てていません。
この状態で、お互いのファイルは読み取りできました。
(追記) 片側でディスクをオフラインにして、もう一度オンラインにするとどうなるか
上記までの状態で記事をSNSで共有したところ「NTFSを両側からオンラインにするとファイルシステムが壊れるんじゃないか」「片側だけオンラインにするべき」とのメッセージをいただきました。
そこで、上記までの状態で2台目だけディスクをオフラインにしてみますと、正常にオフラインにできました。
その後、もう一度オンラインにすると、1台目と2台目でディスクの中身が同じとなりました。
(OSを再起動しても同じ事象が起こりそうです)
再起動やディスクのオフラインを挟むと、その時点でディスクは共有状態となるようですが、その後の書き込み結果はやはり共有されないようです。
まとめ
見たままストレートに書いて良いのか少々疑わしいですが、Windows Server 2019でMulti-Attach EBSを使うと、共有とはならず、互いが容量をフルで使える (実質的に容量が2倍になっている) ように見え、読み書きもできました。
ただ、この状態はあくまで最初に2台をヨーイドンで使い始めて、永続的に起動し続けている間しか成り立たず、再起動等を挟むとこの状態は失われてしまうようです。
公式ドキュメントや、他の方が先に書かれた記事を読みながら首をひねりましたが、なぜそうなるのかという答えは、まだ出ていません。
誠にお恥ずかしいことですが、ぜひ詳しい方から、お知恵をお借りできたらと思います。
煮え切らないところですが、引き続き、調査と検証をしていきたいと思います。
続きの検証結果があれば、追記していきたいと思います。