Ubuntu 使用 CIFS + systemd automount 自动挂载 NAS

Ubuntu挂载Windows共享文件夹:SMB/CIFS权限与fstab自动挂载实战 Linux与Windows之间传输文件,本质是客户端通过SMB/CIFS协议访问服务端共享目录。图形界面看似简单,但命令行mount失败往往源于协议版本、防火墙端口和权限配置的细节。理解mount命令的uid/gid、file_mode等参数,以及fstab中_netdev与x-systemd.automount对开机自动挂载的关键作用,就能稳定复现图形界面的效果。针对常用的Ubuntu双系统环境,掌握smbclient排查、445端口检测和credentials凭证文件等技巧,可轻松解决Permissio 阅读详情

1. 背景

在 Ubuntu Server 中,经常需要通过 SMB/CIFS 挂载 NAS 或 Windows 文件共享。

传统的 /etc/fstab CIFS 挂载方式存在一个问题:

  • 系统启动时 NAS 可能还没有就绪;
  • 网络异常可能导致 CIFS 挂载失败;
  • NAS 临时关机不应该影响服务器正常启动;
  • 希望真正访问目录时才连接 NAS;
  • NAS 使用的可能不是默认 SMB 445 端口。

这种场景可以使用:

/etc/fstab
+
x-systemd.automount
+
CIFS

实现按需自动挂载。

本文使用以下环境:

Ubuntu Server

NAS IP:       10.2.2.184
SMB Share:    vlcshare
SMB Port:     1445
SMB Version:  3.0

本地挂载目录:
/data/share

凭据文件:
/etc/samba/nas-project.cred

最终实现:

系统启动
    │
    ↓
systemd 读取 /etc/fstab
    │
    ↓
创建 data-share.automount
    │
    ↓
等待访问 /data/share
    │
    ↓
业务访问 /data/share
    │
    ↓
触发 data-share.mount
    │
    ↓
mount.cifs
    │
    ↓
10.2.2.184:1445
    │
    ↓
//10.2.2.184/vlcshare

2. 安装 CIFS 客户端

Ubuntu 通过 cifs-utils 提供 CIFS 挂载工具。

安装:

sudo apt update
sudo apt install -y cifs-utils

检查:

mount.cifs -V

3. 创建本地挂载目录

创建:

sudo mkdir -p /data/share

检查:

ls -ld /data/share

注意:

/data/share

本质上首先是一个普通 Linux 目录。

NAS 挂载成功以后,远程文件系统会覆盖显示在这个目录上。


4. 创建 SMB 凭据文件

不建议直接把 SMB 用户名和密码写进 /etc/fstab。

创建:

sudo mkdir -p /etc/samba
sudo vim /etc/samba/nas-project.cred

内容:

username=smbuser
password=smbuser@2026

注意凭据文件里面不要写:

credentials=/etc/samba/nas-project.cred

credentials= 是 mount 参数,而不是凭据文件内容。

设置权限:

sudo chown root:root /etc/samba/nas-project.cred
sudo chmod 600 /etc/samba/nas-project.cred

检查:

ls -l /etc/samba/nas-project.cred

正常类似:

-rw------- 1 root root ... /etc/samba/nas-project.cred

这样普通用户无法直接读取 SMB 密码。


5. 检查 NAS 网络

首先测试 NAS 是否可达:

ping -c 3 10.2.2.184

但需要注意:

ping 成功

只能说明 ICMP 网络基本可达,并不能证明 SMB 服务正常。

本文 NAS 的 SMB 使用:

1445

而不是默认:

445

所以应该测试实际 SMB TCP 端口:

nc -zv -w 3 10.2.2.184 1445

如果没有 nc:

sudo apt install -y netcat-openbsd

也可以同时测试默认端口进行对比:

nc -zv -w 3 10.2.2.184 445

6. 手工测试 CIFS 挂载

第一次部署时,不建议直接修改 /etc/fstab。

应该先手工确认:

网络
SMB端口
账号密码
共享目录
SMB版本

全部正常。

执行:

sudo mount -t cifs \
  "//10.2.2.184/vlcshare" \
  /data/share \
  -o credentials=/etc/samba/nas-project.cred,vers=3.0,iocharset=utf8,file_mode=0777,dir_mode=0777,port=1445

这里非常重要的是:

port=1445

因为 SMB 默认使用 TCP 445。

如果 NAS 使用自定义端口,而忘记配置 port=1445,就可能出现:

mount error(115): could not connect to 10.2.2.184
Unable to find suitable address.

7. 检查手工挂载

执行:

findmnt /data/share

正常应该能看到类似:

TARGET       SOURCE
/data/share  //10.2.2.184/vlcshare

查看文件:

ls -lah /data/share

如果需要验证写权限:

touch /data/share/cifs_test.txt
ls -l /data/share/cifs_test.txt
rm -f /data/share/cifs_test.txt

确认没有问题以后:

sudo umount /data/share

检查:

findmnt /data/share

此时没有输出,说明手工挂载已经卸载。

注意:

这里可以直接使用 umount,因为此时还没有正式启用 systemd automount。


8. 配置 /etc/fstab

先备份:

sudo cp -a /etc/fstab /etc/fstab.bak.$(date +%Y%m%d-%H%M%S)

编辑:

sudo vim /etc/fstab

增加:

