ひとりAdvent Calendar 8日目です。
Azure上のLinux VMでBlock Deviceを使うのであればAzure Diskをマウントすることになると思うのですが、つけはずしに時間がかかったり、VMのインスタンスサイズごとにマウントできるデバイスの数に上限があったりと、正直つかいづらいケースもあります。特にkubernetesのようにPodがVM間を移動するたびにバンバンDiskをつけはずしするようなケースだと、なにかとこの制約にはまったりします。 今日はそのような限界を突破するかもしれないdyskというものを試してみました。 Project Status: Betaとある通り、不安定な動作になることもあるので試す場合は専用のテストインスタンスでやることをおすすめします。
リポジトリはここにあります。
インストール手順はここにあります。
dysk/build-install.md at master · khenidak/dysk · GitHub
ここに4.10.x++ kernel versionsと書いてあるので、今回はRHEL 7 ではなくUbuntu 18.04.1 LTSを使います。
# uname -r 4.15.0-1035-azure
Storage AccountのBlobを直接マウントするので、同じリソースグループ、同じLocationにStorage Accountを作っておきます。endpoint v1とv2の両方をサポートするとありますが、v2の場合はHTTPにしないと動かないコマンドがあるのでHTTPをサポートするようにしておきます。
インストールスクリプトを見ればわかるのですが、dockerで必要なバイナリを動かしているので、dockerのインストールが必要です。
CLIを実行するにもdockerイメージが動いている必要がありますし、OS再起動後なども必要なdockerイメージを実行しておく必要があります。CLIが実行できるようになったら、ストレージアカウントの名前とキーを指定して実行してみます。
このように1秒ほどでマウントが完了しています。listコマンドでリストすることもできます。
試しにマウントとアンマウントを繰り返してみます。既存のファイルの場合2秒ほどかかっていますが、Azure Diskとは異ってすぐにマウントしなおすことができます。
オプションの指定の仕方については、ドキュメントやヘルプと実際のコマンドの挙動がやや一致していないのですが、dyskctl mount -a {Storage Accountの名前} -k {Storage Account Key} -c {Blobのあるコンテナの名前} -p {Blobの名前} -l -b true
で既存Blobをマウントできます。マウントされたときに付けられる名前は、auto-create
の場合は作成されるBlobファイルと一致しますが、既存Blobをマウントする場合は異なる名前がつけられます。
最初に書いた通りまたBetaの状態なので、これですぐに解決できるわけではないのですが、こういう動きがあるというのが興味深かったので試してみました。