Azure FilesやBlobストレージをCentOSからNFSでマウントしてみた
Azure Files(Premium)でNFS v4によるファイル共有機能が提供されています。
今回はAzure FilesのNFS機能有効化からファイル共有の作成、Linux(CentOS)でのNFS共有マウントまで試してみました。
作成にあたっては公式サイトの情報を参考に進めています。
2021年6月22日にBlobストレージ(Standard)のNFSv3共有がGAしたので併せて試しています。
Mount Blob storage by using the Network File System (NFS) 3.0 protocol(MS社公式)
※Azure FilesのNFS共有については機能制限があります。Azure Backupや論理的削除が使えない為個別にバックアップを考慮する必要があります。詳細はこちらを参照ください。
Azure Files(Premium)でNFS共有の作成
ストレージアカウントの構成
ストレージアカウントの設定値です。
ネットワークはプライベートエンドポイントの利用が推奨されています。
記載の項目以外はデフォルトのままとしています。
-
-
- ストレージアカウント設定(Azure Files)
- ストレージ アカウント名:nfsfiles01
- 地域:米国東部2
- パフォーマンス:Premium
- Premium アカウントの種類:ファイル共有
- 冗長性:ローカル冗長ストレージ(LRS)
- REST API 操作の安全な転送を必須にする:無効
- ネットワーク:プライベートエンドポイント
- ファイル共有の論理的な削除を有効にする:無効
- ストレージアカウント設定(Azure Files)
-
-
-
- プライベートエンドポイント設定(ストレージアカウント)
- 名前:azure-files-private-endpoint-01
- 場所:米国東部2
- ストレージのサブリソース:file
- 仮想ネットワーク、サブネット:適時環境に合わせて設定して下さい(VMからアクセス可能である必要があります。)
- プライベートエンドポイント設定(ストレージアカウント)
-
※ネットワーク設定に関してはAzureファイルでのNFSファイル共有(セキュリティ)の記述も参照ください。
Azure ストレージアカウントを作成
Azure Portalを利用してストレージアカウントを作成します。FileStorage ストレージ アカウントを作成するを参考に進めます。
※公式サイトの記述にもありますが、既存のストレージアカウントでは利用できません。NFS登録後に新規作成したストレージアカウントでのみNFSが利用可能になります。
ストレージアカウント作成 | |
ストレージアカウントの作成を開始します。 |
|
ストレージアカウント作成画面で設定を進めます。ストレージアカウント名、地域を設定します。パフォーマンスはPremium、Premiumアカウントの種類はファイル共有、冗長性はローカル冗長ストレージ(LRS)を選択します。 |
|
詳細設定画面です。REST APIの操作の安全な転送を必須にするのチェックを外します。 ※今回はエラーになる事を確認したかったので意図的にチェックを入れたまま進めてます。 |
|
ネットワークの設定を進めます。プライベートエンドポイントを選択します。プライベートエンドポイントの追加という項目が表示されるのでクリックします。 |
|
プライベートエンドポイントの作成で設定を進めます。場所はストレージアカウントと同じ場所を選択しっます。名前を入力しストレージのサブリソースはfileを選択します。 ※接続するVM(NFSクライアント)と疎通が取れるネットワーク(サブネット)である必要があります。 |
|
プライベートエンドポイントが追加されている事が分かります。データ保護の設定に進みます。 |
|
データ保護の設定で、ファイル共有の論理的な削除を有効にするのチェックを外します。(必須ではないです。) ※今回はNFS専用にする予定だったので外しています。 |
|
確認画面が表示されますので、問題が無ければ作成をクリックします。これでストレージアカウントの作成は完了です。 |
ファイル共有(NFS)の作成
ストレージアカウントでファイル共有を作成ます。今回は以下の設定内容で進めます。
-
-
- ファイル共有設定内容
- ファイル共有名:fileshare01
- プロビジョニング済みの容量:100GB
- プロトコル:NFS
- ルートスカッシュ:ルートスカッシュ無し(no_root_squash)
- ファイル共有設定内容
-
ルートスカッシュ、プロビジョニング済みの容量は後で変更可能です。
※ルートスカッシュはMSのサイトを見ても分かりにくかったりします。NFS領域のファイル権限にかかわる話なのですが。今回はルートスカッシュ無しで実施しています。(ルートスカッシュ有にすると、root権限ユーザーの書き込みはPermission deniedになります。)
ファイル共有設定 | |
ストレージアカウントでファイル共有のメニューを選択します。 新しいファイル共有が表示されるので、設定値を選択します。 |
|
ファイル共有が作成されている事が分かります。 |
Azure FilesのNFS共有では安全な転送を必須にするとエラーになる
公式サイトにも記述がありますが、Azure FilesのNFS共有では安全な転送が有効にすることが出来ません。
安全な転送設定 | |
エラーメッセージを選択すると、安全な転送設定の変更が表示されるのでクリックします。 |
|
ストレージアカウントの構成メニューが表示されます。 |
これでエラーが解消されます。
ファイル共有でNFS接続の方法を確認
Azure Filesの設定でAzure VM(CentOS)からNFS接続する為の設定を確認します。
接続許可設定 | |
ストレージアカウントでファイル共有を選択します。 |
|
Linuxからの接続方法が表示されます。 |
Azure VM(CentOS)からAzure FilesのNFS共有をマウント
Azure VM(CentOS)からNFS共有をマウント
今回は2台のVM(CentOS)からNFSマウントしてみます。VM1と2でマウントポイントを変えています。
-
- VM01
- サーバ名:NFS-TEST-01
- ユーザー名:testuser
- OS:CentOS7.9
- マウントポイント:/mount/nfsfiles01/fileshare01
- VM01
-
- VM02
- サーバ名:NFS-TEST-01
- ユーザー名:testuser
- OS:CentOS7.9
- マウントポイント:/mount/nfsfiles02/fileshare02
- VM02
まずはVM01で先ほど確認したLinuxからの接続手順を利用して進めていきます。一部変更しています。
NFS共有のマウント | ||
yum updateを実行します。-yオプションを追加して確認メッセージをYesでスキップするようにしています。 |
|
|
nfs-utilsをインストールします。 |
|
|
mkdirコマンドでマウントポイントのディレクトリを作成します。(-pオプションで無い階層も一緒に作れます。) |
|
|
mountコマンドで、先ほど作成したマウントポイントに、ストレージアカウントのNFSファイル共有をマウントします。 |
【NFS共有(サーバパス)】 ストレージアカウント名.file.core.windows.net:/ストレージアカウント名/ファイル共有名 |
|
dfコマンドでマウント状況を確認するとマウントされている事が分かります。 |
|
マウントしたNFS共有領域にファイルを作成
マウントしたNFS領域でファイルやディレクトリを作成してみます。
-
- ディレクトリ構成
- マウントポイント:/mount/nfsfiles01/fileshare01/
- 作成したディレクトリ名:nfstest
- 作成したファイル名:nfstestfile
- ファイルの記載内容:nfs test
- ディレクトリ構成
ファイル作成確認 | ||
マウントポイントの/mount/nfsfiles01/fileshare01/配下にnfstestというディレクトリを作成します。 その後にnfstestディレクトリ内にnfstestfileというファイルを作成しています。
|
別のVMから同じNFS共有領域をマウントして確認
次にVM2でも同様にマウントしてみます。yum updateは任意で実施します。
NFS共有のマウント | ||
yum updateを実行します。-yオプションを追加して確認メッセージをYesでスキップするようにしています。 |
|
|
nfs-utilsをインストールします。 |
|
|
mkdirコマンドでマウントポイントのディレクトリを作成します。(-pオプションで無い階層も一緒に作れます。) |
|
|
mountコマンドで、先ほど作成したマウントポイントに、ストレージアカウントのNFSファイル共有をマウントします。 |
|
|
dfコマンドでマウント状況を確認するとマウントされている事が分かります。 |
|
|
VM01(NFS-TEST-01)で作成したファイルを確認するとVM02(NFS-TEST-02)でも確認出来ました。 また編集してnfs test changeとしてみます。VM01(NFS-TEST-01)で確認すると変更が反映されている事が分かります。 |
|
/etc/fstab を使ってAzure FilesのNFS共有をマウント
mountコマンドを利用してマウントした場合、Azure VM(OSを含む)再起動した際に再度マウントが必要になります。再起動後もマウントさせる為にfstabの設定を行います。
-
- fstab設定
- NFS共有サーバー名とディレクトリパス:nfsfiles01.file.core.windows.net:/nfsfiles01/fileshare01
- マウントポイント:/mount/nfsfiles01/fileshare01
- マウントオプション:今回はsoft、timeo、rwの指定を行っています。(特に指定がない場合はdefaultsでOKです)
- fstab設定
fstab設定 | ||
fstabに1行追加します。 |
|
|
VMを再起動後マウント状況を確認するとマウント出来ている事が分かります。 |
|
Azure FilesのNFS共有を使うと、とっても簡単にNFSサーバが構築でき利用できる事が分かりました。
Azure Blobストレージ(Standard)を使ってNFS共有の作成
Blobストレージアカウントの構成
今回はこのような感じでストレージアカウントを作成しています。ネットワークはプライベートエンドポイントが推奨されていますのでそのように設定しています。記載の項目以外はデフォルトのままとしています。
-
-
- ストレージアカウント設定(Blobストレージ)
- ストレージ アカウント名:nfsv3blobteststorage
- 地域:米国東部2
- パフォーマンス:Standard
- 冗長性:ローカル冗長ストレージ(LRS)
- ネットワーク:プライベートエンドポイント
- 階層型名前空間を有効にする:有効
- ネットワーク ファイル共有 v3 を有効にする:有効
- ファイル共有の論理的な削除を有効にする:無効
- ストレージアカウント設定(Blobストレージ)
-
-
-
- プライベートエンドポイント設定
- 名前:nfsv3blobteststorage-endpoint-01
- 場所:米国東部2
- ストレージのサブリソース:Blob
- 仮想ネットワーク、サブネット:適時環境に合わせて設定して下さい(VMからアクセス可能である必要があります。)
- プライベートエンドポイント設定
-
※GAはしていますが色々制限事項があります。既知の問題(MS社公式)の記述も参照ください。
ストレージアカウントを作成
Azure Portalを利用してストレージアカウントを作成します。MS社公式サイトの記述を参考に進めます。
※公式サイトの記述にもありますが、既存のストレージアカウントでは利用できません。NFS登録後に新規作成したストレージアカウントでのみNFSが利用可能になります。
ストレージアカウント作成 | |
ストレージアカウントのメニューで作成を開始します。 |
|
ストレージアカウント作成画面で設定を進めます。ストレージアカウント名、地域を設定します。パフォーマンスはStandard、冗長性はローカル冗長ストレージ(LRS)を選択します。 |
|
詳細設定画面です。階層型名前空間を有効にするにチェックを入れます。 |
|
ネットワークファイル共有v3(NFSv3)を有効にするという項目がありますが、ネットワーク設定が終わらないとチェック入れられないので一旦進めます。 |
|
ネットワークの設定を進めます。プライベートエンドポイントを選択します。プライベートエンドポイントの追加という項目が表示されるのでクリックします。 |
|
プライベートエンドポイントの作成で設定を進めます。場所はストレージアカウントと同じ場所を選択しっます。名前を入力しストレージのサブリソースはblobを選択します。 ネットワークで仮想ネットワークとサブネットを選択します。 ※接続するVM(NFSクライアント)と疎通が取れるネットワーク(サブネット)である必要があります。 |
|
プライベートエンドポイントが追加されている事が分かります。前へで詳細設定に戻ります。 |
|
ネットワークファイル共有v3を有効にするにチェックを入れられるようになっているので、チェックを入れます。 |
|
データ保護の設定で、ファイル共有の論理的な削除を有効にするのチェックを外します。(必須ではないです。) ※今回はNFS専用にする予定だったので外しています。 |
|
確認画面が表示されますので、問題が無ければ作成をクリックします。これでストレージアカウントの作成は完了です。 |
コンテナー(Blobストレージ)の作成
ストレージアカウントでコンテナー(Blobストレージ)を作成します。今回は以下の設定内容で進めます。
-
-
- 設定内容
- ファイル共有名:fileshare01
- ルートスカッシュ:ルートスカッシュ無し(no_root_squash)
- 設定内容
-
ファイル共有設定 | |
ストレージアカウントでコンテナーのメニューを選択します。 |
|
ファイル共有が作成されている事が分かります。 |
Azure VM(CentOS)からコンテナー(Blobストレージ)をNFS共有(v3)でマウント
今回は2台のVM(CentOS)からNFSマウントしてみます。
-
- VM03
- サーバ名:NFS-TEST-03
- ユーザー名:testuser
- OS:CentOS7.9
- マウントポイント:/mount/nfsfiles01/fileshare01
- VM03
まずはVM01で先ほど確認したLinuxからの接続手順を利用して進めていきます。一部変更しています。
NFS共有のマウント | |
yum updateを実行します。-yオプションを追加して確認メッセージをYesでスキップするようにしています。
|
|
nfs-utilsをインストールします。
|
|
mkdirコマンドでマウントポイントのディレクトリを作成します。(-pオプションで無い階層も一緒に作れます。)
|
|
mountコマンドで、先ほど作成したマウントポイントに、ストレージアカウントのNFSファイル共有をマウントします。
【NFS共有(サーバパス)】 ストレージアカウント名.file.core.windows.net:/ストレージアカウント名/ファイル共有名 |
|
dfコマンドでマウント状況を確認するとマウントされている事が分かります。 ※サイズは5PBになるようです。
|
マウントしたNFS共有領域にファイルを作成
ファイルやディレクトリを作成してみます。
-
- ディレクトリ構成
- マウントポイント:/mount/nfsfiles01/fileshare01/
- 作成したディレクトリ名:nfstestdir01
- 作成したファイル名:nfstestfile
- ファイルの記載内容:nfs test
- ディレクトリ構成
※なぜかrootでやらないとうまく行かなかった為、今回はrootで実行しています。
ファイル作成確認 | ||
最初にマウントポイントの/mount/nfsfiles01/fileshare01/配下にnfstestdir01というディレクトリを作成します。
|
||
ストレージエクスプローラーでも確認してみます。 |
Windowsによるファイル共有(SMB)マウントはこちらで試しています。