ここでは、Linux 上で動作している ECS インスタンスから SMB ファイルシステムにアクセスする場合の一般的な問題、原因、および解決策について説明します。

SMB ファイルシステムをマウントできない

原因:
  • 古いバージョンまたは互換性のないバージョンの Linux を使用している。 SMB ファイルシステムで対応している Linux ディストリビューションは次のとおりです。
    • CentOS 7.6 64 ビット (3.10.0-957.5.1.el7.x86_64)
    • Ubuntu 18.04 64 ビット (4.15.0-48-generic)
    • Debian 9.9 64 ビット (4.9.0-9-amd64)
    • SUSE Enterprise Server 12 SP2 64 ビット (4.4.74-92.35-default)
    • OpenSUSE 42.3 64 ビット (4.4.90-28-default)
    • Aliyun Linux (4.19.34-11.al7.x86_64)
    • CoreOS (4.19.43-coreos VersionID=2079.4.0)
  • cifs-utils ツールがクライアントにインストールされていないか、PATH 環境変数で指定されているディレクトリに mount.cifs ファイルが存在しない。
  • Linux 上で動作している ECS インスタンスが接続されているネットワークと SMB ファイルシステムが接続されているネットワークとの間に接続が確立されていない。
    • Linux 上で動作している ECS インスタンスと SMB ファイルシステムを異なる Alibaba Cloud アカウントが所有している。
    • Linux 上で動作している ECS インスタンスと SMB ファイルシステムが異なるリージョンに存在している。
    • Linux 上で動作している ECS インスタンスと SMB ファイルシステムが、相互通信できない異なるネットワーク (VPC やクラシックネットワーク) に存在している。
      ローカル Linux サーバーが存在する IDC のネットワークと SMB ファイルシステムが存在するネットワークとの間の接続が、Express Connect を使用して確立されていません。
    • Linux 上で動作している ECS インスタンスの IP アドレスが、SMB ファイルシステムのホワイトリストに指定されていない。
    • Linux 上で動作している ECS インスタンスのファイアウォール設定により、SMB ファイルシステムの IP アドレスまたはポート 445 へのアクセスが拒否されている。
    • Linux 上で動作している ECS インスタンスが、対応していない TCP ポートを使用して SMB ファイルシステムに接続している。 SMB ファイルシステムはポート 445 のみ対応しています。

    ping <VolumeDomainName> コマンドや telnet <VolumeDomainName> 445 コマンドを使用してネットワーク接続を確認できます。

    ターゲット ECS インスタンスでポート 445 が有効になっていない場合は、ターゲット ECS インスタンスのセキュリティグループにポート 445 のルールを追加することを推奨します。 詳細については、「セキュリティグループルールを追加」をご参照ください。

  • Linux 上で動作している ECS インスタンスの管理者に root 権限がないか、mount コマンドを使用する権限がない。 管理者に、sudo コマンド経由で mount コマンドを実行する権限を与えてください。
  • ファイルシステムをマウントする際、ファイルシステムのタイプが Common Internet File System (CIFS) に設定されていない。
  • ファイルシステムをマウントする際、ファイルシステムのバージョンが 2.1 または 3.0 に設定されていない。
  • guest ユーザーグループのメンバーにファイルシステムをマウントする権限を付与していない。
  • ファイルシステムをマウントする際、uid、gid、dir_mode、または file_mode に無効な値を指定している。
  • ターゲットマウントポイントのディレクトリの SELinux 設定が無効になっている。
  • Linux 上で動作している ECS インスタンスの単一ファイルシステムにマウントされたファイルシステムが最大数 (1,000) を超えている。 このような問題は、Container Service for Kubernetes のノードにファイルシステムをマウントする際に発生する傾向があります。
解決策:
  1. Linux ECS インスタンスから SMB ファイルシステムへのアクセス」を参照し、前述の原因を確認して、問題をトラブルシューティングします。
  2. /var/log/messages ファイルと dmesg コマンドの出力を確認します。
  3. チケットを起票し、サポートセンターに問い合わせます。

    その際、Linux のバージョン、マウントコマンドの出力、/var/log/messages に保存されているファイル、および dmesg コマンドの出力を提供いただく必要があります。

ファイルシステムのパフォーマンスが低い

