由于Linux系统对SMB协议的兼容程度较低,建议仅在需要跨操作系统共享数据的情况下使用Linux系统挂载SMB协议文件系统。本文主要介绍如何将SMB协议文件系统挂载至云服务器ECS(Linux)上并执行读写操作。
前提条件
在创建SMB协议文件系统的地域,已有可用的云服务器ECS(Linux)。具体操作,请参见创建ECS实例。
重要Linux系统推荐挂载使用NFS协议文件系统。由于Linux系统对SMB协议的兼容程度较低,建议仅在需要跨操作系统共享数据的情况下使用Linux系统挂载SMB协议文件系统。
由于Linux一些早期版本的SMB客户端在某些场景有缺陷,如果您使用了非官方支持的Linux操作系统版本,阿里云不能保证该SMB协议文件系统的可靠性。
NAS SMB协议文件系统官方支持如下的Linux操作系统版本。如果没有特别声明,本文仅针对以下Linux操作系统版本:
操作系统类型
操作系统版本
CentOS
CentOS 7.6 64位:3.10.0-957.21.3.el7.x86_64及以上
Alibaba Cloud Linux
Alibaba Cloud Linux 2.1903 64位:4.19.43-13.2.al7.x86_64及以上
Alibaba Cloud Linux 3.2104 64位:5.10.23-4.al8.x86_64及以上
Debian
Debian 9.10 64位:4.9.0-9-amd64及以上
Ubuntu
Ubuntu 18.04 64位:4.15.0-52-generic及以上
OpenSUSE
OpenSUSE 42.3 64位:4.4.90-28-default及以上
SUSE Linux
Enterprise Server 12 SP2 64位:4.4.74-92.35-default及以上
CoreOS
CoreOS 2079.4.0 64位:4.19.43-coreos及以上
已创建SMB协议文件系统。具体操作,请参见通过控制台创建通用型NAS文件系统。
已添加挂载点。具体操作,请参见添加挂载点。
网络连通。
确保云服务器ECS(Linux)和SMB文件系统在同一个专有网络VPC中。
检查文件系统白名单,确保云服务器ECS(Linux)已经被授予访问该SMB文件系统的权限。
确保端口445处于打开状态,SMB文件系统将通过TCP端口445通信。
如果端口445未打开,请在目标ECS实例的安全组中添加关于端口445的安全组规则。具体操作,请参见添加安全组规则。
安装CIFS客户端
在Linux系统中挂载SMB协议文件系统时,需要先安装CIFS客户端。请您确保每台Linux服务器执行一次配置即可,不需要在每次挂载时都执行。
连接ECS(Linux)实例。具体连接方式,请参见连接ECS实例。
安装CIFS客户端。
Ubuntu、Debian
通过apt-get软件包管理工具进行安装。
sudo apt-get update sudo apt-get install cifs-utils
RHEL、CentOS、Alibaba Cloud Linux
通过yum包管理器进行安装。
sudo yum install cifs-utils
OpenSUSE、SLES12-SP2
通过zypper工具进行安装。
sudo zypper install cifs-utils
CoreOS
通过以下方法进行安装:
配置SELINUX。
sed -i 's/SELINUXTYPE=mcs/SELINUXTYPE=targeted/' /etc/selinux/config
在CoreOS操作系统上手动编译CIFS客户端工具。
您可以参照以下步骤启动一个Fedora容器来编译CIFS客户端工具。或下载阿里云官方提供的名CoreOS版本的CIFS工具包,并拷贝至/tmp/或者/bin目录。
在CoreOS上启动一个Fedora容器自行编译cifs-utils。
docker run -t -i -v /tmp:/cifs fedora /bin/bash
在docker环境内依次运行以下命令。
yum groupinstall -y "Development Tools" "Development Libraries"
yum install -y bzip2
curl https://download.samba.org/pub/linux-cifs/cifs-utils/cifs-utils-6.9.tar.bz2 --output cifs-utils-6.9.tar.bz2;
bunzip2 cifs-utils-6.9.tar.bz2 && tar xvf cifs-utils-6.9.tar
cd cifs-utils-6.9; ./configure && make
cp mount.cifs /cifs/
exit
挂载SMB协议文件系统
在Linux操作系统中,NAS SMB协议文件系统支持通过手动挂载和自动挂载两种方式进行挂载。手动挂载适用于临时挂载,每次服务器启动或重启后都需要重新挂载。自动挂载适用于持久挂载,每次服务器启动或重启后都无需重新挂载。为避免服务器重启后,挂载信息丢失,导致无法查看已挂载的文件系统,建议您手动挂载成功后,配置自动挂载文件系统。
手动挂载文件系统
您需要使用文件系统的挂载点地址,将NAS SMB协议文件系统挂载至Linux ECS实例。
连接ECS(Linux)实例。具体连接方式,请参见连接ECS实例。
执行以下命令,挂载文件系统。
sudo mount -t cifs //file-system-id.region.nas.aliyuncs.com/myshare /mnt -o vers=2.1,guest,uid=0,gid=0,dir_mode=0755,file_mode=0755,mfsymlinks,cache=strict,rsize=1048576,wsize=1048576
挂载命令格式为:
sudo mount -t cifs //<挂载点地址>/myshare <挂载目录> -o <挂载选项>
参数
说明
文件系统类型
在Linux操作系统中挂载SMB协议文件系统,必须配置
-t cifs
参数。挂载点地址
添加文件系统挂载点时,自动生成的挂载点地址,请根据实际值替换。您可以在NAS控制台,单击目标文件系统,然后单击挂载使用,将鼠标放置在挂载点地址列的图标上获取挂载点地址。
myshare
SMB文件系统的共享目录名称,不支持变更。
挂载目录
您要挂载的目标路径,例如:/mnt/sharepath。
挂载选项
通过添加
-o
参数指定挂载必选选项:vers:支持2.1及以上协议版本。
guest:只支持基于ntlm认证协议的客户端挂载。
rsize:用来设置读数据包的最大限制。一般需要设置成1048576(1 MB)。
wsize:用来设置写数据包的最大限制,一般需要设置成1048576(1 MB)。
通过添加
-o
参数指定挂载可选选项:uid:挂载成功后,文件所属的用户。如果未设置uid,则默认uid=0。
gid:挂载成功后,文件所属的用户组。如果未设置gid,则默认gid=0。
dir_mode:向用户授予指定目录的读取、写入和执行权限。必须以0开头,例如:0755、0644等。如果未设置dir_mode,则默认dir_mode=0755。
file_mode:向用户授予普通文件的读取、写入和执行权限。必须以0开头,例如:0755、0644等。如果未设置file_mode,则默认file_mode=0755。
mfsymlinks:支持symbol link功能。
cache:
cache=strict:设置SMB文件系统使用客户端缓存。如果未设置cache,则默认cache=strict。
cache=none:设置SMB文件系统不使用客户端缓存。
atime|relatime:如果您的业务对文件的访问时间非极度敏感,请勿使用atime选项,默认采用relatime方式挂载。
说明授予云服务器(Linux)管理员拥有对SMB文件系统的绝对控制权限。
您可以使用
mount | grep cifs
命令查询自己的挂载点信息。如果您使用非官方支持的Linux操作系统版本,强烈建议使用内核在3.10.0-514以上的版本。如果Linux kernel版本小于等于3.7,必须在挂载选项中设置cache=strict参数。您可以执行
uname -a
命令检查当前内核版本。
执行
mount -l
命令,查看挂载结果。如果回显包含如下类似信息,说明挂载成功。
挂载成功后,您可以执行
df -h
命令,查看当前文件系统的容量信息。如果挂载失败,请进行错误排查。具体操作,请参见Linux挂载SMB协议文件系统失败排查思路进行排查。
挂载成功后,您可以在ECS(Linux)上访问NAS SMB协议文件系统,执行读取或写入操作。
您可以把NAS SMB协议文件系统当作一个普通的目录来访问和使用,示例如下:
(可选)自动挂载文件系统
您可以通过配置Linux ECS实例的/etc/fstab
文件,实现ECS重启时自动挂载SMB协议文件系统。
在配置自动挂载前,请先确认手动挂载成功,避免ECS启动失败。
打开/etc/fstab配置文件,添加自动挂载配置。
//<挂载点地址>/myshare /mnt cifs vers=3,guest,uid=0,gid=0,dir_mode=0755,file_mode=0755,mfsymlinks,cache=strict,rsize=1048576,wsize=1048576 0 0
示例中主要参数说明,请参见SMB(Linux)挂载命令参数说明表。其余参数说明如下。
参数
说明
0(wsize值后第一项)
非零值表示文件系统应由dump备份。对于NAS文件系统而言,此值默认为0。
0(wsize值后第二项)
该值表示fsck在启动时检查文件系统的顺序。对于NAS文件系统而言,此值默认为0,表示fsck不应在启动时运行。
执行
reboot
命令,重启云服务器ECS。重要重启云服务器会中断业务,建议您在业务低谷时期重启云服务器。
验证自动挂载配置成功。
说明在ECS重启后的一分钟内,执行
df -h
命令,确认挂载的NAS文件系统。
经典使用场景
不同的使用场景,可配置不同的挂载选项,实现文件系统最优性能。经典的使用场景及挂载选项配置如下所示:
云服务器ECS(Linux)共享访问场景
多用户Home Directory场景
云服务器ECS(Linux) WebServer共享访问场景
云服务器ECS(Windows)和云服务器ECS(Linux)共享访问场景
访问控制
阿里云文件存储NAS SMB协议文件系统支持基于AD域系统的用户身份认证及文件系统级别的权限访问控制。以域用户身份连接并访问SMB协议文件系统,可以实现对SMB协议文件系统中的文件及目录级别的访问控制。
关于如何实现以AD域系统的用户身份认证及文件系统级别的权限访问控制,请参见将SMB文件系统挂载点接入AD域和Linux客户端以AD域用户身份挂载并使用SMB文件系统。
相关文档
如果您想对SMB协议文件系统中的数据进行备份,请参见通用型NAS备份。
您也可以开启回收站功能,在误删除通用型NAS文件系统中的文件时,可以通过NAS回收站恢复这些文件及其UID、GID和ACL等元数据信息。更多信息,请参见回收站。
如果您是想在本地服务器或线下IDC中挂载访问SMB协议文件系统,请参见本地数据中心访问文件系统。
如果您需要跨VPC、跨地域或跨账号挂载文件系统,您可以通过阿里云云企业网功能实现。具体操作,请参见通过云企业网实现同地域跨VPC挂载NAS或通过云企业网实现跨账号跨地域挂载NAS。