みち草

Azure中心にまとめる技術情報ブログ

Azure Blob Storage を NFS 3.0 で Linux VM にマウントする

はじめに

タイトルのとおり、Azure Blob Storage にコンテナーを作成して、Linux VM (RHEL) 上から NFS 3.0 でマウントを試したので、備忘的なもの。

目次

環境

構成はシンプルに、VM と同一サブネット上にプライベート エンドポイントで接続可能なストレージ アカウントを置いて、 VM からマウントする感じです。

f:id:kkkzk:20211202234720p:plain

手順は以下の Docs を参考にしてます。

NFS 3.0 プロトコルを使用して Azure Blob Storage をマウントする | Microsoft Docs

Blob ストレージの準備

ストレージ アカウントのデプロイ

Blob Storage デプロイ時の注意点は以下

  1. NFS 3.0 は Data Lake Storage Gen2 の機能であるため、階層型名前空間を有効にする
  2. LRS か ZRS しか選べない

NFS 3.0 は通常の Blob Storage ではなく、Data Lake Storage Gen2 でないと使えないため、以下のオプションを有効にします。

f:id:kkkzk:20211202234706p:plain

また、NFS 3.0 を使う場合の制限として、冗長性は LRS か ZRS しか選べません。
GRS を選んだ状態だと、こんな感じで押せません。

f:id:kkkzk:20211202235408p:plain

その他、機能制限など既知の問題ページで挙げられているため注意。

Azure Blob Storage の NFS 3.0 に関する既知の問題 | Microsoft Docs

コンテナーの作成

RHEL でマウントするための、適当なコンテナーを作成しておきます。
今回は testnfs で作成

f:id:kkkzk:20211203000025p:plain

f:id:kkkzk:20211203000033p:plain

VM からのマウント

パッケージ インストール

以下のコマンドを実行して、NFS 接続に必要なパッケージをインストール

yum install -y nfs-utils

f:id:kkkzk:20211203001536p:plain

名前解決の確認

ストレージ アカウントへプライベート エンドポイントを用いて接続できるか、nslookup で確認

以下はプライベート IP 172.21.0.5 に解決できているので OK

f:id:kkkzk:20211203001722p:plain

マウント

以下のコマンドを実行してマウント用マウントポイントを作成

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

f:id:kkkzk:20211203010446p:plain

マウントできたので、いくつかファイルを作成してみる
これで Blob Storage の NFS マウントができました。

f:id:kkkzk:20211203010555p:plain

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 は通常のストレージよりもできることが少ない (機能が対応してない) 場合があるので、その点は注意が必要です。