mcpField
A
alibabacloud-nas-mount-diagnosis

alibabacloud-nas-mount-diagnosis

github.com/aliyunクラウド・DevOps28171 回インストール1 日前に更新
リポジトリ

alibabacloud-nas-mount-diagnosis について

プロトコル、OS、エラー内容に基づき、Alibaba Cloud NASのマウント障害を診断するAgent Skillです。NFSまたはSMBを利用するユーザー向けに、Alibaba Cloud APIでの確認と、Linux、Windows、コンテナ環境別の調査手順を提供します。

主な機能

  1. 01NFSとSMBのマウント障害診断
  2. 02Linux、Windows、コンテナ環境に対応
  3. 03ファイルシステム、マウントターゲット、アクセスグループの照会
  4. 04ネットワーク、VPC、セキュリティグループの確認
  5. 05エラーメッセージから一般的な原因を特定

活用シーン

  1. 01LinuxでのNFSマウント障害の調査
  2. 02WindowsでのSMBまたはNFSマウント問題の診断
  3. 03NASのアクセスルールとネットワーク接続の確認
  4. 04コンテナ環境におけるNASマウントエラーの特定

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/aliyun/alibabacloud-aiops-skills --skill alibabacloud-nas-mount-diagnosis

インストール後、Claude Code で/alibabacloud-nas-mount-diagnosisを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
nfs-linux-errors.md
ram-policies.md
smb-linux-requirements.md
smb-windows-errors.md
scripts/
nas_mount_diagnose.py
requirements.txt

詳細

NAS のマウント障害のトラブルシューティング

Linux/Windows システムでの NFS/SMB プロトコルによるマウントを対象に、Alibaba Cloud NAS のマウント障害を診断して解決します。

前提条件

CLI ツール
aliyun CLI の初期化

診断のたびに、プラグインを更新して自動インストール時のタイムアウトを防いでください。

aliyun plugin update

CLI の使用上の注意:

  • aliyun CLI はデフォルトで JSON を出力します。--output json や出力形式のフラグは追加しないでください。エラーの原因になります。
  • プラグインの自動インストールによりコマンドが失敗した場合(タイムアウトまたはプロンプトが表示された場合)は、まず aliyun plugin update を実行してから、まったく同じコマンドを再試行してください。
  • コマンドがタイムアウトした場合は再試行してください。スキップしたり、ほかの API 応答のデータで代用したりしないでください。

可観測性

診断セッション中に実行するすべての aliyun CLI 呼び出しには、追跡用に --user-agent フラグを必ず含めてください。

--user-agent AlibabaCloud-Agent-Skills/alibabacloud-nas-mount-diagnosis/{session-id}

session-id の生成ルール:

  • 各診断セッションの開始時に一度だけ生成します
  • 形式:32 文字の小文字の 16 進数文字列(例:a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6)
  • セッション内のすべての CLI 呼び出しで、同じ session-id を一貫して使用します
  • 生成例:python3 -c "import uuid; print(uuid.uuid4().hex)"

使用例:

aliyun nas describe-file-systems --file-system-id 18bfd49621 --region cn-beijing --user-agent AlibabaCloud-Agent-Skills/alibabacloud-nas-mount-diagnosis/a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6

禁止事項: aliyun configure ai-mode、export ALIBABA_CLOUD_USER_AGENT、グローバル UA 設定など、非推奨の方法は使用しないでください。必ずコマンドごとに --user-agent を渡してください。

Alibaba Cloud の認証情報

認証情報は aliyun CLI のプロファイルを通じて設定する必要があります。参考:https://help.aliyun.com/document_detail/123181.html

ネットワーク要件
  • 診断を実行するマシンから Alibaba Cloud OpenAPI にアクセスできる必要があります
  • リモート ECS の診断には、SSH アクセスまたは Cloud Assistant のインストールが必要です

必要な RAM 権限

このスキルは書き込み操作を行わず、読み取り専用の診断操作のみを実行します。必要な RAM 権限と推奨ポリシーの全一覧については、references/ram-policies.md を参照してください。

ワークフロー

