Linux (SMB) でのAzure Filesの問題のトラブルシューティング
この記事では、Linux クライアントで SMB Azure ファイル共有を使用するときに発生する可能性がある一般的な問題を示します。 また、これらの問題の考えられる原因と解決策も提供します。
AzFileDiagnostics を使用して症状検出を自動化し、Linux クライアントに正しい前提条件があることを確認できます。 これは、最適なパフォーマンスを得るために環境を設定するのに役立ちます。 この情報は、 Azure ファイル共有のトラブルシューティング ツールでも確認できます。
重要
この記事は SMB 共有にのみ適用されます。 NFS 共有の詳細については、「 NFS Azure ファイル共有のトラブルシューティング」を参照してください。
適用対象
ファイル共有の種類 | SMB | Nfs |
---|---|---|
標準ファイル共有 (GPv2)、LRS/ZRS | ||
標準ファイル共有 (GPv2)、GRS/GZRS | ||
Premium ファイル共有 (FileStorage)、LRS/ZRS |
ファイルのコピー時にタイム スタンプが失われました
Linux/Unix プラットフォームでは、異なるユーザーが cp -p
ファイル 1 とファイル 2 を所有している場合、コマンドは失敗します。
原因
COPYFILE の force フラグ f
は Unix で実行されます cp -p -f
。 このコマンドは、所有していないファイルのタイム スタンプの保持にも失敗します。
回避策
ストレージ アカウント ユーザーを使用してファイルをコピーします。
str_acc_name=[storage account name]
sudo useradd $str_acc_name
sudo passwd $str_acc_name
su $str_acc_name
cp -p filename.txt /share
ls: 'path>'< にアクセスできません: 入力/出力エラー
コマンドを使用 ls
して Azure ファイル共有内のファイルを一覧表示しようとすると、ファイルを一覧表示するときにコマンドがハングします。 次のエラーが発生します。
ls: アクセスできません'path>'<: 入力/出力エラー
ソリューション
Linux カーネルを、この問題の修正プログラムがある次のバージョンにアップグレードします。
- 4.4.87+
- 4.9.48+
- 4.12.11+
- 4.13 以上のすべてのバージョン
シンボリック リンクを作成できません - ln: シンボリック リンク 't' の作成に失敗しました: 操作はサポートされていません
原因
既定では、SMB を使用して Linux に Azure ファイル共有をマウントしても、シンボリック リンク (symlinks) のサポートは有効になりません。 次のようなエラーが表示される場合があります。
sudo ln -s linked -n t
ln: failed to create symbolic link 't': Operation not supported
ソリューション
Linux SMB クライアントでは、SMB 2 または 3 プロトコル経由での Windows スタイルのシンボリック リンクの作成はサポートされていません。 現在、Linux クライアントは、作成操作とフォロー操作の両方で 、Minshall+French symlinks と呼ばれる別のスタイルのシンボリック リンクをサポートしています。 シンボリック リンクが必要なお客様は、"mfsymlinks" マウント オプションを使用できます。 Mac で使用される形式でもあるため、"mfsymlinks" をお勧めします。
シンボリックリンクを使用するには、SMB マウント コマンドの最後に次のコマンドを追加します。
,mfsymlinks
そのため、コマンドは次のようになります。
sudo mount -t cifs //<storage-account-name>.file.core.windows.net/<share-name> <mount-point> -o vers=<smb-version>,username=<storage-account-name>,password=<storage-account-key>,dir_mode=0777,file_mode=0777,serverino,mfsymlinks
その後、 wiki で提案されているようにシンボリックリンクを作成できます。
末尾にスペースまたはドットがある名前のフォルダーまたはファイルにアクセスできない
Linux にマウントされている間、Azure ファイル共有からフォルダーまたはファイルにアクセスすることはできません。 du や ls やサード パーティ製アプリケーションなどのコマンドは、共有へのアクセス中に "このようなファイルまたはディレクトリなし" エラーで失敗する可能性があります。ただし、Azure portalを使用してこれらのフォルダーにファイルをアップロードできます。
原因
フォルダーまたはファイルは、名前の末尾にある文字を別の文字にエンコードするシステムからアップロードされました。 Macintosh コンピューターからアップロードされたファイルには、0x20 (スペース) または0X2E (ドット) ではなく、"0xF028" または "0xF029" 文字が含まれる場合があります。
ソリューション
Linux で共有をマウントする場合は、共有の mapchars オプションを使用します。
代わりに:
sudo mount -t cifs $smbPath $mntPath -o vers=3.0,username=$storageAccountName,password=$storageAccountKey,serverino
次のコマンドを使用します:
sudo mount -t cifs $smbPath $mntPath -o vers=3.0,username=$storageAccountName,password=$storageAccountKey,serverino,mapchars
Azure ストレージ アカウントのライブ マイグレーションに関する DNS の問題
マウントされたファイルシステム上のファイル I/O で、"ホストがダウンしています" または "アクセス許可が拒否されました" というエラーが発生します。 クライアント上の Linux dmesg ログには、次のような繰り返しエラーが表示されます。
Status code returned 0xc000006d STATUS_LOGON_FAILURE
cifs_setup_session: 2 callbacks suppressed
CIFS VFS: \\contoso.file.core.windows.net Send error in SessSetup = -13
また、サーバー FQDN が現在接続されている IP アドレスとは異なる IP アドレスに解決されるようになったことも確認できます。
原因
容量の負荷分散のために、ストレージ アカウントは、あるストレージ クラスターから別のストレージ クラスターにライブ マイグレーションされる場合があります。 アカウントの移行では、ターゲット クラスターを指すように DNS マッピングを更新することで、ソース クラスターから宛先クラスターにリダイレクトされるトラフィックをAzure Filesトリガーします。 これにより、そのアカウントからソース クラスターへのすべてのトラフィックがブロックされます。 SMB クライアントが DNS 更新プログラムを受け取り、さらにトラフィックを宛先クラスターにリダイレクトすることが予想されます。 ただし、Linux SMB カーネル クライアントのバグのため、このリダイレクトは有効になりません。 その結果、データ トラフィックはソース クラスターに移動し続け、移行後にこのアカウントの提供が停止します。
回避策
この問題は、クライアント OS を再起動することで軽減できますが、アカウント移行のサポートを使用してクライアント OS を Linux ディストリビューション バージョンにアップグレードしないと、問題が再び発生する可能性があります。 一時的に問題を解決するために、共有の umount と再マウントが表示される場合があることに注意してください。
この問題を回避するには、カーネル DNS リゾルバー キャッシュをクリアします。
次のコマンドを実行して、カーネル
dns_resolver
モジュールの状態を表示します。grep '.dns_resolver' /proc/keys
次の例のようなコマンド出力が表示されます。
132b6bbf I------ 1 perm 1f030000 0 0 keyring .dns_resolver: 1
次のコマンドを実行して、カーネル DNS リゾルバー キャッシュをクリアします。
sudo keyctl clear $((16#$(grep '.dns_resolver' /proc/keys | cut -f1 -d\ ) ))
カーネル
dns_resolver
モジュールの状態をもう一度表示します。grep '.dns_resolver' /proc/keys
次の例のようなコマンド出力が表示され、キャッシュが空になったことを示します。
132b6bbf I------ 1 perm 1f030000 0 0 keyring .dns_resolver: empty
ソリューション
永続的な修正を行う場合は、アカウント移行のサポートを使用して、クライアント OS を Linux ディストリビューション バージョンにアップグレードします。 Linux SMB カーネル クライアントのいくつかの修正がメインラインの Linux カーネルに送信されました。 カーネル バージョン 5.15 以降と Keyutils-1.6.2 以降には修正プログラムがあります。 一部のディストリビューションでは、これらの修正プログラムがバックポートされており、使用しているディストリビューション バージョンに次の修正が存在する場合にチェックできます。
FIPS が有効になっていると SMB ファイル共有をマウントできない
Linux VM で Federal Information Processing Standard (FIPS) が有効になっている場合、SMB ファイル共有をマウントできません。 クライアントの Linux dmesg ログには、次のようなエラーが表示されます。
kernel: CIFS: VFS: Could not allocate crypto hmac(md5)
kernel: CIFS: VFS: Error -2 during NTLMSSP authentication
kernel: CIFS: VFS: \\contoso.file.core.windows.net Send error in SessSetup = -2
kernel: CIFS: VFS: cifs_mount failed w/return code = -2
重要
FIPS は、米国政府がコンピューター システムのセキュリティと整合性を確保するために使用する一連の標準です。 システムが FIPS モードの場合は、これらの標準で概説されている特定の暗号化要件に準拠します。
原因
SMB ファイル共有のクライアントは NTLMSSP 認証を使用します。これには MD5 ハッシュ アルゴリズムが必要です。 ただし、FIPS モードでは、MD5 アルゴリズムは FIPS に準拠していないため制限されます。 MD5 は、128 ビットハッシュ値を生成する広く使用されているハッシュ関数です。 ただし、MD5 は暗号化のために安全でないと見なされます。
FIPS モードが有効になっているかどうかをチェックする方法
クライアントで FIPS モードが有効かどうかを確認するには、次のコマンドを実行します。 値が 1 に設定されている場合は、FIPS が有効になります。
sudo cat /proc/sys/crypto/fips_enabled
ソリューション
この問題を解決するには、SMB ファイル共有の Kerberos 認証を有効にします。 意図せずに FIPS が有効になっている場合は、 option2 を参照して無効にします。
オプション 1: SMB ファイル共有の Kerberos 認証を有効にする
FIPS が有効になっている Linux VM に SMB ファイル共有をマウントするには、Kerberos/Azure AD 認証を使用します。 詳細については、「Azure Filesにアクセスする Linux クライアントの SMB 経由で Active Directory 認証を有効にする」を参照してください。
オプション 2: FIPS を無効にして Samba 共有をマウントする
で sysctl 値
crypto.fips_enabled
を 0 に/etc/sysctl.conf
変更します。ファイル内の
/etc/default/grub
をGRUB_CMDLINE_LINUX_DEFAULT
変更し、 パラメーターを削除しますfips=1
。次のコマンドを使用して grub2 構成ファイルを再構築します。
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
次のコマンドを使用して、initramfs イメージをリビルドします。
sudo dracut -fv
VM を再起動します。
詳細については、Linux ディストリビューターの次のドキュメントを参照してください。
- RedHat: カーネル中断 CIFS マウントで FIPS モードを有効にする理由
- SUSE: CIFS のマウントがエラー "mount error(2): No such file or directory" で失敗する
お困りの際は、
それでも問題が解決しない場合は、 サポートにお問い合わせください 。
関連項目
- Azure Filesのトラブルシューティング
- Azure Filesパフォーマンスのトラブルシューティング
- Azure Files接続 (SMB) のトラブルシューティング
- Azure Files認証と承認 (SMB) のトラブルシューティング
- Linux Azure Files一般的な NFS の問題のトラブルシューティング
- Azure File Syncの問題のトラブルシューティング
お問い合わせはこちらから
質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示