はじめに
タイトルのとおり、Azure Blob Storage にコンテナーを作成して、Linux VM (RHEL) 上から NFS 3.0 でマウントを試したので、備忘的なもの。
目次
環境
構成はシンプルに、VM と同一サブネット上にプライベート エンドポイントで接続可能なストレージ アカウントを置いて、 VM からマウントする感じです。
手順は以下の Docs を参考にしてます。
Blob ストレージの準備
ストレージ アカウントのデプロイ
Blob Storage デプロイ時の注意点は以下
- NFS 3.0 は Data Lake Storage Gen2 の機能であるため、階層型名前空間を有効にする
- LRS か ZRS しか選べない
NFS 3.0 は通常の Blob Storage ではなく、Data Lake Storage Gen2 でないと使えないため、以下のオプションを有効にします。
また、NFS 3.0 を使う場合の制限として、冗長性は LRS か ZRS しか選べません。
GRS を選んだ状態だと、こんな感じで押せません。
その他、機能制限など既知の問題ページで挙げられているため注意。
コンテナーの作成
RHEL でマウントするための、適当なコンテナーを作成しておきます。
今回は testnfs で作成
VM からのマウント
パッケージ インストール
以下のコマンドを実行して、NFS 接続に必要なパッケージをインストール
yum install -y nfs-utils
名前解決の確認
ストレージ アカウントへプライベート エンドポイントを用いて接続できるか、nslookup で確認
以下はプライベート IP 172.21.0.5 に解決できているので OK
マウント
以下のコマンドを実行してマウント用マウントポイントを作成
mkdir -p /mnt/test
以下のコマンドの <storage-account-name> ストレージ アカウント名に、<container-name> をコンテナー名に変更したうえで実行して、 マウントポイントにコンテナーをマウント
mount -o sec=sys,vers=3,nolock,proto=tcp <storage-account-name>.blob.core.windows.net:/<storage-account-name>/<container-name> /mnt/test
今回の例だと以下のコマンドを実行
mount -o sec=sys,vers=3,nolock,proto=tcp kknfsstorage.blob.core.windows.net:/kknfsstorage/testnfs /mnt/test
マウントできたので、いくつかファイルを作成してみる
これで Blob Storage の NFS マウントができました。
fstab
fstab はこんな感じで追記して設定できました。
kknfsstorage.blob.core.windows.net:/kknfsstorage/testnfs /mnt/test nfs sec=sys,vers=3,nolock,proto=tcp 0 0
終わりに
NFS でマウントしたり、fstab を書いたりしたことがあまりないので、試してみました。
ストレージの作成時に階層構造かつ LRS or ZRS にする、ということさえわかっていれば、後はそんなに難しいところはないと思います。
(個人的には Linux に慣れてなくて、nfs のパッケージとか fstab の書き方調べるのにちょっと手間取った)
Data Lake Storage は通常のストレージよりもできることが少ない (機能が対応してない) 場合があるので、その点は注意が必要です。