跳转至

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)

详细步骤 🛠️

  1. 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

  1. 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

  1. 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

  1. Samba 客户端访问
  2. Windows:文件资源管理器 → \192.168.1.100\smb_share → 输入 ops 用户名/密码
  3. 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
    

实践任务 🎯

  1. 配置 NFS 共享 /data/nfs_share,允许 192.168.1.0/24 访问
  2. 在同一台或另一台 Debian 机器上挂载 NFS 共享,创建文件并确认同步
  3. 配置 Samba 共享 /data/smb_share,只允许 ops 用户访问
  4. 从 Windows 宿主机或另一台机器访问 Samba 共享,上传/下载文件测试

自测问题 ❓

  1. NFS 中 no_root_squash 选项的作用和安全风险是什么?
  2. Samba 的 valid users 和 force group 参数分别控制什么?
  3. 如何让 NFS 客户端在网络不可达时自动挂载失败而不卡住开机?(_netdev 作用)
  4. 生产环境中 NFS 和 Samba 哪个更适合 Windows 客户端访问?

总结 📌

NFS 是 Linux 集群/容器间高效共享的标准方式,Samba 是跨平台(尤其是 Windows)文件共享的事实标准。
生产中 NFS 常用于 Kubernetes PV、数据库数据目录共享;Samba 用于用户文件共享、备份目标。
后续备份章节的 rsync/borg 等将直接利用这些共享目录。