ステップ 1:基本情報の収集

トラブルシューティングを開始する前に、ユーザーから次の情報を収集してください。

情報質問方法
マウントターゲットアドレス「NAS のマウントターゲットアドレスを教えてください。例:file-system-id.region.nas.aliyuncs.com」
ファイルシステムのプロトコル「マウントには NFS と SMB のどちらのプロトコルを使用していますか?」
オペレーティングシステム「ECS インスタンスは Linux と Windows のどちらで動作していますか?具体的なバージョンも教えてください」
エラーメッセージ「エラーメッセージの全文を教えてください」
マウントコマンド「実行したマウントコマンドを教えてください」
リージョン「NAS ファイルシステムが配置されているリージョンを教えてください(例:cn-hangzhou)」
マウントターゲットアドレスから NAS の種類を特定し、ファイルシステム ID を抽出する

ユーザーからマウントターゲットアドレスが提供された場合、ドメイン形式から NAS の種類、リージョン、ファイルシステム ID を直接抽出できるため、追加の質問は不要です。

NAS の種類マウントターゲットのドメイン形式例ファイルシステム ID の抽出ルール
汎用<fsid>-<suffix>.<region>.nas.aliyuncs.com18bfd49621-nyh99.cn-beijing.nas.aliyuncs.comfsid = 最初の - より前の部分 → 18bfd49621
Extreme<hex-id>-<suffix>.<region>.extreme.nas.aliyuncs.com014020e9-ohem.cn-beijing.extreme.nas.aliyuncs.comfsid = extreme- + 最初の - より前の部分 → extreme-014020e9

簡単な判別方法: ドメインに .extreme. が含まれていれば Extreme NAS、含まれていなければ汎用 NAS です。リージョンはドメインの 2 番目のセグメントから直接抽出できます(例:cn-beijing)。

Step 2: 事前確認

詳しいトラブルシューティングに進む前に、次の基本条件を確認してください。

  1. マウントターゲットの状態確認 — DescribeMountTargets API を呼び出し、マウントターゲットの VPC と状態を確認します。この API は単独で呼び出し、正常に成功(2xx)する必要があります。DescribeFileSystems など、ほかの API のデータで代用しないでください。

    aliyun nas describe-mount-targets --file-system-id <file-system-id> --region <region>
    

    マウントターゲットが休止状態の場合は、コンソールまたは OpenAPI から再度有効にするようユーザーに案内してください。

    重要: DescribeMountTargets が 404 またはエラーを返す場合、最も可能性の高い原因は --region の値が正しくないことです。マウントターゲットのドメインから正しいリージョンを特定し(例:xxx.cn-beijing.nas.aliyuncs.com → リージョンは cn-beijing)、再試行してください。

  2. アカウント残高の確認 — アカウントに未払い料金がないことを確認します。支払いが滞ると NAS サービスが停止します。

  3. ファイルシステム情報の照会 — ファイルシステムの種類とプロトコル情報を取得します。

    aliyun nas describe-file-systems --file-system-id <file-system-id> --region <region>
    
クイック診断:エラーメッセージのパターン照合

一連のトラブルシューティングに進む前に、エラーメッセージから問題を特定できるか確認します。

  • エラーに access denied by server while mounting が含まれ、マウントパスにサブディレクトリが含まれている場合(例::/data、:/share/subdir)→ 最も可能性の高い原因:サブディレクトリが存在しません。汎用 NAS とエクストリーム NAS のどちらでも、サブディレクトリを手動でマウントしても自動作成されません。存在しないサブディレクトリはアクセス拒否として報告されます。解決方法:最初にルートディレクトリ :/ をマウントし、サブディレクトリを作成してから、サブディレクトリを再マウントします。
  • エラー mount.nfs: No such device → sunrpc モジュールの設定ミスです。「一般的なエラーのクイックリファレンス」表を参照してください。
  • エラーに Windows のシステムエラーコードが含まれている場合 → 「一般的なエラーのクイックリファレンス」表を直接参照してください。

エラーメッセージから問題をすぐに特定できない場合は、以下のシナリオ別トラブルシューティングに進んでください。

