Azure Blob StorageをRocky LinuxからNFSでマウント
Azure Blob StorageのコンテナーをLinuxの仮想マシン(Azure VM)からNFSマウントする手順の紹介です。
ストレージアカウント作成時のNFS設定から、AZNFS Mount Helperのインストール、Rocky Linuxでのマウントやfstabの設定まで、一連の手順を確認しています。
Azure上に作成したRocky Linuxの仮想マシンを利用して確認しています。
※本記事内ではAzure Virtual Machines(Azure VM)を仮想マシンとして表記しています。
※ストレージアカウントはStandard 汎用 v2 アカウントを利用しています。
※Rocky LinuxはRocky Linux release 9.5 (Blue Onyx)を利用しています。
※手順の確認はrootユーザーで実施しています。環境に合わせてsudoコマンド利用してください。
Azure Blob StorageのNFS有効化からコンテナー作成まで
Azure Blob StorageではNFSがサポートされている
Azure Blob StorageはNFS(3.0)をサポートしています。
Standard 汎用 v2 アカウント、Premium ブロック BLOB アカウントのストレージアカウントで利用できます。
Azure Blob Storage でのネットワーク ファイル システム (NFS) 3.0 プロトコル サポート
Azure Files(PremiumのNFSファイル共有)でもNFS(4.1)をサポートしています。
設定手順についてはこちらで紹介しています。
Geo冗長が利用できないなどの制約事項がある
NFSを有効化した場合、ストレージアカウントのGeo冗長がサポートされないなどの制約があります。
Azure Blob Storage でのネットワーク ファイル システム (NFS) 3.0 プロトコルのサポートに関する既知の問題
また、NFSを一度有効化すると無効化できないといった制約もあります。
そのほかにも、Blobのスナップショットやオブジェクトレプリケーションが使用できないなどの制約もあります。
Azure ストレージ アカウントにおける Blob Storage 機能のサポート
ストレージアカウントの設定値
今回利用したストレージアカウントの設定値です。
仮想マシンからストレージアカウントへのアクセスは、サービスエンドポイント経由としています。
- 基本
区分 | 項目 | 設定値 |
インスタンス の詳細 |
ストレージ アカウント名 | stnfsteststandard01 |
場所 | Japan East | |
プライマリ サービス | Azure Blob Storage または Azure Data Lake Storage Gen 2 | |
パフォーマンス | Standard | |
冗長性 | LRS(ローカル冗長ストレージ) |
- 詳細
区分 | 項目 | 設定値 |
セキュリティ | REST API 操作の安全な転送を必須にする | 無効(チェックを外す) |
階層型名前空間 | 階層型名前空間を有効にする | 有効(チェックを入れる) |
アクセス プロトコル | ネットワーク ファイル システム v3 を有効にする | 有効(チェックを入れる) |
※Azure Blob StorageでNFSを利用する場合は、階層型名前空間を有効にする必要があります。
- ネットワーク
区分 | 項目 | 設定値 |
ネットワーク接続 | ネットワーク アクセス | 選択した仮想ネットワークとIPアドレスからのパブリックアクセスを有効にする |
仮想ネットワーク | 仮想ネットワーク | test-vnet-01 |
サブネット | vm-subnet-01 (仮想マシンのサブネット) |
※サービスエンドポイント経由で、仮想マシンからBlobコンテナーへアクセスします。
※ネットワーク設定については公式サイトの注意書きを併せて参照します。
- データ保護
区分 | 項目 | 設定値 |
復旧 | BLOB の論理的な削除を有効にする | 無効(チェックを外す) |
コンテナーの論理的な削除を有効にする | 無効(チェックを外す) | |
ファイル共有の論理的な削除を有効にする | 無効(チェックを外す) |
※手順確認用の設定です。利用用途に合わせて設定します。
コンテナーの設定値
検証用に作成した、Blob コンテナーの設定値です。
区分 | 項目 | 設定値 |
基本 | 名前 | nfs-share-02 |
ルートスカッシュ | ルートスカッシュなし |
NFSを有効化したストレージアカウントを作成
公式サイトの手順を確認しながら、Azure Blob StorageでNFSを有効化した、ストレージアカウントを作成します。
ネットワーク ファイル システム (NFS) 3.0 プロトコルを使用して Blob Storage をマウントする
※既存のストレージアカウントのNFSを有効化する事はできません。
コンテナーを作成
仮想マシンからマウントする、コンテナーを作成します。
コンテナーを作成 | |
ストレージアカウントでコンテナーを選択します。 |
|
作成したコンテナーが表示されています。 |
—広告—
Rocky LinuxからAzure FilesのNFSファイル共有をマウント
公式サイトの手順を参考に確認を進めています。
ネットワーク ファイル システム (NFS) 3.0 プロトコルを使用して Blob Storage をマウントする
AZNFS Mount Helperをインストール
Azure Blob NFS エンドポイントのIPが変わる場合があります。
新規にマウントする場合には問題がないのですが、既存のマウントは古いIPに再試行して接続します。
AZNFS Mount Helperを利用してこの問題を解決する事ができます。
iptablesのDNAT機能を使用して、正しいBlob NFSエンドポイントのIPにマッピングしてくれます。
# AZNFS Mount Helperをインストール ****************************** ~(中略)~ インストール済み: 完了しました! |
Rocky LinuxからコンテナーをNFSでマウント
Rocky LinuxからコンテナーをNFSでマウントします。
mountコマンドで確認しています。
aznfsとnfsの2パターンでマウントした場合を比較しています。
aznfsを利用した場合は、IPアドレスで表示されていることが確認できます。
# NFSサーバを利用するためにnfs-utilsをインストール # マウントポイントを作成 # マウントコマンドを実行(aznfsを指定した場合)
[root@test-vm-01 ~]#
mount -t aznfs stnfsteststandard01.blob.core.windows.net:/stnfsteststandard01/nfs-share-02 /mount/nfs02 -o sec=sys,vers=3,nolock,proto=tcp
[root@test-vm-01 ~]# df -h | grep nfs02 10.xxx.xxx.xxx:/stnfsteststandard01/nfs-share-02 5.0P 0 5.0P 0% /mount/nfs02 # マウントコマンドを実行(nfsを指定した場合) |
NFSでマウントしたコンテナーにファイル書き込み
NFSでマウントしたコンテナーにディレクトリを作成し、ファイルを書き込んで確認します。
# ディレクトリ作成やファイル作成を確認 |
/etc/fstabにコンテナーをNFSマウントするエントリーを追加
OSを再起動した場合も、再マウントするようにfstabに設定を追加します。
echoコマンドを利用して、fstabファイルにエントリーを追加しています。
ファイルシステムのタイプにはaznfsを設定しています。
マウントに失敗しても起動できるように、マウントオプションにnofailを設定しています。
# fstabに書き込み # fstabを確認 # OSを再起動 [root@test-vm-01 ~]#
df -h |grep nfs02 |
—広告—
最後に
Rocky Linuxをから、Azure Blob StorageのコンテナーをNFSでマウントする手順について確認してみました。
制約事項はありますが、NFSサーバーを立てる事なく利用できるのは便利かと思います。
引き続き色々試してみたいと思います。
Azure Blob StorageでのBLOBのバックアップリストや、オブジェクトレプリケーションの手順についてはこちらで紹介しています。
なお、NFSを有効化した場合には利用できません。