在上一篇文章中,我们讨论了如何在 ZFS 文件系统中实现 NFS 共享,并详细解释了如何配置和管理这些共享的权限。今天,我们将转向一个新的主题:ZFS SMB 共享。这是一个同样重要的功能,它允许您在 Windows 环境中共享 ZFS 文件系统。在本篇文章中,我们将简单地介绍一下 ZFS SMB 共享的基本概念和用途。
ZFS SMB 共享概述
SMB (Server Message Block) 是一种网络文件共享协议,它主要用于 Windows 环境中,但也可以在其他操作系统(如 Linux 和 macOS)中使用。SMB 共享允许在网络上的设备之间共享文件和打印服务。
ZFS 文件系统支持 SMB 共享,这意味着您可以将 ZFS 数据集在网络上共享,以便其他设备或系统可以访问和使用这些数据。和 NFS 共享一样,ZFS SMB 共享也可以配置为只读或读写模式,取决于您的具体需求。
通过 ZFS SMB 共享,您可以轻松地在多个设备或系统之间共享数据,无需复制或移动数据。这是一种非常高效的数据共享方式,尤其是对于大量数据或需要实时共享数据的场景。
配置 ZFS SMB 共享
配置 ZFS SMB 共享相对简单。您可以使用 zfs set sharesmb=on
命令来启用 SMB 共享,然后使用 zfs sharesmb
命令来查看共享的状态。您也可以使用 zfs set sharesmb=off
命令来关闭 SMB 共享。
权限控制方面,ZFS SMB 共享使用 Windows 的 ACLs (Access Control Lists,访问控制列表) 来管理权限。您可以为每个用户或组设置不同的访问权限,例如读、写、执行等。
# 安装 samba 服务
dnf install samba -y
# 启动并设置开机自启动
systemctl enable --now smb
# 在启用共享的时候,会发现以下错误,但实际共享已开启。
[root@localhost /]# zfs set sharesmb=on SSD
cannot share 'SSD: system error': SMB share creation failed
# 检测共享已开启
[root@localhost /]# zfs get sharesmb
NAME PROPERTY VALUE SOURCE
SSD sharesmb on local
SSD@snap20230615 sharesmb - -
# 重启服务
[root@localhost /]# systemctl restart smb
# 关闭共享
[root@localhost /]# zfs set sharesmb=off SSD
# 添加已有用户为samba用户,这是需要注意虽然用户名是已有用户,但samba密码与操作系统登录密码是不一样的。
[root@localhost /]# smbpasswd -a root
New SMB password:
Retype new SMB password:
Added user root.
# 添加新用户
useradd -g samba -M -s /sbin/nologin admin
# 设置系统账号密码
passwd admin
# 设置共享账号密码
smbpasswd -a admin
# 查看当前所有 smb 用户信息
[root@localhost /]# pdbedit -L
root:0:root
# 查看当前所有 smb 用户详细信息
[root@localhost /]# pdbedit -L -v
---------------
Unix username: root
NT username:
Account Flags: [U ]
User SID: S-1-5-21-1504016619-830778714-2870461189-1000
Primary Group SID: S-1-5-21-1504016619-830778714-2870461189-513
Full Name: root
Home Directory: \\DEMO\root
HomeDir Drive:
Logon Script:
Profile Path: \\DEMO\root\profile
Domain: LOCALHOST
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: Wed, 06 Feb 2036 23:06:39 CST
Kickoff time: Wed, 06 Feb 2036 23:06:39 CST
Password last set: Fri, 16 Jun 2023 11:59:38 CST
Password can change: Fri, 16 Jun 2023 11:59:38 CST
Password must change: never
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
# 设置共享目录
cat >> /etc/samba/smb.conf << EOF
[SSD]
path = /SSD
browseable = yes
read only = no
EOF
# 重启服务,生效配置
systemctl restart smb
客户端配置
Windows 客户端直接通过资源管理器输入 \\172.16.0.1
访问即可。
Linux 客户端可以通过 mount
或 smbclient
命令行工具访问。Rocky Linux 推荐使用 cifs-utils
包。
# 安装客户端
dnf install cifs-utils
dnf install samba-client
# 测试验证
smbclient -L //172.16.0.1 -U username
# 手动 mount
mount -t cifs //172.16.0.1/SSD /mnt/SSD -o username=username,password=password
# 设置开机自动 mount
# 创建 credentials 文件(防止密码暴露)
vi /etc/samba/cred_SSD
username=xxx
password=xxx
# 设置文件权限
chmod 600 /etc/samba/cred_SSD
# 设置开机自动 mount 参数
vi /etc/fstab
//172.16.0.1/SSD /mnt/SSD cifs credentials=/etc/samba/cred_SSD,vers=3.1.1,file_mode=0755,dir_mode=0755,_netdev 0 0
写在最后
在这篇文章中,我们专注于 ZFS 的 SMB 共享,并通过实际操作指导你完成了如何在 Linux 上设置并访问 SMB 共享。我们讨论了安装和使用 cifs-utils
与 smbclient
工具的过程,以及如何在 Linux 上挂载和访问 SMB 共享。
我们希望这些信息和步骤能帮助你理解并应用 ZFS 的 SMB 共享功能。在日常的数据存储和共享中,SMB 是一种重要且常用的协议。而 ZFS 通过其强大的功能和灵活性,使得 SMB 共享的实现更加方便和高效。
然而,一个优秀的文件系统不仅需要提供高效的数据访问和共享,还需要有强大的性能监控和管理能力。这是我们下一篇文章的主题 —— ZFS 性能监控与管理。我们将探讨如何利用 ZFS 的内置工具和第三方工具来监控和管理 ZFS 的性能。通过这些工具,我们可以获取关于 ZFS 性能的详细信息,以便更好地理解和优化我们的 ZFS 系统。
变更记录
- 2025-04-23
- 新增开机自动挂载命令

samba
1.在Windows 的网络中不会显示 ,需要安装一个 wsdd 的服务并在防火墙配置中添加service。这样在win中就不用每次都去输入\192...* 了,直接点击网络里对应的主机名字即可,
2.在MacOS 的网路里显示 需要开启nmb.service, (Linux 没有测试过)
3.在苹果手机的文件app 中显示内容不可用 就是你当前文件夹的名字可能存在特殊符号如 “” 反斜杠