Step 3: シナリオ別トラブルシューティング

ユーザーのオペレーティングシステムとプロトコルの種類に応じて、該当するトラブルシューティングフローに進みます。

シナリオ A:Linux での NFS プロトコルのマウント失敗

まず、ユーザーに公式の自動チェック用スクリプトを実行して、問題をすばやく診断するよう勧めてください。

# Download auto-check script
wget --timeout=30 https://nas-client-tools.oss-cn-hangzhou.aliyuncs.com/linux_client/check_alinas_nfs_mount.py -P /tmp/

# Run check
python2.7 /tmp/check_alinas_nfs_mount.py <mount-target-address>:/ /mnt

自動スクリプトで問題を特定できない場合は、手動でトラブルシューティングを進めてください。references/nfs-linux-errors.md を参照してください。

手動でのトラブルシューティングのチェックリスト:

  1. サブディレクトリのマウント確認 — マウントパスにサブディレクトリ(例::/data、:/share/subdir)が含まれ、エラーが access denied の場合、最も可能性の高い原因はサブディレクトリが存在しないことです。このルールは汎用 NAS とエクストリーム NAS の両方に適用されます。解決方法:最初にルートディレクトリを sudo mount ... <mount-target>:/ /mnt でマウントし、mkdir /mnt/<subdir> を実行して作成します。その後、アンマウントしてサブディレクトリを再マウントします。
  2. NFS クライアントのインストール確認 — nfs-utils(RHEL/CentOS)または nfs-common(Debian/Ubuntu)がインストールされていることを確認します。
  3. ネットワーク接続 — ping <mount-target-address> を実行してネットワークを確認します。
  4. ポート接続 — telnet <mount-target-address> 2049 を実行して NFS ポートを確認します。
  5. 権限グループの設定 — API を使用して、権限グループが ECS からのアクセスを許可しているか確認します。
  6. VPC の整合性 — ECS とマウントターゲットが同じ VPC 内にあるか、Cloud Enterprise Network(CEN)経由で接続されていることを確認します。
  7. セキュリティグループのルール — セキュリティグループの送信ルールで NFS ポート 2049 がブロックされていないか確認します(通常のセキュリティグループとエンタープライズセキュリティグループの違いに注意してください。「セキュリティグループルールの確認」セクションを参照)。
  8. マウントコマンドの形式 — マウントコマンドのパラメーターが正しいことを確認します。

標準的なマウントコマンドは references/nfs-linux-errors.md に記載されています(エラー 2 の解決方法には、汎用 NFS v3/v4 とエクストリーム NAS 用の標準的なマウントコマンドが含まれています)。

シナリオ B:Windows SMB プロトコルのマウント失敗

まず、公式の自動チェック スクリプトを実行するようユーザーに案内してください。

# Download inspection script
Invoke-WebRequest -TimeoutSec 30 https://nas-client-tools.oss-cn-hangzhou.aliyuncs.com/windows_client/alinas_smb_windows_inspection.ps1 -OutFile alinas_smb_windows_inspection.ps1

# Run inspection script
.\alinas_smb_windows_inspection.ps1 -MountAddress <mount-target-address> -Locale zh-CN

自動スクリプトで問題を特定できない場合は、エラーコードに基づいて手動でトラブルシューティングを進めます。references/smb-windows-errors.md を参照してください。

手動トラブルシューティングのチェックリスト:

  1. ポート 445 の接続性 — telnet <mount-target-address> 445
  2. ネットワークサービス — TCP/IP NetBIOS Helper サービスと Workstation サービスが実行中であることを確認します
  3. VPC の整合性 — ECS とマウントターゲットが同じ VPC 内にあることを確認します
  4. 権限グループの設定 — 権限グループで ECS の IP アドレスへのアクセスが許可されているか確認します
  5. マウントコマンドの形式 — net use <drive-letter> \\<mount-target-address>\myshare
シナリオ C:Linux SMB プロトコルのマウント失敗

