このトピックでは、Linux ECS インスタンスに SMB ファイルシステムをマウントし、ファイルシステムで読み取り/書き込み操作を実行する方法について説明します。

始める前に

  • ファイルシステムを作成する必要があるリージョンで、少なくとも 1 つの ECS インスタンスが使用可能である必要があります。

    SMB ファイルシステムは、次の Linux ディストリビューションバージョンのネイティブサポートを提供します。 このトピックでは、特に明記されていない限り、言及されている Linux ディストリビューションは以下のバージョンのいずれかを指します。

    • CentOS 7.6 64-bit (3.10.0-957.5.1.el7.x86_64)
    • Ubuntu 18.04 64-bit (4.15.0-48-generic)
    • Debian 9.9 64-bit (4.9.0-9-amd64)
    • SUSE Enterprise Server 12 SP2 64-bit (4.4.74-92.35-default)
    • OpenSUSE 42.3 64-bit (4.4.90-28-default)
    • Aliyun Linux (4.19.34-11.al7.x86_64)
    • CoreOS (4.19.43-coreos VersionID = 2079.4.0)
    サポートされていないバージョンの Linux を使用している場合、内部欠陥によって、 Linux カーネルの SMB モジュールでエラーが発生する可能性があります。 この場合、Alibaba Cloud は SMB ファイルシステムの信頼性を保証できません。
  • ネットワーク
    • SMB ファイルシステムをマウントする必要がある Linux ECS インスタンスは、SMB ファイルシステムと同じネットワーク (同じ VPC など) にある必要があります。
    • Linux ECS インスタンスは SMB ファイルシステムのホワイトリストに含まれているため、インスタンスには SMB ファイルシステムにアクセスする権限があります。
    • SMB クライアントによる TCP 接続の確立のため、ポート 445 が開いています。

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

  • SMB ファイルシステムが作成されます。 詳細については、「ファイルシステム」をご参照ください。
  • ファイルシステムのマウント対象が追加されます。 詳細については、「マウントポイント」をご参照ください。
  • ソフトウェア要件
    SMB カーネルモジュールは、サポートされている各 Linux ディストリビューションにプリインストールされています。 加えて、cifs-utils パッケージをインストールする必要があります。
    • Ubuntu または Debian を使用している場合、apt-get パッケージ管理ユーティリティを使用して cifs-utils パッケージをインストールできます。
      sudo apt-get update
      apt-get install nfs-utils
    • RHEL、CentOS、または Aliyun Linux を使用している場合、yum パッケージ管理ユーティリティを使用して cifs-utils パッケージをインストールできます。
      sudo yum install nfs-utils
    • OpenSUSE または SLES12-SP2 を使用している場合、 zypper または yast ツールを使用して cifs-utils パッケージをインストールできます。
      sudo zypper install cifs-utils
      Run the sudo yast2 command, choose Software > Software Management, and then install the cifs-utils package.
    • サポートされている CoreOS ディストリビューションを使用している場合は、次の手順を実行して cifs-utils パッケージをインストールします。
      1. SELinux 設定を構成します。
        sed -i 's/SELINUXTYPE=mcs/SELINUXTYPE=targeted/' /etc/selinux/config
      2. CoreOS で cifs-utils パッケージをコンパイルしてインストールします。

        次のコマンドを使用して Fedora ベースの Docker コンテナーを実行し、cifs-utils パッケージをコンパイルおよびインストールできます。 Alibaba Cloud から cifs-utils パッケージをダウンロードし、パッケージを /tmp または /bin フォルダーにコピーすることもできます。

        $ docker run -t -i -v /tmp:/cifs fedora /bin/bash
        
        fedora # yum groupinstall -y "Development Tools" "Development Libraries"
        
        fedora # yum install -y bzip2
        
        fedora # curl https://download.samba.org/pub/linux-cifs/cifs-utils/cifs-utils-
        
        6.9.tar.bz2 --output cifs-utils-6.9.tar.bz2;
        
        fedora#bunzip cifs-utils-6.9.tar.bz2; && tar xvf cifs-utils-6.9.tar
        
        fedora # cd cifs-utils-6.9; ./configure && make
        
        fedora # cp mount.cifs /cifs/
        
        fedora # exit