//10.2.2.184/vlcshare /data/share cifs credentials=/etc/samba/nas-project.cred,vers=3.0,port=1445,_netdev,nofail,x-systemd.automount,x-systemd.idle-timeout=0,x-systemd.mount-timeout=10s 0 0

如果业务明确需要比较宽松的客户端权限表现,也可以:

//10.2.2.184/vlcshare /data/share cifs credentials=/etc/samba/nas-project.cred,vers=3.0,port=1445,iocharset=utf8,file_mode=0777,dir_mode=0777,_netdev,nofail,x-systemd.automount,x-systemd.idle-timeout=0,x-systemd.mount-timeout=10s 0 0

生产环境不建议无必要地使用 0777,实际权限还需要结合 NAS 端共享权限和 SMB 用户权限设计。


9. fstab 参数说明

credentials

credentials=/etc/samba/nas-project.cred

指定 SMB 用户名密码文件。


vers

vers=3.0

指定 SMB 3.0。


port

port=1445

指定 SMB 服务端口。

本案例 NAS 不使用默认 445,因此这个参数不能遗漏。


_netdev

_netdev

告诉 systemd:

这是网络文件系统。

systemd 会按照远程文件系统处理相关依赖。


nofail

nofail

NAS 挂载失败时,不因为这个远程文件系统而使系统启动失败。

对于 NAS、SMB、NFS 等外部存储非常实用。


x-systemd.automount

x-systemd.automount

这是整个方案最重要的参数之一。

它不是 CIFS 自身的参数,而是 systemd 对 /etc/fstab 提供的扩展。

作用是:

不立即真正挂载 NAS,而是在有人访问挂载目录时触发真正的 mount。

例如:

ls /data/share

才触发 CIFS 挂载。


x-systemd.idle-timeout

x-systemd.idle-timeout=0

表示挂载成功后,不因为长时间空闲而自动卸载。


x-systemd.mount-timeout

x-systemd.mount-timeout=10s

限制 systemd 执行 mount job 时等待的时间。

例如 NAS 无法连接时,不希望一次初始挂载任务长时间等待。

需要注意:

这个参数主要限制挂载过程,并不能解决 CIFS 已经挂载以后 NAS 突然断网所产生的 I/O 等待问题。


10. 检查 /etc/fstab

配置完成后:

sudo findmnt --verify --verbose

确认没有明显错误。

然后:

sudo systemctl daemon-reload

daemon-reload 的作用可以简单理解为:

我修改了 systemd 相关配置
        ↓
请 systemd 重新读取

对于当前场景:

/etc/fstab
     ↓
systemd-fstab-generator
     ↓
data-share.automount
data-share.mount

11. 为什么会出现 data-share.automount

我们并没有手工创建:

data-share.automount

这是 systemd 根据:

/data/share

自动生成的。

路径:

/data/share

转换成:

data-share

然后生成:

data-share.automount
data-share.mount

可以通过:

systemd-escape --path /data/share

查看:

data-share

例如如果目录改成:

/data/auto/share

执行:

systemd-escape --path /data/auto/share

得到:

data-auto-share

那么对应就是:

data-auto-share.automount
data-auto-share.mount

对于包含特殊字符的路径,不建议自己猜 Unit 名称,直接使用 systemd-escape --path 最可靠。


12. .automount 和 .mount 有什么区别

这两个 Unit 的作用完全不同。

data-share.automount

负责:

监控 /data/share 是否被访问

例如:

systemctl status data-share.automount

可能看到:

Active: active (waiting)

表示:

automount 已经准备好,正在等待有人访问 /data/share。


data-share.mount

负责:

真正执行 CIFS 挂载

也就是:

//10.2.2.184/vlcshare
        ↓
/data/share

可以:

systemctl status data-share.mount

真正挂载成功后应该看到:

Active: active (mounted)

13. 启动 automount

如果之前测试失败过,可以先:

sudo systemctl reset-failed data-share.mount
sudo systemctl reset-failed data-share.automount

这里:

reset-failed

只是:

清除 systemd 记录的 failed 状态。

它不会执行 CIFS 挂载。

然后:

sudo systemctl start data-share.automount

检查:

systemctl status data-share.automount --no-pager

正常可能看到:

Loaded: loaded (/etc/fstab; generated)
Active: active (waiting)
Where: /data/share

其中:

/etc/fstab; generated

非常重要。

说明:

配置来自 /etc/fstab
+
Unit 是 systemd 自动生成的

14. 触发 CIFS 自动挂载

执行:

ls /data/share

automount 会检测到目录访问:

访问 /data/share
        ↓
data-share.automount
        ↓
data-share.mount
        ↓
mount.cifs
        ↓
10.2.2.184:1445

检查:

systemctl status data-share.mount --no-pager

正常:

Active: active (mounted)

再检查:

findmnt /data/share

15. 为什么 ll 看不出来这是 NAS

例如:

cd /data
ll

可能只看到:

drwxr-xr-x 2 root root 0 Sep 7 13:38 share/

从 ls -l 的结果看:

share/

和普通目录没有特别明显的区别。

这是正常现象。

Linux 文件系统挂载的目的,就是把另一个文件系统挂到普通目录树中。

不要通过:

owner
目录大小
时间

判断是不是 NAS。


16. 正确判断是不是 NAS

最推荐:

findmnt -T /data/share

正常应该看到:

TARGET       SOURCE                    FSTYPE
/data/share  //10.2.2.184/vlcshare     cifs

重点:

SOURCE = //10.2.2.184/vlcshare
FSTYPE = cifs