トラブルシューティングの手順:

  1. OS バージョンの確認 — Linux のバージョンが NAS SMB のサポート範囲内であることを確認します(references/smb-linux-requirements.md を参照)
  2. CIFS クライアントの確認 — cifs-utils がインストールされていることを確認します
  3. ネットワーク接続 — ping <mount-target-address> と telnet <mount-target-address> 445
  4. VPC とアカウントの整合性
  5. 権限グループの設定
  6. root/sudo 権限
  7. マウントコマンドの正確性:
    sudo mount -t cifs //<mount-target-address>/myshare /mnt -o vers=2.0,guest,uid=0,gid=0,dir_mode=0755,file_mode=0755,mfsymlinks,cache=strict,rsize=1048576,wsize=1048576
    
  8. SELinux の設定
  9. マウント接続数の上限 — ファイルシステムごとに最大 1000
シナリオ D:Windows NFS プロトコルのマウント失敗

トラブルシューティングの手順:

  1. アカウントの整合性 — ECS とマウントターゲットが同じアカウントに属していることを確認します
  2. VPC の整合性
  3. ポートの確認 — ポート 2049 と 111
    Test-NetConnection <mount-target-address> -Port 2049
    Test-NetConnection <mount-target-address> -Port 111
    
  4. 権限グループの設定
シナリオ E:コンテナ(K8s/Docker)の NAS マウント失敗

access denied by server while mounting <mount-address> エラーが発生した場合:

  1. マウントディレクトリが存在することを確認します
  2. コンテナの起動ユーザーに root 権限があることを確認します(コンテナは特権モードで実行する必要があります)
  3. マウントターゲットの権限グループにコンテナの IP アドレスが含まれていることを確認します
ステップ 4:API を利用した診断

Alibaba Cloud API を使用して自動チェックを実行します。以下の各 API は個別に呼び出し、2xx を返す必要があります。他の API レスポンスに含まれるデータを使って API 呼び出しを省略しないでください。

リージョンの特定: 以下のすべての API 呼び出しには、正しい --region が必要です。マウントターゲットのドメインからリージョンを特定します(例:xxx.cn-beijing.nas.aliyuncs.com → cn-beijing)。API が 404 を返す場合は、再試行する前にリージョンが正しいことを確認してください。

# 1. Query file system information
aliyun nas describe-file-systems --file-system-id <fs-id> --region <region>

# 2. Query mount targets — MUST call separately to get VPC, status, and access group
aliyun nas describe-mount-targets --file-system-id <fs-id> --region <region>

# 3. Query permission group rules — check if ECS IP is in the allow list
aliyun nas describe-access-rules --access-group-name <access-group-name> --region <region>

# 4. Query ECS instance information — get VPC ID and private IP
aliyun ecs describe-instances --instance-ids '["<instance-id>"]' --biz-region-id <region>

# 5. Query security group rules — check if port is allowed
aliyun ecs describe-security-group-attribute --security-group-id <sg-id> --biz-region-id <region>

診断ロジック:

  • ECS の VpcId とマウントターゲットの VpcId を比較し、整合性を確認します。VPC が異なる場合は、Cloud Assistant を介して ECS 上のネットワーク接続(DNS 解決、ping、ポートのプローブ)を調べ、CEN 経由で接続が確立されているか判断します
  • 権限グループのルールに ECS のプライベート IP アドレスまたはそのサブネットが含まれているか確認します
  • セキュリティグループの送信ルールで対象ポート(NFS:2049、SMB:445)が許可されているか確認します。診断時は、セキュリティグループの種類とデフォルトルールを考慮してください(「セキュリティグループルールの確認」セクションを参照)
セキュリティグループルールの確認

セキュリティグループは通常のセキュリティグループとエンタープライズセキュリティグループに分かれており、デフォルトのアクセス制御ルールが異なるため、診断時には区別する必要があります。

通常のセキュリティグループとエンタープライズセキュリティグループのデフォルトルール
セキュリティグループの種類受信のデフォルトルール送信のデフォルトルール
通常同じセキュリティグループ内のインスタンスからのイントラネットトラフィックのみを許可しますすべてのトラフィックを許可します
エンタープライズすべてのトラフィックを拒否しますすべてのトラフィックを拒否します

