注意
この記事で参照されている CentOS は Linux ディストリビューションであり、EOL (End Of Life) に到達します。 適宜、使用と計画を検討してください。 詳細については、「 CentOS End Of Life ガイダンス を参照してください。
この記事では、NFS Azure ファイル共有に関連する一般的な問題を一覧形式で提示し、考えられる原因と回避策を提供します。
テーブルを展開する
ファイル共有の種類
SMB
NFS
Standard ファイル共有 (GPv2)、LRS/ZRS
Standard ファイル共有 (GPv2)、GRS/GZRS
Premium ファイル共有 (FileStorage)、LRS/ZRS
Always-On Diagnostics (AOD) ツールを使用して、NFSv4 および SMB Linux クライアントのログを収集できます。 デーモンはバックグラウンドでシステム サービスとして実行され、dmesg ログ、デバッグ データ、エラー メトリック、待機時間メトリックなど、さまざまなソースの異常を検出するように構成できます。 tcpdump、nfsstat、mountstsat、およびその他のソースから、システムの CPU とメモリの使用量と共にデータをキャプチャできます。 このツールは、再現が困難なフィールドの問題に関するデバッグ情報を収集するのに役立ちます。
現在、Always-On 診断ツールは、SUSE Linux Enterprise Server 15 (SLES 15) および Red Hat Enterprise Linux 8 (RHEL 8) を実行しているシステムと互換性があります。 オペレーティング システムに対応するインストール手順に従います。
RHEL 8 で、次の手順に従って Always-On 診断ツールをインストールします。
リポジトリ構成パッケージをダウンロードします。
curl -ssl -O https://packages.microsoft.com/config/rhel/8/packages-microsoft-prod.rpm
リポジトリ構成パッケージをインストールします。
sudo rpm -i packages-microsoft-prod.rpm
パッケージ インデックス ファイルをインストールして更新した後、リポジトリ構成パッケージを削除します。
rm packages-microsoft-prod.rpm
sudo dnf update
パッケージをインストールします。
sudo dnf install aod
SLES 15 では、次の手順に従って Always-On 診断ツールをインストールします。
Microsoft リポジトリを追加します。 信頼されたキーの一覧に Microsoft リポジトリ キーを追加することが必要な場合があります。
sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
sudo zypper addrepo --check --refresh --name 'Microsoft' https://packages.microsoft.com/sles/15/prod microsoft
リポジトリを更新します。
sudo zypper refresh
リポジトリが追加され、 aod
パッケージがインストール可能かどうかを確認します。
zypper search aod
パッケージをインストールします。
sudo zypper install aod
現在、Ubuntu では Always-On 診断ツールを使用できません。
chgrp "filename" が失敗しました: 無効な引数 (22)
原因 1: idmapping が無効になっていない
Azure Files では英数字 UID/GID が許可されていないため、idmapping を無効にする必要があります。
原因 2: idmapping は無効になっていたが、無効なファイル名またはディレクトリ名が検出された後に再度有効化された
idmapping を正しく無効にしていても、場合によっては自動的に再度有効になることがあります。 たとえば、Azure Files が無効なファイル名を検出すると、エラーが返されます。 このエラー コードが発生すると、NFS 4.1 Linux クライアントは idmapping を再度有効にすることを決定し、英数字の UID/GID を使用して今後の要求を送信します。 Azure Files でサポートされていない文字の一覧については、こちらの記事 をご覧ください。 コロンは、サポートされていない文字の 1 つです。
idmapping を無効にしており、これを再度有効にするものがないことを確認します。 次の手順を実行します。
共有のマウントを解除します。
idmapping を無効にする方法:
sudo echo Y > /sys/module/nfs/parameters/nfs4_disable_idmapping
共有をマウントし直します。
rsync を実行している場合は、不適切なディレクトリまたはファイル名を持たないディレクトリから、 -numeric-ids
引数を指定して rsync を実行します。
原因: サポートされていないストレージ アカウントの設定
NFS は、次の構成のストレージ アカウントでのみ使用できます。
層: Premium
アカウントの種類: FileStorage
NFS ファイル共有の作成 の手順に従います。
NFS Azure ファイル共有を接続またはマウントできない
原因 1:要求の発信元が信頼できないネットワークまたは信頼できない IP にあるクライアントである
SMB とは異なり、NFS にはユーザーベースの認証がありません。 共有の認証は、ネットワーク セキュリティ規則の構成に基づいています。 クライアントで NFS 共有に対してセキュリティで保護された接続のみが確立されるようにするには、サービス エンドポイントまたはプライベート エンドポイントのいずれかを使用する必要があります。 プライベート エンドポイントに加えて、オンプレミスからも共有にアクセスするには、VPN または ExpressRoute 接続を設定する必要があります。 ファイアウォール用のストレージ アカウントの許可リストに追加された IP は無視されます。 NFS 共有へのアクセスを設定するには、次のいずれかの方法を使用する必要があります。
サービス エンドポイント
パブリック エンドポイントによってアクセスされます。
同じリージョンでのみ使用できます。
共有アクセスには VNet ピアリングを使用できません。
各仮想ネットワークまたはサブネットを許可リストに個別に追加する必要があります。
オンプレミス アクセスの場合は、ExpressRoute、ポイント対サイト、サイト間 VPN と共にサービス エンドポイントを使用できます。 安全性が高くなるので、プライベート エンドポイントを使用することをお勧めします。
次の図は、パブリック エンドポイントを使用した接続を示しています。
プライベート エンドポイント
アクセスは、サービス エンドポイントよりも安全です。
NFS 共有へのプライベート リンク経由のアクセスは、ストレージ アカウントの Azure リージョンの内部および外部 (リージョン間、オンプレミス) から使用できます。
プライベート エンドポイントでホストされている仮想ネットワークを使用した仮想ネットワーク ピアリングでは、ピアリングされた仮想ネットワーク内のクライアントに NFS 共有へのアクセスが許可されます。
プライベート エンドポイントを、ExpressRoute、ポイント対サイト VPN、サイト間 VPN と共に使用できます。
原因 2:[安全な転送が必須] が有効になっている
NFS Azure ファイル共有では、現在、二重暗号化はサポートされていません。 Azure では、Azure データセンター間で転送中のすべてのデータに対して、MACSec を使用した暗号化レイヤーが提供されます。 信頼された仮想ネットワークから、および VPN トンネル経由でのみ NFS 共有にアクセスできます。 NFS 共有で使用できるその他のトランスポート層暗号化はありません。
ストレージ アカウントの構成ブレードで 安全な転送が必要 を無効にします。
原因 3: nfs-utils、nfs-client、または nfs-common パッケージがインストールされていない
mount
コマンドを実行する前に、nfs-utils、nfs-client、または nfs-common パッケージをインストールします。
NFS パッケージがインストールされているかどうかを確認するには、 を実行します
このセクションの同じコマンドは、CentOS と Oracle Linux に適用されます。
sudo rpm -qa | grep nfs-utils
sudo rpm -qa | grep nfs-client
このセクションの同じコマンドが Debian に適用されます。
sudo dpkg -l | grep nfs-common
パッケージがインストールされていない場合は、お使いのディストリビューション固有のコマンドを使用してパッケージをインストールします。
このセクションの同じコマンドは、CentOS と Oracle Linux に適用されます。
OS バージョン 7.X
sudo yum install nfs-utils
OS バージョン 8.X または 9.X
sudo dnf install nfs-utils
sudo zypper install nfs-client
このセクションの同じコマンドが Debian に適用されます。
sudo apt update
sudo apt install nfs-common
原因 4:ファイアウォールによってポート 2049 がブロックされている
NFS プロトコルは、ポート 2049 経由でそのサーバーと通信します。 このポートがストレージ アカウント (NFS サーバー) に対して開いていることを確認します。
次のコマンドを実行して、ポート 2049 がクライアントで開いていることを確認します。 ポートが開いていない場合は開きます。
sudo nc -zv <storageaccountnamehere>.file.core.windows.net 2049
原因 5: ストレージ アカウントが削除されました
エラー: 接続がタイムアウトしたためにファイル共有をマウントできない場合 ファイル共有を含むストレージ アカウントが誤って削除される可能性があります。
ストレージ アカウントを回復します 。 次に、プライベート エンドポイントを削除して再作成し、新しいストレージ アカウントリソース ID に関連付けます。
一部のカーネルで、大きなディレクトリ列挙に対して ls がハングする
原因: Linux カーネル v5.11 でバグが導入され、v5.12.5 で修正されました
一部のカーネル バージョンには、ディレクトリの一覧が無限の READDIR シーケンスを引き起こすバグがあります。 すべてのエントリを 1 回の呼び出しで呼び出すことができる小さなディレクトリには、この問題はありません。
このバグは、Linux kernel v5.11 で確認され、v5.12.5 で修正されました。 したがって、その間のバージョンにはこのバグが存在します。 RHEL 8.4 にはこのカーネル バージョンが含まれています。
回避策: カーネルをダウングレードまたはアップグレードする
影響を受けるカーネル以外のカーネルにダウングレードまたはアップグレードすると、この問題は解決します。
システム コマンドが "ファイルが見つかりません" エラーで失敗する
NFS サービスによって生成される 64 ビットの inode 番号の書式設定により、inode 番号に依存する Linux 32 ビット アプリケーションが Azure Files で期待どおりに動作しない場合があります。
この問題を解決するには、次の方法のいずれかを使用してください。
このカーネル ブート オプションは、 grub.conf ファイルに保持することもできます。 詳細については、Linux ディストリビューションのドキュメントを参照してください。
NFS ファイル共有に対するアクセス許可は、Azure Files サービスではなく、クライアント OS によって適用されます。 NFS ファイル共有で Root Squash 設定が有効になっている場合、クライアント システムのルート ユーザーは、アクセス制御のために匿名 (特権のない) ユーザーとして扱われます。 つまり、クライアント システムで root としてログインしている場合でも、 chown
コマンドを使用して、所有していないファイルとディレクトリの所有権を変更することはできません。
Azure portal でファイル共有に移動し、 Properties を選択します。
Root スカッシュ 設定を ルート スカッシュ に変更します。 詳細については、「 Azure Files のルート スカッシュの構成 」を参照してください。
ルート スカッシュが有効になっていない 、クライアント システムのルート ユーザーは、サーバー システムのルート ユーザーと同じ権限を持ちます。
chown
を使用して、現在の所有者に関係なく、共有内の任意のファイルまたはディレクトリの所有権を変更できるようになりました。 変更を加えた後、必要に応じて Root スカッシュ を再度有効にすることができます。
まだ支援が必要な場合は、問題を迅速に解決するために、サポートにお問い合わせ ください。
サードパーティの情報に関する免責事項
この資料に記載されているサードパーティ製品は、マイクロソフトと関連のない他社の製品です。 明示的か黙示的かにかかわらず、これらの製品のパフォーマンスや信頼性についてマイクロソフトはいかなる責任も負わないものとします。
質問がある場合やヘルプが必要な場合は、サポート要求を作成 するか、Azure コミュニティ サポート にお問い合わせください。
Azure フィードバック コミュニティ に製品フィードバックを送信することもできます。