也可以:

df -hT /data/share

或者:

findmnt -T /data/share -o TARGET,SOURCE,FSTYPE,OPTIONS

如果只检查是不是 mountpoint:

mountpoint /data/share

但是使用 x-systemd.automount 时需要注意:

automount 本身也会创建 autofs 挂载点。

因此:

mountpoint /data/share

只能说明它是挂载点。

如果要确认真正的 CIFS 是否已经挂载,更推荐:

findmnt -T /data/share -t cifs

17. 一个容易忽略的问题:ll /data 可能触发 automount

实际测试中发现:

cd /data
ll

即使没有主动:

ls /data/share

也可能触发:

data-share.automount

systemd 日志中可以看到:

Got automount request for /data/share, triggered by ... (ls)

原因是:

ll

通常相当于:

ls -alF

ls -l 会获取目录项的属性信息。

当获取:

/data/share

的相关属性时,就可能触发 autofs。

过程:

ll /data
   ↓
ls 获取 share 属性
   ↓
触发 automount
   ↓
data-share.mount
   ↓
mount.cifs
   ↓
连接 NAS

如果 NAS 不可达:

ll /data
   ↓
触发 NAS 挂载
   ↓
等待 CIFS 连接
   ↓
直到成功或者超时

所以可能出现:

只是执行 ll /data,命令却卡了几秒。


18. 对目录结构的建议

如果 /data 是服务器的重要业务目录,例如:

/data/docker
/data/mysql
/data/redis
/data/images
/data/share

而:

/data/share

又是 NAS automount,那么 NAS 异常有可能影响对 /data 的某些目录遍历操作。

如果有非常严格的要求:

NAS 故障绝对不能影响 /data 日常运维。

可以考虑将网络存储独立,例如:

/nas/vlcshare

或者:

/mnt/nas/vlcshare

形成:

/data
├── docker
├── mysql
├── redis
└── images

/nas
└── vlcshare

这样本地业务数据和网络存储的边界更加清晰。


19. 手动卸载 CIFS

使用 x-systemd.automount 后,不建议直接把:

umount /data/share

作为日常管理方式。

因为 /data/share 同时涉及 systemd 建立的 autofs 触发点。

直接操作可能导致:

data-share.automount:
Got hangup/error on autofs pipe from kernel

Result: unmounted

20. 只卸载 CIFS,但保留自动挂载

执行:

sudo systemctl stop data-share.mount

检查:

findmnt -t cifs /data/share

此时真正的 CIFS 可以被卸载,但是:

systemctl status data-share.automount

automount 仍然存在。

因此再次:

ls /data/share

就可能重新触发 CIFS 挂载。

这相当于:

停止 data-share.mount
        ↓
NAS 当前卸载
        ↓
automount 仍然工作
        ↓
再次访问
        ↓
重新挂载 NAS

21. 完全停止自动挂载

如果进行 NAS 维护,希望访问目录也不要重新挂载:

sudo systemctl stop data-share.automount

必要时再确认真正的 mount:

sudo systemctl stop data-share.mount

检查:

findmnt /data/share

恢复:

sudo systemctl start data-share.automount

以后访问:

ls /data/share

即可再次触发挂载。


22. NAS 维护前建议检查占用

不要在业务正在读写 NAS 时直接强制卸载。

先检查:

fuser -vm /data/share

如果存在业务进程,应先处理业务。

维护时可以:

sudo systemctl stop data-share.automount
sudo systemctl stop data-share.mount

不建议在不清楚影响的情况下直接:

umount -f /data/share

或者:

umount -l /data/share

尤其是正在写文件时。


23. 修改 /etc/fstab 后怎么重新加载

修改:

vim /etc/fstab

以后执行:

sudo findmnt --verify
sudo systemctl daemon-reload
sudo systemctl restart data-share.automount

如果之前 .mount 已经失败:

sudo systemctl reset-failed data-share.mount

如果 automount 自身也处于 failed:

sudo systemctl reset-failed data-share.automount

24. reset-failed、daemon-reload、restart 的区别

可以简单记忆:

systemctl daemon-reload

等于:

我修改配置了,请 systemd 重新读取。


systemctl reset-failed data-share.mount

等于:

清除这个 Unit 之前的 failed 状态。


systemctl restart data-share.automount

等于:

停止并重新启动 automount。


ls /data/share

等于:

真正触发 CIFS 挂载。

完整过程:

修改 /etc/fstab
       ↓
findmnt --verify
       ↓
systemctl daemon-reload
       ↓
reset-failed(之前失败过时)
       ↓
restart data-share.automount
       ↓
active (waiting)
       ↓
ls /data/share
       ↓
data-share.mount
       ↓
active (mounted)

25. 是否需要 systemctl enable

通常不需要手工:

systemctl enable data-share.automount

因为:

data-share.automount

不是我们手工创建的持久化 Unit。

配置来源是:

/etc/fstab

系统启动时:

开机
 ↓
systemd
 ↓
读取 /etc/fstab
 ↓
systemd-fstab-generator
 ↓
生成 data-share.automount
 ↓
建立 /data/share automount

因此真正需要长期保存的是:

/etc/fstab

26. 验证开机自动建立 automount

如果环境允许,可以重启:

sudo reboot

系统启动以后,先不要访问 /data/share。

检查:

systemctl status data-share.automount --no-pager

正常应该类似:

Loaded: loaded (/etc/fstab; generated)
Active: active (waiting)
Where: /data/share

此时真正的 CIFS 不一定已经挂载。

检查:

systemctl status data-share.mount --no-pager

然后:

ls /data/share

再次:

systemctl status data-share.mount --no-pager
findmnt -T /data/share

应该可以看到:

SOURCE                    FSTYPE
//10.2.2.184/vlcshare     cifs

27. CIFS 故障排查命令

查看 automount:

systemctl status data-share.automount --no-pager

查看真正的 mount:

systemctl status data-share.mount --no-pager

查看挂载关系:

findmnt -T /data/share

查看 CIFS:

findmnt -t cifs

查看 systemd mount 日志:

journalctl -u data-share.mount -n 100 --no-pager

查看 automount 日志:

journalctl -u data-share.automount -n 100 --no-pager

查看 CIFS 内核日志:

dmesg -T | grep -i cifs

或者:

journalctl -k | grep -i cifs

查看 CIFS 内核状态:

cat /proc/fs/cifs/DebugData

统计:

cat /proc/fs/cifs/Stats

检查相关进程:

ps -ef | grep '[m]ount.cifs'

检查目录占用:

fuser -vm /data/share

检查 SMB 端口:

nc -zv -w 3 10.2.2.184 1445

28. mount error(115) 排查案例

实际配置过程中遇到:

mount error(115): could not connect to 10.2.2.184
Unable to find suitable address.

同时:

systemctl status data-share.mount

显示:

Active: failed (Result: exit-code)

最终发现 /etc/fstab 配置为:

//10.2.2.184/vlcshare /data/share cifs credentials=/etc/samba/nas-project.cred,vers=3.0,_netdev,nofail,x-systemd.automount,x-systemd.idle-timeout=0 0 0

这里遗漏了:

port=1445

而 NAS 实际 SMB 服务端口为:

1445

修正:

//10.2.2.184/vlcshare /data/share cifs credentials=/etc/samba/nas-project.cred,vers=3.0,port=1445,_netdev,nofail,x-systemd.automount,x-systemd.idle-timeout=0,x-systemd.mount-timeout=10s 0 0

重新:

systemctl daemon-reload
systemctl reset-failed data-share.mount
systemctl reset-failed data-share.automount
systemctl restart data-share.automount

访问:

ls /data/share

即可重新触发。

这个案例说明:

使用非标准 SMB 端口时,手工 mount 和 /etc/fstab 必须同时配置 port=,否则非常容易出现“手工挂载正常、systemd 自动挂载失败”的情况。


29. systemd 状态怎么看

automount 正常等待

data-share.automount

Active: active (waiting)

表示:

automount 正常
+
等待目录访问

automount 已经收到访问

日志:

Got automount request for /data/share, triggered by ... (ls)

说明:

ls
 ↓
访问 /data/share
 ↓
automount 已触发

CIFS 挂载成功

data-share.mount

Active: active (mounted)

这是判断真正 CIFS mount 成功的重要状态。


CIFS 挂载失败

data-share.mount

Active: failed (Result: exit-code)

此时应该重点检查:

NAS IP
SMB端口
网络
credentials
共享名称
vers
CIFS内核日志

30. CIFS 断网以后会不会自动恢复

这里需要区分两个阶段。

尚未挂载

如果:

data-share.automount

正在等待,而 NAS 当前不可用:

访问 /data/share
        ↓
尝试 data-share.mount
        ↓
失败

NAS 恢复以后,再次访问可以重新尝试挂载。


CIFS 已经挂载

如果:

data-share.mount = active

然后 NAS 突然断网,则主要进入 CIFS 客户端自身的连接恢复逻辑。

短暂网络故障可能恢复。

但应用程序执行:

read()
write()
stat()
fsync()

期间可能出现等待或者错误。

因此:

x-systemd.automount 不是 NAS 健康检查器,也不是持续监控并自动重建所有异常 CIFS 会话的守护进程。

对于重要文件写入,业务程序仍然应该正确处理 I/O 错误、返回码,并根据数据重要程度进行完整性校验。


31. ping、nc、findmnt 分别能证明什么

这几个命令不要混淆。

ping 10.2.2.184

只能证明:

ICMP 网络基本可达

nc -zv -w 3 10.2.2.184 1445

可以证明:

TCP 1445 可以建立连接

但不能证明 SMB 用户名密码正确。


findmnt -T /data/share

可以判断:

当前目录属于哪个文件系统

真正验证 NAS 文件 I/O,还应该:

ls /data/share

以及根据业务需求进行实际读写测试。


32. 最终推荐配置

本文环境最终推荐:

//10.2.2.184/vlcshare /data/share cifs credentials=/etc/samba/nas-project.cred,vers=3.0,port=1445,_netdev,nofail,x-systemd.automount,x-systemd.idle-timeout=0,x-systemd.mount-timeout=10s 0 0

凭据:

username=smbuser
password=smbuser@2026

权限:

chown root:root /etc/samba/nas-project.cred
chmod 600 /etc/samba/nas-project.cred

33. 标准部署 SOP

最终可以把整个部署过程简化成:

安装 cifs-utils
       ↓
创建 /data/share
       ↓
创建 credentials
       ↓
chmod 600
       ↓
检查 10.2.2.184:1445
       ↓
手工 mount
       ↓
测试读写
       ↓
手工 umount
       ↓
备份 /etc/fstab
       ↓
