Azure File Storage を Linux でマウント — NetDrive on Ubuntu

読了目安 8 分 provider-guide azure linux
Kai
KaiJunior Engineer
NetDrive の実験的な Ubuntu ビルドで Azure File Storage の SMB 共有を Linux のマウントポイントとして扱う方法。Azure Portal の設定、認証、動作確認まで解説。

あるビルドサーバーが、設定リポジトリをオンプレミスの古いファイル共有から Azure File Storage へ移行した。すると、これまで /mnt/configs/*.yaml を素のシェルコマンドで読んでいたジョブすべてに、別の対応が必要になった。選択肢の一つは各スクリプトを Azure SDK ベースに書き直すことだが、もう一つの方法は、共有を普通の Linux パスとしてマウントし、既存の catcpfind 呼び出しをそのまま動かし続けることだ。これを実現するのが NetDrive の Linux ビルドである。

NetDrive drive manager showing Google Drive, S3 and pCloud mounted as drive lettersMounted clouds appearing as native drives in Windows File Explorer

Azure File Storage を Ubuntu にマウント

NetDrive を使えば Google Drive、OneDrive、S3、SFTP、WebDAV などが Windows と macOS でネイティブドライブとして表示されます — 同期も、まるごとダウンロードも不要です。

  • NetDrive の実験的な Ubuntu ビルド上で動作
  • 既存のシェルスクリプトや cron ジョブが共有を通常のパスとして読み取れる
  • バックグラウンドアップロードにより、大きなファイル書き込みが呼び出し元プロセスをブロックしない
WindowsmacOS
NetDrive for Linux をダウンロード →

無料トライアル。永久ライセンスとサブスクリプションプランあり。

Azure File Storage であって Azure Blob ではない

NetDrive は Azure File Storage と Azure Blob Storage を別々の接続タイプとして扱っており、両者を取り違えるとセットアップの試みが無駄になる。Blob Storage はオブジェクトストレージで、API 経由でアクセスするログやバックアップ、静的アセットに向いている。File Storage はフルマネージドの SMB 共有で、従来のファイルサーバーが提供するものと同じ形を Azure 上でホストしたものだ。あるチームがオンプレミスのファイルサーバーをそのまま Azure に「リフト&シフト」したのであれば、それに対応する接続タイプはほぼ常に File Storage である。

両方とも同じリリース、3.11.204(2020-07-22)で NetDrive に追加された。Linux では、この接続はより広くテストされている Windows・macOS 版ではなく、NetDrive の実験的な Ubuntu ビルド上で動作する。NetDrive 自身の比較ページでも Linux には「実験的」というラベルが付いており、無人の本番ジョブをこれに向ける前に知っておく価値がある。

Azure File Storage provider logo — NetDrive supports Azure File Storage on Windows, macOS, and Linux

Azure Portal で必要になるもの

NetDrive を開く前に、次の3つの値を用意しておく。

  • ストレージアカウント名 — Azure Portal のストレージアカウントリソースの概要ページにある。
  • アクセスキー — ストレージアカウントの Security + networking → Access keys 配下にある。key1key2 のどちらでもよく、NetDrive が必要とするのは1つだけだ。
  • ファイル共有名Data storage → File shares 配下にある、マウントしたい共有の正確な名前。

組織がアクセスキー認証を無効にしている場合は、代わりに File サービスにスコープした Shared Access Signature(SAS)トークンを、少なくとも Read、Write、List、Create、Delete の権限付きで発行し、アクセスキーの代わりに使用する。

また、Ubuntu 16.04 以降が必要で、ボックスのファイアウォールで Azure Storage エンドポイントへのアウトバウンドアクセスが開いている必要がある。SMB over Azure のトラフィックは、企業ネットワークやクラウドのセキュリティグループによってデフォルトでブロックされることがある。

Ubuntu への NetDrive のインストール

NetDrive for Linux は apt ではなく GitHub リリースとして配布されている。

  1. github.com/NetDrive/installer にアクセスし、使用している Ubuntu のバージョンに合ったビルドをダウンロードする。
  2. インストール前に、そのリリースのノートを確認する — ドライバコンポーネントが読み込まれないと、どの接続もマウントできない。
  3. パッケージをインストールし、一度 NetDrive を起動してドライバを読み込ませる。これには sudo の入力を求められることがある。

手順:Azure File Share への接続

  1. NetDrive の Drive Manager を開き+ Add Drive をクリックする。
  2. プロバイダー一覧から Select Azure File Storage を選ぶ — Azure Blob Storage ではない。

NetDrive Drive Manager showing multiple cloud connections available to add

  1. Portal から取得した Storage Account nameAccess Key(または SAS トークン)を入力する。
  2. Portal 上の File shares に表示されている名前と全く同じ Share name を入力する。
  3. マウントポイントを設定する(例:/mnt/azure-configs)。Connect をクリックする。

ジョブがマウントに依存する前に確認する

cron ジョブや CI ステップを新しいパスに向ける前に、実際にマウントされているかを確認しよう。

# Confirm the mount is listed
mount | grep azure-configs

# Or just list its contents
ls /mnt/azure-configs

Confirming that a connected drive mounted successfully after setup

マウントポイントが空、あるいは何も表示されない場合は、アクセスキーを疑う前に Azure Storage エンドポイントへのアウトバウンドファイアウォールルールを確認すること。ポートがブロックされている場合も、認証情報が誤っている場合と同じ「何もない」という症状が出るためで、ロックダウンされたビルドサーバーではこちらの方がより一般的な原因だ。

Checking that a network port is reachable when troubleshooting a failed connection

Linux ビルドで見込んでおくべきこと

  • リリースサイクルが別。Windows や macOS 向けに出た修正や新機能が、同じタイミングで Linux ビルドにも反映されるとは限らない。
  • apt との統合がない。新しいバージョンはパッケージマネージャーではなく GitHub リリースから来るため、更新を追うのはボックスを管理する側の手作業になる。
  • より深いテストを受けているのは Windows と macOS。少数のスクリプトが読む設定ファイル共有であれば、Linux ビルドで十分に妥当な選択だ。無人の本番パイプラインの背後に据える前に、大きなファイル書き込み、複数リーダーの同時アクセスなど、実際のジョブが行う具体的な作業をテストしておくこと。

まとめ

Azure File Storage の共有を Ubuntu にマウントすることで、Windows や macOS で NetDrive が提供するのと同じドライブ形式のアクセスを、Azure SDK を中心にスクリプトを書き直したり手動で SMB クライアントを設定したりすることなく、Linux のマシンでも得られる。より広くテストされたプラットフォームでの同じ接続タイプについては、Mount Azure File Storage on WindowsMount Azure File Storage on macOS を参照してほしい。ファイル共有ではなくオブジェクトストレージについては、Mount Azure Blob Storage on Linux がその接続タイプを扱っている。Linux 全体像については NetDrive on Ubuntu Linux を参照。

— Kai, NetDrive