ファイルシステムのマウント

  1. ルートアカウントを使用して Linux ECS インスタンスにログインします。 sudo コマンドで承認されたクライアント管理者アカウントを使用することもできます。
  2. 次のコマンドを実行して、プロジェクトをコンパイルします。
    mount -t cifs //xxx-crf23.eu-west-1.nas.aliyuncs.com/myshare /mnt -o vers=2.0,guest,uid=0,gid=0,dir_mode=0755,file_mode=0755,mfsymlinks,cache=strict,rsize=1048576,wsize=1048576

    mount コマンドの構文:mount -t cifs //<The domain name of a mount target>/myshare <A mount directory> -o <Mount options>

    パラメーター 説明
    ファイルシステムの種類 SMB ファイルシステムの場合、-t cifs を指定する必要があります。
    マウント対象のドメイン名 ファイルシステムのマウント対象を作成すると、マウント対象のドメイン名が生成されます。 要件に基づいてドメイン名を置き換える必要があります。 マウント対象の詳細については、「マウントポイント」をご参照ください。
    myshare SMB 共有の名前。 名前は変更できません。
    マウントディレクトリ /mnt/sharepath などの対象のマウントディレクトリ。
    マウントオプション -o パラメーターを使用して、マウントオプションを指定できます。
    • vers: required. SMB プロトコルのバージョンを指定します。 オプションに 2.0 を指定できます。
    • guest: required. ファイルシステムのマウントに使用するユーザーアカウントを指定します。 NT LAN Manager (NTLM) によって認証できるゲストユーザーアカウントを使用する必要があります。 オプションには、username=guest、password=guest、guest のいずれかの内容を指定できます。
      NTLM、NTLMv2、および NTLMSSP プロトコルが適用可能です。 デフォルトでは、SMB クライアントは Apsara File Storage NAS と NTLM プロトコルをネゴシエートしてファイルシステムをマウントします。 sec オプションを ntlm、ntlmv2、または ntlmssp に設定することにより、プロトコルを指定できます。
    • uid:オプション。 マウントが成功した後、ファイルシステムに保存されているファイルが属するユーザーを指定します。 uid の規定値は 0 です。
    • gid:オプション。 マウントが成功した後、ファイルシステムに保存されているファイルが属するユーザーグループを指定します。 gid の規定値は 0 です。 gid の規定値は 0 です。
    • dir_mode:オプション。 ディレクトリー上のユーザーに付与される権限を指定します。 アクセス権限には、読み取り、書き込み、および実行が含まれます。 値は 0755 や 0644 など、ゼロで始まる必要があります。 dir_mode の規定値は 0755 です。
    • file_mode:オプション。 ファイルのユーザーに付与される権限を指定します。 アクセス許可には、読み取り、書き込み、および実行が含まれます。 値は 0755 や 0644 など、ゼロで始まる必要があります。 file_mode の規定値は 0755 です。
    • mfsymlinks:オプション。 シンボルリンクのサポート有無を指定します。
    • cache:オプション。
      • キャッシュオプションが strict に設定されている場合、キャッシュは SMB クライアントに対して有効になります。 キャッシュオプションはデフォルトで strict に設定されています。
      • キャッシュオプションが none に設定されている場合、SMB クライアントのキャッシュは無効になります。
    • rsize:オプション。 SMB クライアントがファイルシステムから読み取ることができるデータの最大バイト数を指定します。 既定値は 1048576 です。
    • wsize:オプション。 SMB クライアントがファイルシステムに書き込むことができるデータの最大バイト数を指定します。 既定値は 1048576 です。
    • atime|relatime:オプション。 ファイルへのアクセス時間が業務において重要でない場合、atime オプションを使用しないことを推奨します。 デフォルトのオプションは relatime です。
    • Linux ECS インスタンスの承認された管理者は、SMB ファイルシステムを完全に制御できます。
    • mount | grep cifs コマンドを使用して、ファイルシステムに追加したすべてのマウント対象の詳細を表示できます。
    • ネイティブサポートが提供されていない Linux ディストリビューションを使用している場合、ディストリビューションのカーネルバージョンは 3.10.0-514 以降である必要があります。 ディストリビューションのカーネルバージョンが 3.7 以前の場合、ファイルシステムをマウントするときにキャッシュオプションを strict に設定する必要があります。 uname -a コマンドを使用して、カーネルバージョンを表示できます。
  3. mount -l コマンドを使用して、マウント結果を表示できます。

    次の図は、マウントの成功例を示しています。

  4. ファイルシステムをマウントした後、Linux を実行している ECS インスタンスから Apsara File Storage NAS ファイルシステムで読み取り/書き込み操作を実行できます。

    ローカルディレクトリにアクセスするのと同じ方法で、Apsara File Storage NAS ファイルシステムにアクセスできます。 コードの例については、以下の図をご参照ください。

