17- 网络文件系统与共享(NFS、Samba) 📂
前提条件 ✅
- 已完成 LVM 逻辑卷创建与挂载(/data 目录使用 xfs 或 ext4,推荐 LVM 逻辑卷)
- 以 ops 用户登录(具有 sudo 权限)
- 系统运行在 Debian 12 Bookworm
- 虚拟机环境:VMware Workstation Pro(建议创建第二台 Debian 虚拟机作为客户端测试)
- 防火墙已配置允许相应端口(NFS: 2049/tcp + 111/tcp/udp 等;Samba: 445/tcp + 139/tcp)
详细步骤 🛠️
- NFS 服务端配置(推荐 Linux 到 Linux 共享)
安装 NFS 服务端:
sudo apt update
sudo apt install -y nfs-kernel-server
创建共享目录(使用上一章的 /data):
sudo mkdir -p /data/nfs_share
sudo chown nobody:nogroup /data/nfs_share
sudo chmod 777 /data/nfs_share # 测试用,生产建议更严格权限
配置 NFS 导出:
sudo nano /etc/exports
添加一行(允许 192.168.1.0/24 网段读写):
/data/nfs_share 192.168.1.0/24(rw,sync,no_subtree_check,no_root_squash)
解释常用选项: - rw:读写 - sync:同步写(数据安全) - no_subtree_check:性能优化 - no_root_squash:允许客户端 root 映射为服务器 root(生产慎用)
应用配置:
sudo exportfs -ra
sudo systemctl restart nfs-kernel-server
sudo exportfs -v
防火墙放行(ufw 示例):
sudo ufw allow from 192.168.1.0/24 to any port nfs
sudo ufw reload
- NFS 客户端挂载(在另一台 Debian 机器或同一台测试)
安装客户端工具:sudo apt install -y nfs-common
临时挂载:
sudo mkdir /mnt/nfs
sudo mount -t nfs 192.168.1.100:/data/nfs_share /mnt/nfs
df -h /mnt/nfs
touch /mnt/nfs/testfile.txt
永久挂载(/etc/fstab):
192.168.1.100:/data/nfs_share /mnt/nfs nfs defaults,_netdev 0 0
测试:
sudo mount -a
- Samba 服务端配置(Windows/Linux/Mac 跨平台共享)
安装 Samba:
sudo apt install -y samba
创建共享目录:
sudo mkdir -p /data/smb_share
sudo chown ops:ops /data/smb_share
sudo chmod 770 /data/smb_share
配置 smb.conf:
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
sudo nano /etc/samba/smb.conf
在文件末尾添加:
[smb_share]
path = /data/smb_share
browseable = yes
writable = yes
valid users = ops
create mask = 0664
directory mask = 0775
force group = ops
设置 Samba 用户密码(必须为已存在系统用户 ops):
sudo smbpasswd -a ops
# 输入 Samba 密码(可与系统密码不同)
sudo smbpasswd -e ops
重启服务:
sudo systemctl restart smbd
sudo systemctl enable smbd
防火墙放行:
sudo ufw allow samba
sudo ufw reload
- Samba 客户端访问
- Windows:文件资源管理器 → \192.168.1.100\smb_share → 输入 ops 用户名/密码
- Linux:
sudo apt install -y cifs-utils sudo mkdir /mnt/smb sudo mount -t cifs //192.168.1.100/smb_share /mnt/smb -o username=ops,vers=3.0
实践任务 🎯
- 配置 NFS 共享 /data/nfs_share,允许 192.168.1.0/24 访问
- 在同一台或另一台 Debian 机器上挂载 NFS 共享,创建文件并确认同步
- 配置 Samba 共享 /data/smb_share,只允许 ops 用户访问
- 从 Windows 宿主机或另一台机器访问 Samba 共享,上传/下载文件测试
自测问题 ❓
- NFS 中 no_root_squash 选项的作用和安全风险是什么?
- Samba 的 valid users 和 force group 参数分别控制什么?
- 如何让 NFS 客户端在网络不可达时自动挂载失败而不卡住开机?(_netdev 作用)
- 生产环境中 NFS 和 Samba 哪个更适合 Windows 客户端访问?
总结 📌
NFS 是 Linux 集群/容器间高效共享的标准方式,Samba 是跨平台(尤其是 Windows)文件共享的事实标准。
生产中 NFS 常用于 Kubernetes PV、数据库数据目录共享;Samba 用于用户文件共享、备份目标。
后续备份章节的 rsync/borg 等将直接利用这些共享目录。