主な違い: 通常のセキュリティグループでは、デフォルトですべての送信トラフィックが許可されます。NFS のポート 2049 または SMB のポート 445 に一致する送信ルールを明示的に設定していなくても、トラフィックは通過できます。明示的な送信ルールが必要なのは、エンタープライズセキュリティグループのみです。

セキュリティグループの種類を判別する方法

describe-security-groups API を使用して、SecurityGroupType フィールドを確認します。

aliyun ecs describe-security-groups --security-group-id <sg-id> --biz-region-id <region>
  • SecurityGroupType: normal → 通常のセキュリティグループ
  • SecurityGroupType: enterprise → エンタープライズセキュリティグループ

describe-security-group-attribute の InnerAccessPolicy フィールドも判別に役立ちます。

  • InnerAccessPolicy: Accept → 通常のセキュリティグループ(グループ内の接続が可能)
  • エンタープライズセキュリティグループには、このフィールドがないか、値が異なります
セキュリティグループの診断フロー
  1. セキュリティグループの種類を判別します(通常またはエンタープライズ)
  2. 通常のセキュリティグループの場合:
    • デフォルトでアウトバウンドのすべてのトラフィックが許可されるため、通常は NAS のマウントを妨げません
    • NAS 関連ポートをブロックする明示的な Drop ルールのみ確認します
    • NAS ポートに一致するカスタム Drop ルールがある場合にのみ、マウントに失敗します
  3. エンタープライズセキュリティグループの場合:
    • デフォルトでアウトバウンドのすべてのトラフィックが拒否されるため、明示的な Allow ルールが必要です
    • NAS マウント先 IP への TCP アウトバウンド接続を許可するルールがあることを確認します(NFS:2049、SMB:445)
    • 該当するルールがない場合は、追加する必要があります
セキュリティグループのルール照合戦略

ECS が複数のセキュリティグループに関連付けられている場合、ルールは次の順序で照合されます。

  1. すべてのセキュリティグループのルールを集約します
  2. 優先度順に並べ替えます(数値が小さいほど優先度が高くなります)
  3. 同じ優先度の場合、Drop ルールが Accept ルールより優先されます
  4. 一致するカスタムルールがない場合は、セキュリティグループのデフォルトルールを使用します
セキュリティグループで常に許可される特別なトラフィック

以下のトラフィックはセキュリティグループで常に許可され、ルールでブロックできません。

  • Alibaba Cloud ネットワーク接続の検出(オンデマンドの Ping プローブ)
  • ICMP PMTUD エラーメッセージ(Path MTU Discovery)
  • SLB ロードバランサーの転送トラフィック(SLB のセキュリティグループ/ACL で制御)
  • MetaServer へのアクセス(100.100.100.200、インスタンスメタデータサービス)
ステップ 5:診断レポートを出力する

次のテンプレートを使用して結果を出力します。

# NAS Mount Failure Diagnosis Report

## Basic Information
- File System ID: xxx
- File System Type: General Purpose / Extreme
- Protocol Type: NFS / SMB
- Mount Target Address: xxx
- Mount Target Status: Active / Hibernated
- ECS Instance ID: xxx
- Operating System: xxx

## Check Results
| Check Item | Status | Details |
|-----------|--------|---------|
| Mount target status | ✅/❌ | ... |
| VPC consistency | ✅/❌ | ... |
| Permission group | ✅/❌ | ... |
| Security group type | Normal/Enterprise | ... |
| Security group port | ✅/❌ | Normal SG allows all egress by default; Enterprise SG requires explicit rules |
| Network connectivity | ✅/❌ | ... |
| Client installation | ✅/❌ | ... |
| Mount command format | ✅/❌ | ... |

## Root Cause
[Specific description of the identified issue]

## Solution
[List resolution steps in priority order]

一般的なエラーのクイックリファレンス

次の特定のエラーメッセージが表示された場合は、問題を直接特定できます。