增加 CIFS + x-systemd.automount
       ↓
findmnt --verify
       ↓
systemctl daemon-reload
       ↓
启动 data-share.automount
       ↓
确认 active (waiting)
       ↓
访问 /data/share
       ↓
触发 data-share.mount
       ↓
findmnt 确认 FSTYPE=cifs
       ↓
重启服务器
       ↓
验证开机自动建立 automount

34. 常用命令速查

检查自动挂载:

systemctl status data-share.automount

检查真正 CIFS:

systemctl status data-share.mount

检查 NAS 挂载:

findmnt -T /data/share

触发挂载:

ls /data/share

只停止真正的 CIFS:

systemctl stop data-share.mount

完全停止 automount:

systemctl stop data-share.automount

恢复:

systemctl start data-share.automount

修改 /etc/fstab 后:

findmnt --verify
systemctl daemon-reload
systemctl restart data-share.automount

失败后清状态:

systemctl reset-failed data-share.mount
systemctl reset-failed data-share.automount

检查 CIFS 日志:

journalctl -u data-share.mount -n 100 --no-pager
dmesg -T | grep -i cifs

检查端口:

nc -zv -w 3 10.2.2.184 1445

检查占用:

fuser -vm /data/share

35.查看这次启动以来的挂载日志

# CIFS mount
root@gtdq:/data# journalctl -u data-share.mount -b --no-pager
9月 22 13:48:56 gtdq systemd[1]: data-share.mount: Deactivated successfully.
9月 22 13:49:03 gtdq systemd[1]: Mounting data-share.mount - /data/share...
9月 22 13:49:03 gtdq systemd[1]: Mounted data-share.mount - /data/share.

# 看 automount
root@gtdq:/data# journalctl -u data-share.automount -b --no-pager
9月 22 13:14:10 gtdq systemd[1]: Set up automount data-share.automount.
9月 22 13:14:50 gtdq systemd[1]: data-share.automount: Got hangup/error on autofs pipe from kernel. Likely our automount point has been unmounted by someone or something else?
9月 22 13:14:50 gtdq systemd[1]: data-share.automount: Failed with result 'unmounted'.
9月 22 13:16:12 gtdq systemd[1]: Set up automount data-share.automount.
9月 22 13:16:20 gtdq systemd[1]: data-share.automount: Got automount request for /data/share, triggered by 403478 (ls)
9月 22 13:16:31 gtdq systemd[1]: data-share.automount: Got automount request for /data/share, triggered by 403545 (ls)
9月 22 13:16:44 gtdq systemd[1]: data-share.automount: Got automount request for /data/share, triggered by 403750 (ls)
9月 22 13:16:56 gtdq systemd[1]: data-share.automount: Deactivated successfully.
9月 22 13:16:56 gtdq systemd[1]: Unset automount data-share.automount.
9月 22 13:18:25 gtdq systemd[1]: Set up automount data-share.automount.
9月 22 13:18:33 gtdq systemd[1]: data-share.automount: Got automount request for /data/share, triggered by 404130 (ls)
9月 22 13:18:50 gtdq systemd[1]: data-share.automount: Deactivated successfully.
9月 22 13:18:50 gtdq systemd[1]: Unset automount data-share.automount.
9月 22 13:19:14 gtdq systemd[1]: Set up automount data-share.automount.
9月 22 13:19:21 gtdq systemd[1]: data-share.automount: Got automount request for /data/share, triggered by 404367 (ls)
9月 22 13:21:41 gtdq systemd[1]: data-share.automount: Got automount request for /data/share, triggered by 404549 (mount.cifs)
9月 22 13:22:13 gtdq systemd[1]: data-share.automount: Got automount request for /data/share, triggered by 404615 (mount.cifs)
9月 22 13:23:25 gtdq systemd[1]: data-share.automount: Got automount request for /data/share, triggered by 404918 (ls)
9月 22 13:23:41 gtdq systemd[1]: data-share.automount: Deactivated successfully.
9月 22 13:23:41 gtdq systemd[1]: Unset automount data-share.automount.
9月 22 13:27:07 gtdq systemd[1]: data-share.automount: Path /data/share is already a mount point, refusing start.
9月 22 13:27:07 gtdq systemd[1]: Failed to set up automount data-share.automount.
9月 22 13:27:35 gtdq systemd[1]: Set up automount data-share.automount.
9月 22 13:27:37 gtdq systemd[1]: data-share.automount: Got automount request for /data/share, triggered by 405737 (ls)
9月 22 13:38:55 gtdq systemd[1]: data-share.automount: Got automount request for /data/share, triggered by 406664 (ls)
9月 22 13:46:03 gtdq systemd[1]: data-share.automount: Got automount request for /data/share, triggered by 407143 (ls)
9月 22 13:49:03 gtdq systemd[1]: data-share.automount: Got automount request for /data/share, triggered by 407428 (ls)

# 查看 CIFS 断线、重连等内核日志
journalctl -k -b | grep -iE 'cifs|smb'
#或者
dmesg -T | grep -iE 'cifs|smb'

# 查看指定时间段
journalctl -k \
  --since "2026-09-22 12:00:00" \
  --until "2026-09-22 14:00:00" \
  | grep -iE 'cifs|smb'
## 同时看 systemd
journalctl -u data-share.mount \
  --since "2026-09-22 12:00:00" \
  --until "2026-09-22 14:00:00"