シナリオ

シナリオごとに異なるマウントオプションを指定できます。 このセクションでは、一般的なシナリオと対応するマウントオプションについて説明します。

  • 複数の Linux ECS インスタンスからファイルシステムへの共有アクセス
    複数の Linux ECS インスタンスがファイルシステムへのアクセスを共有し、アクセス制御の要件はありません。 各 ECS インスタンスの承認された管理者アカウントを使用して、これらの ECS インスタンスにファイルシステムをマウントできます。 マウントコマンドの例は、以下のようになります。
     mount -t cifs //smbfs.hangzhou-g.aliyun.com/myshare /mnt/sharepath -o vers=2.1,guest,mfsymlinks
  • アクセス制御のある複数の Linux ECS インスタンスからファイルシステムへの共有アクセス

    複数の Linux ECS インスタンスはファイルシステムへのアクセスを共有し、権限を使用してユーザーからのアクセスを制御する必要があります。 マウントコマンドで uid、gid、dir_mode、および file_mode オプションを設定して、権限を管理できます。

  • Web サーバーとして機能する複数の Linux ECS インスタンスからファイルシステムへの共有アクセス
    Apache HTTP Server などの Web サーバーアプリケーションを複数の Linux ECS インスタンスにインストールし、SMB ファイルシステムを共有ファイルストレージとして使用できます。
    • SMB ファイルシステムにより、共有アクセスが可能になり、高いスケーラビリティと可用性が確保されます。 SMB ファイルシステム上の多数の小さなファイルにアクセスする場合、一部のシナリオでは、SMB ファイルシステムのパフォーマンスがわずかに低下する場合があります。 これは、SMB ファイルシステムの実装スキームがローカルディスクの実装スキームと異なるために発生します。 Web サーバーのシナリオでは、高いパフォーマンスを実現するために、SMB ファイルシステムに共有ファイルを保存し、ローカルディスクに専用ファイルを保存することを推奨します。
    • Web サーバーアプリケーションでは、通信に高帯域幅が必要です。 Apsara File Storage NAS は、これらのアプリケーションの高速化機能をサポートしています。 機能を有効にするには、チケットを起票して Alibaba Cloud テクニカルサポートセンターにお問い合わせください。
  • Windows ECS インスタンスと Linux ECS インスタンスの両方からのファイルシステムへの共有アクセス

    Windows ECS インスタンスと Linux ECS インスタンスは、SMB ファイルシステムへのアクセスを共有できます。 このシナリオでは、Linux ECS インスタンスにファイルシステムをマウントするときに、マウントコマンドでキャッシュオプションを strict に設定するか、このオプションの規定値を使用する必要があります。

ファイルシステムのマウント時に発生する可能性のある問題のトラブルシューティングの手順については、「Linux 上で動作している ECS インスタンスから SMB ファイルシステムへのアクセス時に生じた問題のトラブルシューティング」をご参照ください。