通过云服务器ECS(Linux)访问SMB文件系统
更新时间:2020-05-20 16:40:26
本文主要介绍如何将SMB文件系统挂载至云服务器ECS(Linux)并进行读写操作。
前提条件
- 在需要创建文件系统的地域,已有可用的云服务器ECS(Linux)。
SMB文件系统现在官方支持如下的Linux分发版本。如果没有特别声明,本文也只针对以下几个Linux分发版本:
- CentOS 7.6 64bit(3.10.0-957.5.1.el7.x86_64)
- Ubuntu 18.04 64bit(4.15.0-48-generic)
- Debian 9.9 64bit(4.9.0-9-amd64)
- Suse Enterprise Server 12 SP2 64bit(4.4.74-92.35-default)
- OpenSUSE 42.3 64bit(4.4.90-28-default)
- Aliyun Linux(4.19.34-11.al7.x86_64)
- CoreOS(4.19.43-coreos VersionID=2079.4.0)
说明 由于Linux一些早期版本的SMB内核客户端在某些关键场景有缺陷,如果您使用了非官方支持的Linux分发版本,阿里云不能保证该SMB文件系统的可靠性。
- 网络连通。
- 确保云服务器ECS(Linux)和SMB文件系统在可连通的同一个用户网络中(比如在同一个VPC )。
- 检查文件系统白名单,确保云服务器ECS(Linux)已经被授权访问该SMB文件系统。
- 确保端口445处于打开状态,SMB通过TCP端口445通信。
如果端口445未打开,请在目标ECS实例的安全组中添加关于端口445的安全组规则,详情请参见添加安全组规则。
- 已创建SMB文件系统,详情请参见创建文件系统。
- 已添加挂载点,详情请参见添加挂载点。
- 软件要求。
Linux分发版本已预装了内核客户端,请确保您已安装cifs-util工具包。
安装软件
在以下Linux版本中安装内核客户端和安装cifs-util工具包:
- 如果您使用Ubuntu、Debian操作系统,使用apt-get包管理器进行安装
sudo apt-get update
sudo apt-get install cifs-utils
- 如果您使用RHEL、CentOS、Aliyun Linux操作系统,使用yum包管理器进行安装
sudo yum install cifs-utils
- 如果您使用OpenSUSE、SLES12-SP2操作系统,使用zypper或者yast工具进行安装
sudo zypper install cifs-utils
sudo yast2 -> Software -> Software Management, 然后安装cifs-utils
- 如果您使用阿里云支持的CoreOS分发版本,通过以下方法进行安装
- 配置SELINUX
sed -i 's/SELINUXTYPE=mcs/SELINUXTYPE=targeted/' /etc/selinux/config
- 在CoresOS上自行编译cifs-utils
您可以执行以下命令启动一个Fedora容器用以编译cifs-utils客户端工具。或者下载阿里云官方提供的CoreOS版本的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
挂载文件系统
经典使用场景
不同的使用场景,可选择不同的挂载选项。经典的使用场景及挂载选项配置如下所示:
- 云服务器ECS(Linux)共享访问场景
在多个云服务器ECS(Linux)中需要共享访问文件系统数据,但没有用户权限控制要求,被授权的云服务器ECS(Linux)管理员可以使用如下方法在各个云服务器ECS(Linux)上执行挂载。
mount -t cifs //smbfs.hangzhou-g.aliyun.com/myshare /mnt/sharepath -o vers=2.0,guest,mfsymlinks
- 多用户Home Directory场景
在多个云服务器ECS(Linux)中需要共享访问文件系统数据时,如果有权限控制需求,可以通过挂载时指定uid、gid、dir_mode、file_mode来满足要求。
- 云服务器ECS(Linux) WebServer共享访问场景
在多个云服务器ECS(Linux)上安装WebServer(如apache),并且SMB文件系统做共享文件存储。
说明
- SMB文件系统主要特点是共享访问、横向扩展、高可用,由于和本地硬盘实现机理不同,某些场景的小文件访问性能上会稍微有一些差距。对于WebServer场景,如果想要达到极致性能,可以考虑只将需要共享的文件放在SMB文件系统上,而将不需要共享访问的WebServer程序等放在本地硬盘。
- WebServer应用通常网络协议通讯负载较大,我们为这个场景做了专门的WebServer加速功能,您可以联系阿里云NAS团队申请开通。
- 云服务器ECS(Windows)和云服务器ECS(Linux)共享访问场景
如果您需要同时从云服务器ECS(Windows)和云服务器ECS(Linux)访问SMB文件系统的内容。这个场景下,云服务器ECS(Linux)挂载时一定要使用客户端缓存,即设置cache=strict或者默认方式挂载。