# 实时盯着日志
## 终端1
journalctl -kf | grep -iE 'cifs|smb'
## 终端2
journalctl -fu data-share.mount
### 然后人为断开 NAS 网络

# 查看当前 CIFS 连接状态
cat /proc/fs/cifs/DebugData
cat /proc/fs/cifs/Stats
findmnt -T /data/share -o TARGET,SOURCE,FSTYPE,OPTIONS

总结

Ubuntu 上挂载 NAS 时,使用:

CIFS
+
/etc/fstab
+
x-systemd.automount

相比简单的开机直接挂载,更适合 NAS、文件服务器等存在网络依赖的场景。

整个方案最关键的是理解:

/etc/fstab
        ↓
systemd-fstab-generator
        ↓
data-share.automount
        ↓
等待目录访问
        ↓
data-share.mount
        ↓
mount.cifs
        ↓
NAS

其中:

data-share.automount

负责“什么时候触发”,而:

data-share.mount

负责“真正挂载”。

实际运维时,建议始终使用:

findmnt -T /data/share

确认真正的文件系统来源,而不是通过 ll 判断。

对于使用自定义 SMB 端口的环境,还必须特别注意:

port=1445

手工 mount 和 /etc/fstab 两边都不能遗漏。

最后需要注意,automount 可以减少开机阶段对 NAS 的强依赖,但它并不能消除所有网络文件系统的阻塞风险。对于重要业务,应同时做好 NAS 可用性监控、应用 I/O 错误处理以及数据完整性保护。

保姆级教程:用NFS把群晖NAS的文件夹挂到Ubuntu 22.04上,实现文件无缝共享 本文提供了一份详细的教程,指导用户如何通过NFS协议将群晖NAS的文件夹挂载到Ubuntu 22.04系统上,实现文件的无缝共享。文章对比了NFS与SMB协议的性能差异,并提供了群晖端和Ubuntu端的配置指南、高级参数优化、自动挂载方案以及生产环境中的实战技巧,帮助用户提升文件共享效率和系统稳定性。 阅读详情

相关推荐

VMware 共享文件夹配置与排错:从 hgfs 挂载到 CIFS 互通

虚拟机与宿主机之间的文件互传,核心是让客户机在启动后直接挂载宿主机目录。其实现通常依赖 VMware Tools 提供的 hgfs 驱动,Linux 侧通过 vmhgfs-fuse 挂载,Windows 侧映射为网络位置。它无需配置真实网络协议栈,却能做到双向实时同步、跨重启保留,适合代码编辑、配置同步、数据集分发、日志交付与靶场练习等开发测试场景。实践中,open-vm-tools 缺失、fstab 挂载失败、allow_other 权限拒绝、CIFS 重启失效、Windows 找不到网络路径等问题频繁出

weixin_33906657的博客 446

Ubuntu 自动挂载 NAS 完整部署教程

Ubuntu开机自动挂载NAS,通过/etc/fstab配置CIFS共享,使用SMB 3.0协议、自定义端口1445,结合x-systemd.automount实现首次访问时延迟挂载,nofail确保NAS离线不影响启动,_netdev标识网络设备,credentials文件保护密码,支持断网后CIFS自动恢复,满足高可用需求。

小小的木头人的博客 263

VMware共享文件夹:HGFS挂载、持久化与SMB跨机共享实战

在虚拟化与多系统协作场景中,宿主机与客户机之间的文件传输是基础需求。其实现依赖两种典型机制:VMware的HGFS通道将宿主机目录以FUSE形式暴露给Linux客户机,SMB/CIFS协议则提供跨物理机、NAS的通用网络共享。理解open-vm-tools组件、vmware-hgfsclient探测、/mnt/hgfs挂载参数以及fstab/systemd持久化配置,能显著减少重复拷贝与手动同步,提升代码编译、数据集共享、多虚拟机协同等场景的效率。针对共享文件夹设置后不可见、重启失效、CIFS挂载超时等常见

weixin_34387468的博客 422

Linux挂载Windows共享目录:SMB/CIFS挂载与自动挂载实战

在Linux系统中访问Windows共享目录,本质上是将远程文件系统通过挂载操作接入本地目录树。这一过程依赖SMB/CIFS协议,Linux内核自带的CIFS客户端组件可以与Windows的SMB服务端握手,实现透明读写远端文件。掌握挂载原理与参数配置,不仅能提高跨平台资源访问效率,还能解决权限映射、开机自动挂载等工程实践问题。无论是双系统用户、混合网络运维,还是容器化应用,都需要理解CIFS挂载的正确姿势。从环境准备、手动挂载到fstab持久化配置,再到常见报错排查,系统梳理SMB/CIFS挂载的完整知识

weixin_33326218的博客 249

深入理解 systemd 单元与单元文件:从原理到排障实战

systemd 是现代 Linux 系统的核心初始化与服务管理框架,其核心抽象是 Unit(单元)——一种对系统资源(如服务、挂载点、定时器)的声明式建模。每个 Unit 由 Unit File 定义,遵循严格的类型语义(如 .service、.mount、.timer),字段作用域与生命周期行为深度绑定。这种设计带来强可靠性与可组合性,但也要求运维者穿透理解依赖图、状态机流转及字段真实作用时机。例如 WorkingDirectory 不仅指定路径,更决定 chdir() 系统调用时机,影响 ExecSta

weixin_34268843的博客 640

Linux磁盘管理核心原理与国产OS适配实战