エラーメッセージ根本原因解決策
mount.nfs: No such devicesunrpc モジュールの設定ミス/etc/modprobe.d/sunrpc.conf の tcp_slot_table_entries を修正し、modprobe sunrpc を実行します
mount: can't find ... in /etc/fstabマウントコマンドの形式が正しくありません正しい sudo mount -t nfs -o ... コマンドを使用します
mount.nfs: Operation not permitted (NFSv4)ECS ホスト名の競合echo 'install nfs /sbin/modprobe --ignore-install nfs nfs4_unique_id=\cat /sys/class/dmi/id/product_uuid`' >> /etc/modprobe.d/nfs.conf` を実行し、ECS を再起動します
access denied by server while mounting .../<dir>サブディレクトリが存在しませんまずルートディレクトリをマウントし、サブディレクトリを作成してから、再度マウントします
file handle error (Windows NFS)ロック用のレジストリキーがありませんレジストリの ClientForNFS\...\Mount に、値が 1 の DWORD Locking を作成します
Windows システムエラー 53ネットワークパスに到達できませんネットワーク接続、TCP/IP NetBIOS Helper サービス、LanmanWorkstation レジストリを確認します
Windows システムエラー 58SMB プロトコルのバージョンに互換性がありませんWindows のバージョンが 2008 R2 以降であることを確認します
Windows システムエラー 64権限グループが承認されていません権限グループのルール、アカウント残高、ファイルシステムの種類を確認します
Windows システムエラー 67ネットワークサービスが起動していませんWorkstation サービスと TCP/IP NetBIOS Helper サービスを有効にします
Windows システムエラー 85ドライブ文字がすでに使用されています別のドライブ文字を使用して再度マウントします
Windows システムエラー 1231Microsoft ネットワーククライアントがインストールされていませんMicrosoft ネットワーククライアントとファイルとプリンターの共有をインストールして有効にします
Windows システムエラー 1272セキュリティポリシーによりゲストアクセスがブロックされていますレジストリの AllowInsecureGuestAuth を 1 に設定します
Windows システムエラー 3227320323デジタル署名ポリシーの競合「Microsoft ネットワーク クライアント:通信にデジタル署名を行う(常に)」ポリシーを無効にします
Windows システムエラー 1312PowerShell のマウント時のユーザー名エラー正しいワークグループ名とユーザー名を入力します
起動時の自動マウント失敗(CentOS 7)remote-fs.target が有効になっていませんsystemctl enable remote-fs.target
Windows NFS ネットワークエラー 1222NFS クライアントがインストールされていませんNFS クライアントをインストールします

重要な注意事項

  • このスキルは読み取り専用の診断操作のみを実行し、クラウドリソースの設定は変更しません
  • 診断によって変更が必要な設定(セキュリティグループ、権限グループなど)が判明した場合は、解決策をユーザーに伝え、ユーザー自身に操作してもらってください
  • API 経由でリモート診断できない問題(ECS 内部のクライアントインストール状況など)については、ECS 上で確認コマンドを実行するようユーザーに案内してください
  • サブディレクトリのマウント時にアクセスが拒否される場合:General Purpose NAS と Extreme NAS のどちらも、mount コマンドを手動で実行してサブディレクトリをマウントしても、そのディレクトリは自動作成されません。存在しないサブディレクトリを指定すると、access denied by server while mounting が表示されます。共通の解決策は、まずルートディレクトリ(General Purpose は :/、Extreme は :/ または :/share)をマウントし、手動で mkdir を実行してサブディレクトリを作成してから、そのサブディレクトリをマウントすることです
  • Extreme NAS のパスの対応関係::/ と :/share は同じルートディレクトリを指し、:/subdir と :/share/subdir は同じサブディレクトリを指します
  • 診断前に必ずセキュリティグループの種類を確認してください:通常のセキュリティグループでは、デフォルトですべてのアウトバウンドトラフィックが許可されます。アウトバウンドルールが明示的に設定されていないという理由だけで、ポートがブロックされていると誤って判断しないでください。エンタープライズセキュリティグループでは、デフォルトでアウトバウンドが拒否されるため、明示的な許可ルールが必要です

コメント