SMB ファイルシステムのパフォーマンスが低い場合、考えられる原因は次のとおりです。

  • 原因 1:単一の SMB ファイルシステムのスループットは、使用可能なストレージスペースに関連しており、 単一のファイルシステムの最大スループット (読み取りおよび書き込み) が、現在のストレージ容量によって制限されている。

    解決策:fio ツールを使用して、SMB ファイルシステムのパフォーマンスをテストします。 詳細については、「NAS のパフォーマンステスト」をご参照ください。

  • 原因 2:Linux 上で動作している単一の ECS インスタンスの帯域幅が低い。

    解決策:ECS インスタンスを複数使用すると、期待されるパフォーマンスを実現できます。

  • 原因 3:クライアント上の SMB ファイルシステムのキャッシュが無効になっている。

    解決策:SMB ファイルシステムをマウントする際、cache パラメーターを cache=strict に設定し、キャッシュを有効にします。 デフォルトでは cache=strict です。 cache=none に設定すると、キャッシュは無効になります。 sudo mount | grep cifs コマンドを使用して cache パラメーターの値を確認できます。

  • 原因 4:SMB クライアントの I/O スループットのサイズが無効な値に設定されている。

    解決策:ビジネス要件に基づいて、rsize または wsize の値を変更します。 デフォルト値は 1048576 です。

  • 原因 5:Linux 上で動作している ECS インスタンスの CPU またはメモリの仕様が低いか、CPU またはメモリの使用率のほとんどを他のプロセスが占有している。

    解決策:ECS インスタンス用にコンポーネントの適切な仕様を選択します。 ファイルシステムが期待どおりに動作するように、プロセスごとに CPU リソースとメモリリソースの使用率のバランスを取る必要があります。 top コマンドを使用して CPU とメモリの使用状況が確認できます。

  • 原因 6:ファイルシステムをマウントするときに atime オプションが指定されている。

    解決策:アクセス時刻が重要ではない業務には、atime オプションの指定は推奨しません。

  • 原因 7:Web サーバーのような、多数の読み取りとごく少数の書き込みが発生するファイルシステムクライアントを使用した場合に、アラートが発生することがある。

    解決策:ファイルシステムクライアントで Apache などの Web サーバー固有のキャッシュを有効にするか、チケットを起票してサポートセンターに問い合わせ、Web サーバーシナリオの高速化機能を有効にします。

ファイルシステムからのファイルの移行または複製が遅い

ここまでのファイルシステムパフォーマンス問題に該当しなかった場合、ファイルを並行して移行または複製していないために、この問題が発生している可能性があります。 次のオープンソースツールを使用して、ファイルを移行または複製できます。

  • GNU parallel
    • システムリソースに基づいて適切な数のスレッドを指定します。
    • 例:find * -type | parallel --will-cite -j 10 cp {} /mnt/smb/ &
  • Fpart
  • Fpsync
  • multi

ファイルシステムへのアクセス中にエラーメッセージ Permission denied が表示された

原因:ファイルシステムをマウントするときに、uid、gid、file_mode、または dir_mode パラメーターに無効な値を指定した。

解決策:uid、gid、file_mode、dir_mode などの各マウントパラメーターに有効な値を指定しているかどうかをご確認ください。 詳細については、「Linux ECS インスタンスから SMB ファイルシステムへのアクセス」をご参照ください。

ファイル名の大文字を小文字に、または小文字を大文字に変更できない

SMB ファイルシステムのファイル名は、大文字と小文字を区別しません。 これは Windows に合わせたものです。 しかしながら SMB では、ファイル名の大文字を小文字に、または小文字を大文字に変更することはできません。

この問題に対処するには、大文字または小文字のファイル名を別のファイル名に変更し、 この新しいファイル名を小文字または大文字のファイル名に変更します。

ファイルの所有者およびファイルまたはディレクトリのモードを変更できない

ファイルシステムをマウントする際は、ファイルの所有者とファイルシステム内のファイルまたはディレクトリのモードのみ指定できます。 詳細については、「Linux ECS インスタンスから SMB ファイルシステムへのアクセス」をご参照ください。

アクセス制御リスト (ACL) を使用できない

NAS で ACL を使用することはできません。 ACL を使用する必要がある場合は、チケットを起票し、サポートセンターにお問い合わせいただくことを推奨します。

シンボリックリンクを作成できない

原因:ファイルシステムをマウントする際、mfsymlinks オプションが指定されていないか、SMB 2.0 を使用している。

解決策:ファイルシステムをマウントする際、SMB 2.1 または 3.0 を使用し、mfsymlinks オプションを指定することを推奨します。

SMB マウントポイントが応答しない

原因:3.10.0-514 以前のカーネルを使用する Linux ディストリビューションでは、SMB ドライバーがクラッシュしてマウントポイントへのアクセスに失敗する場合があります。 複数のクライアントが同時に Linux ディストリビューションにマウントされたファイルシステムにアクセスすると、クラッシュが発生する場合があります。 カーネルスタックの内容として、 カーネルログファイルのログエントリの例を次に示します。
...
[<ffffffffc03c9bc1>] cifs_oplock_break+0x1f1/0x270 [cifs]
[<ffffffff810a881a>] process_one_work+0x17a/0x440
[<ffffffff810a8d74>] rescuer_thread+0x294/0x3c0
...
解決策:
  • cache パラメーターを cache=none に設定して、ファイルシステムを再マウントします。 ただし、これはファイルシステムのパフォーマンスに影響する場合があります。
  • ECS インスタンスが動作している Linux オペレーティングシステムをアップグレードします。