磁盘管理是操作系统底层关键能力,涉及块设备抽象、文件系统构建与挂载生命周期控制。其核心原理涵盖GPT分区表校验机制、ext4/xfs元数据管理差异、VFS层卸载引用计数逻辑,以及systemd对fstab的动态接管模型。技术价值在于保障数据一致性、提升IO可靠性并支撑安全合规要求。典型应用场景包括金融系统高可用部署、政务云等保合规分区设计、ARM嵌入式平台存储适配及飞牛NAS等国产硬件挂载排障。本文聚焦Linux磁盘管理在国产化环境(麒麟/统信/UOS)中的特殊约束与实测验证,覆盖GPT分区、LUKS加密识

weixin_33912453的博客 214

VMware_Ubuntu_NAS_network_recovery

unmanagedip aens33DOWN/etc/fstab本文按“先恢复网络,再恢复 NAS 挂载,再做永久修复”的思路处理。

woaizhuliya的博客 189

搭建自己的wiki.js知识管理系统

环境centons7 , docker 地址:https://docs.requarks.io/install/docker 1)docker-compose 内容: version: "3" services: db: image: postgres:11-alpine environment: POSTGRES_DB: wiki POSTGRES_PASSWORD: wikijsrocks POSTGRES_USER: wikijs .

小小的木头人的博客 5892

Ubuntu 20.04开机自动挂载Samba共享的3种方法(附fstab配置详解)

本文详细介绍了在Ubuntu 20.04系统上实现Samba共享开机自动挂载的三种核心方法:经典的fstab静态挂载、基于systemd的按需自动挂载以及使用autofs的动态挂载。文章深入解析了每种方案的配置步骤、优缺点及适用场景,并重点提供了fstab配置的详细参数说明,帮助用户根据网络环境和需求选择最稳定高效的自动化挂载方案。

code8的博客 192

开题报告该怎么写

考研即将来临,而一般很多大学都会选择在考研结束之后开始安排选题和开题报考(考研之前一般都不谈,老师也很人性化的,不愿意耽误你的复习) 但无论怎么推迟,我们最终都需要去面对并完成这些任务。 现在我就要教大家该如何写一个完整的开题报告! 准备模板。不同的学校有不同的格式,一般情况你的导师会给你们一个学校的标准格式,这个不用太费心。有了模板我们就可以按照模板的“线索”一步一步填充完成即可! 一般大致格式可谓: 研究背景/论文的目的、背景和意义 我们需要写明选择该题目的...

wuyueweifeng的博客 1094

【嵌入式笔试题】C语言笔试题(4)

嵌入式C语言综合笔试题

m0_74055118的博客 1065

autofs按需挂载原理与NAS/NFS动态管理实战

autofs是一种基于内核事件触发的按需挂载机制,其核心原理是延迟挂载(on-demand mounting)与空闲自动卸载,通过用户空间守护进程协调mount系统调用,在首次访问路径时才建立NFS/CIFS等远程文件系统连接。该机制显著提升系统启动可靠性、降低资源占用,并天然支持多用户权限隔离,技术价值在于将静态挂载升级为可恢复、可伸缩的存储服务。典型应用场景包括嵌入式开发板挂载Ubuntu编译环境、飞牛/群晖NAS多用户家目录动态映射、AList WebDAV间接集成等。本文深入解析autofs四层配置

weixin_33866037的博客 638

从稀疏表示到低秩表示(一)

确定研究方向后一直在狂补理论,最近看了一些文章,有了些想法,顺便也总结了representation系列的文章,由于我刚接触,可能会有些不足,愿大家共同指正。 从稀疏表示到低秩表示系列文章包括如下内容: 一、 sparse representation 二、 一、 sparse representation 1  sparsity  一个线性表示解决的问题如下图所示:

彼岸花 3万+

Ubuntu 20.04 NFS挂载深度指南:权限映射、协议协商与fstab陷阱

NFS(网络文件系统)是一种运行在Linux虚拟文件系统(VFS)层之上的分布式文件访问协议,其核心在于客户端与服务端之间的协议协商、UID/GID身份映射及内核级挂载行为控制。在Ubuntu 20.04(内核5.4)环境中,NFSv4.2默认启用、idmapd域一致性强制校验、rpcbind依赖弱化等机制变化,导致传统挂载方式极易出现permission denied、stale file handle或拷贝速度慢等问题。技术价值体现在保障跨主机文件操作的一致性、安全性和性能可调性;典型应用场景包括AI训

491

腾讯股票接口API(1)——根据股票代码获取详情

获取股票简要信息,找来找去也没有找到官方的文档,都是复制粘贴的,这里先简单记录一下。 1.简要信息 以贵州茅台为例: http://qt.gtimg.cn/q=s_sh600519 // sh600519是贵州茅台的股票代码,根据自己的关键字拼接URL 可以直接在Android项目中请求,会得到如下一串字符串: v_s_sh600519="1~贵州茅台~600519~2075.95~42.95~2.11~38930~794942~~26078.04~GP-A"; 这里v_s代表简要信息,sh600519

GeofferySun的专栏 6万+

深入傅里叶级数与傅里叶变换:从基础到应用

傅里叶分析为我们提供了一种理解信号频率结构的强大工具。从傅里叶级数到傅里叶变换,再到快速傅里叶变换(FFT),其理论与应用紧密结合,对现代科学技术的发展意义非凡。如果你对信号处理、数据分析或工程计算感兴趣,傅里叶分析是必须掌握的基础工具。希望本文能帮助你对傅里叶分析有更深入的理解!如果有问题或想法,欢迎在评论区讨论!

