一、背景介绍
由于购买的云服务器本地磁盘容量大部分还是比较小,如果能把大容量硬盘挂载到服务器,那就不用担心服务器磁盘空间不够了。现在cifs-utils这个工具就可以实现想要的需求。当然,前提是大容量硬盘已经开启了SMB共享,并且SMB共享可以被服务器正常访问。
二、操作步骤
1.安装CIFS客户端
sudo apt install cifs-utils -y
2.创建认证文件(可选)
出于安全考虑,建议将访问SMB共享的用户名和密码存储在一个只有root用户可以读取的单独文件中。如果SMB共享没有设置密码(即允许guest访问),则忽略这一步。
sudo vim /root/.smbcredentials
按 i 键进入插入模式,输入以下内容:
username=[SMB账号]
password=[SMB密码]
然后按 esc 键,输入 :wq 进行保存并退出
接下来再设置认证文件的权限
sudo chmod 400 /root/.smbcredentials
3.测试临时挂载
创建本地目录并设置权限,这里以/home/smb目录为例
mkdir /home/smb && sudo chmod 755 /home/smb
使用以下命令测试挂载地址是192.168.1.2,端口是1234,共享目录是/share的SMB共享到本地目录/home/smb
sudo mount -t cifs -o port=1234,dir_mode=0755,file_mode=0755,credentials=/root/.smbcredentials //192.168.1.2/share /home/smb
手动挂载命令格式:sudo mount -t cifs //<SMB共享地址>/<SMB共享目录> <本地挂载目录> -o <挂载选项>
挂载选项说明:
参数 | 说明 |
vers | SMB协商协议版本。例如:3.1.1、3.0、2.1。从Linux内核版本5.0开始,SMB 3.1.1是默认的协商协议。可以通过uname -a命令查看当前Linux内核版本。 |
port | SMB共享服务器端口。如果未设置port,则默认port=445。 |
uid | 挂载成功后,文件所属的用户。如果未设置uid,则默认uid=0。可以通过id命令查看当前用户的uid。 |
gid | 挂载成功后,文件所属的用户组。如果未设置gid,则默认gid=0。可以通过id命令查看当前用户的gid。 |
dir_mode | 向用户授予指定目录的读取、写入和执行权限。必须以0开头,例如:0755、0644等。 |
file_mode | 向用户授予普通文件的读取、写入和执行权限。必须以0开头,例如:0755、0644等。 |
credentials | 认证文件的路径。如果是以guest方式访问SMB共享,则不需要设置此项。 |
4.设置开机自动挂载
这里介绍两种方式,通常使用方式一就可以正常挂载。由于我挂载的SMB共享需要依赖其他服务,所以使用方式二进行延迟挂载,也就是等依赖的服务启动后再进行挂载。
方式一:通过/etc/fstab配置文件添加自动挂载配置
sudo vim /etc/fstab
按 i 键进入插入模式,在原内容后面换行追加以下内容:
//192.168.1.2/share /home/smb cifs port=1234,uid=0,gid=0,dir_mode=0755,file_mode=0755,credentials=/root/.smbcredentials 0 0
自动挂载配置格式://<SMB共享地址>/<SMB共享目录> <本地挂载目录> cifs <挂载选项> 0 0
挂载配置参数说明:
参数 | 说明 |
0(选项后第一项) | 非零值表示文件系统应由dump备份。对于NAS文件系统而言,此值默认为0。 |
0(选项后第二项) | 该值表示fsck在启动时检查文件系统的顺序。对于NAS文件系统而言,此值默认为0,表示fsck不应在启动时运行。 |
方式二:通过systemd服务添加自启动挂载脚本
创建延迟挂载脚本文件
sudo vim /etc/systemd/system/cifs-smb.sh
按 i 键进入插入模式,输入以下内容:
#!/bin/bash
sleep 120
sudo mount -t cifs -o port=1234,uid=0,gid=0,dir_mode=0755,file_mode=0755,credentials=/root/.smbcredentials //192.168.1.2/share /home/smb
然后按 esc 键,输入 :wq 进行保存并退出
给延迟挂载脚本文件设置执行权限
sudo chmod 555 /etc/systemd/system/cifs-smb.sh
添加systemd服务
sudo vim /etc/systemd/system/cifs-smb.service
按 i 键进入插入模式,输入以下内容:
[Unit]
Description=cifs-smb
After=network.target
[Service]
User=root
ExecStart=/etc/systemd/system/cifs-smb.sh
[Install]
WantedBy=multi-user.target
保存并退出后,重新加载systemd服务配置
sudo systemctl daemon-reload
设置systemd服务开机自启动
sudo systemctl enable cifs-smb
5.重启并检查是否正常挂载
重启
reboot
打开本地目录检查
cd /home/smb && ll
如果文件都显示出来,那就说明已经挂载成功了。
参考资料:
1.如何将SMB文件挂载至Linux系统 文件存储 NAS-阿里云帮助中心
2.在 Linux 上装载 SMB Azure 文件共享 | Microsoft Learn