このトピックでは、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 パッケージをインストールします。
- SELinux 設定を構成します。
sed -i 's/SELINUXTYPE=mcs/SELINUXTYPE=targeted/' /etc/selinux/config
- 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
- SELinux 設定を構成します。
- Ubuntu または Debian を使用している場合、apt-get パッケージ管理ユーティリティを使用して cifs-utils パッケージをインストールできます。
ファイルシステムのマウント
シナリオ
シナリオごとに異なるマウントオプションを指定できます。 このセクションでは、一般的なシナリオと対応するマウントオプションについて説明します。
- 複数の 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 に設定するか、このオプションの規定値を使用する必要があります。