みち草

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

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

はじめに

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

目次

環境

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

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

docs.microsoft.com

Blob ストレージの準備

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

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

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

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

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

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

docs.microsoft.com

コンテナーの作成

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