qq_56683019的博客 3517

Linux磁盘管理实战:从物理设备到挂载的四层通路解析

Linux磁盘管理本质上是物理存储设备与内核子系统之间的协同过程,涉及硬件识别、块设备抽象、文件系统构建和挂载策略四大技术层级。其核心原理在于:不同协议(如NVMe、SATA、USB)对应不同主设备号与驱动栈;分区表(MBR/GPT)决定启动兼容性与容量上限;文件系统(ext4/XFS/btrfs)通过超级块、inode位图等元数据结构组织数据;而挂载行为则依赖VFS、systemd及fstab的多层校验机制。该技术链直接影响I/O性能、断电安全与系统稳定性,广泛应用于服务器运维、NAS配置、嵌入式部署及容

weixin_33858485的博客 302

避坑指南:SAP成本中心分割结构配置常见错误及解决(含KA06/KL01前置步骤)

本文深入解析了SAP成本中心会计中分割结构配置的关键步骤与常见错误。重点强调了配置前必须通过KA06创建次级成本要素(类别42)和通过KL01创建活动类型这两个核心前置步骤,并详细剖析了在OKES中定义分割规则及版本时的高频报错原因与解决方案,帮助顾问和运维人员有效规避配置陷阱,确保成本分摊的准确性。

pear55的博客 864

docker使用笔记

docker安装和基础配置记录

暮云星影的博客 1221

【RT-DETR有效改进】计算训练好权重文件对应的FPS、推理每张图片的平均时间(科研必备)

本文给大家带来的改进机制是利用我们训练好的权重文件计算FPS,同时打印每张图片所利用的平均时间,模型大小(以MB为单位),同时支持batch_size功能的选择,对于轻量化模型的读者来说,本文的内容对你一定有帮助,可以清晰帮你展示出模型速度性能的提升以及轻量化的效果(模型大小),对于以提高精度为目的的读者本文也能够帮助大家展示出现阶段的模型速度指标。所以本文的内容是十分有用的机制,对于大家发表论文来说,下面的图片为运行后的效果可以看到,该有的指标均已打印(本文内容为我独家创新,全网无第二份)下面是效果图和文

Snu77的博客 3628

MTK(camera篇)Camera整体点亮

本文介绍了在MTK平台上添加新Camera Sensor的驱动开发流程。主要内容包括:1)MTK Camera采用HAL3架构,驱动层主要负责sensor电源控制和寄存器操作;2)详细说明了添加新sensor需要在多个文件中进行的修改,包括设备树配置、内核头文件、驱动列表、电源序列等;3)特别指出需要配置I2C地址表,并导入tuning文件和metadata文件以完善ISP处理流程。文章提供了完整的文件修改清单,涵盖了从内核层到HAL层的完整开发过程,为MTK平台Camera Sensor驱动开发提供了具体

weixin_49303682的博客 360

LVM挂载与在线扩容实战指南:从物理卷到逻辑卷全流程

磁盘管理是Linux运维中最常见的挑战之一,传统分区一旦规划不足,扩容往往意味着停机和数据迁移风险。LVM(逻辑卷管理)通过引入物理卷、卷组和逻辑卷的分层抽象,将底层物理磁盘封装为灵活的资源池,从机制上解决了分区固定不可变的痛点。其核心技术价值在于逻辑卷和文件系统可以在线扩展,无需卸载挂载点或重启服务,尤其适合数据库目录、日志分区、自建NAS以及虚拟机磁盘扩容等动态增长场景。理解PV/VG/LV的关系与PE分配原理,是掌握容量管理的基础;而正确使用lvcreate、lvextend、resize2fs、xf

weixin_34411563的博客 186

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

关于Chrome谷歌浏览器http链接跳转成https的问题

测试环境是http,但通过子域名访问后chrome总是将http转换成https的问题。 在浏览器导航栏中输入: chrome://net-internals/#hsts 在页面底部找到 Delete domain security policies 在标注框里输入需要清除转换的根域名,点击Delete 如果有子域名需要清理掉,重复上述操作。 清除域名后验证方式 a、直接通过域名访问;b、通过以下截图位置输入域名验证 如果 最后分析: 如果服务器端nginx、apache等配置了http强制转h

小小的木头人的博客 4673

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

tar、7z常用命令

【代码】tar、7z常用命令。

小小的木头人的博客 3178

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

tengine [emerg] invalid IPv6 address in resolver “[fe80::1%enp2s0]“ in .../nginx.conf:137

错误:nginx: [emerg] invalid IPv6 address in resolver "[fe80::1%enp2s0]" in /usr/local/nginx/conf/nginx.conf:137 解决: 1)vim /etc/resolv.conf 注释掉nameserver fe80::1%enp2s0

小小的木头人的博客 2862

py3,pip安装库时出现,WARNING: Ignoring invalid distribution -ip

警告提示信息: 找到文件夹 site-packages, 文件夹内已~ 开头文件夹删除

小小的木头人的博客 1923
上一篇: Ubuntu 自动挂载 NAS 完整部署教程
下一篇: CentOS 7.9 离线安装 NVIDIA Container Toolkit:1.14.0 与 1.20.1 两种版本方案
小小的木头人
博客等级 码龄12年 1759粉丝 262原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值