Linux 远程文件系统挂载与配置指南

目录


CIFS/SMB 挂载配置

基本概念

CIFS(Common Internet File System)是 SMB(Server Message Block)协议的公共版本,用于在 Linux 和 Windows 系统间共享文件。

/etc/fstab 配置示例

基础配置(用户名密码明文)

//服务器IP/共享名 /本地挂载点 cifs username=用户名,password=密码,选项 0 0

安全配置(使用凭据文件)

  1. 创建凭据文件 /root/.smbcredentialsini username=用户名 password=密码
  2. 设置文件权限: bash sudo chmod 600 /root/.smbcredentials
  3. /etc/fstab 配置: bash //192.168.1.100/share /mnt/share cifs credentials=/root/.smbcredentials,uid=1000,gid=1000,file_mode=0777,dir_mode=0777 0 0

常用选项说明

  • credentials=/path/to/file:指定凭据文件路径
  • uid=1000,gid=1000:设置文件所有者和组(用 id 命令查看)
  • file_mode=0777,dir_mode=0777:设置文件和目录权限
  • iocharset=utf8:支持中文文件名
  • vers=3.0:指定 SMB 协议版本
  • nofail:启动时若挂载失败不阻止系统启动
  • _netdev:标识为网络设备,等待网络就绪

测试与验证

# 安装必要工具
sudo apt install cifs-utils  # Debian/Ubuntu
sudo yum install cifs-utils  # RHEL/CentOS

# 测试挂载
sudo mount -a

# 验证挂载
df -h | grep cifs
mount | grep cifs

Windows Server 2016 NFS 服务器配置

安装 NFS 服务器功能

  1. 打开服务器管理器 → 添加角色和功能
  2. 选择"基于角色或基于功能的安装"
  3. 在"服务器角色"中勾选 NFS 服务器
  4. 完成安装

PowerShell 快速配置

# 安装功能
Install-WindowsFeature -Name NFS-Client, NFS-Server

# 创建共享目录
New-Item -ItemType Directory -Path "D:\NFS_Share" -Force

# 创建 NFS 共享
New-NfsShare -Name "nfs_share" -Path "D:\NFS_Share"

# 配置权限(允许所有客户端读写)
Grant-NfsSharePermission -Name "nfs_share" -ClientName "*" -Permission ReadWrite

防火墙配置

# 启用 NFS 防火墙规则
Enable-NetFirewallRule -DisplayGroup "Network File System (NFS)"

从 Linux 客户端测试

# 安装客户端工具
sudo apt install nfs-common  # Ubuntu/Debian
sudo yum install nfs-utils   # RHEL/CentOS

# 查看共享
showmount -e 192.168.1.10

# 挂载测试
sudo mount -t nfs 192.168.1.10:/nfs_share /mnt/windows_nfs

NFS 用户认证配置

方法对比

方法 描述 适用场景
AUTH_SYS 基于主机信任和 UID/GID 映射 简单环境,信任网络
Kerberos 真正的用户级身份验证 企业环境,高安全性需求
SSSD+AD 通过 SSSD 集成 Active Directory 混合环境,AD 域

Kerberos 认证配置(NFSv4)

Windows 服务器端

# 创建共享并配置 Kerberos 认证
New-NfsShare -Name "krb_share" -Path "D:\KerberosData"
Set-NfsShare -Name "krb_share" -Authentication sys,krb5
Grant-NfsSharePermission -Name "krb_share" -ClientName "*" -Permission ReadWrite -Authentication sys,krb5

Linux 客户端

  1. 安装 Kerberos 客户端: bash sudo apt install krb5-user nfs-common

  2. 配置 /etc/krb5.conf: ```ini [libdefaults] default_realm = YOURDOMAIN.LOCAL dns_lookup_realm = true dns_lookup_kdc = true

[realms] YOURDOMAIN.LOCAL = { kdc = dc.yourdomain.local admin_server = dc.yourdomain.local } ```

  1. 获取 Kerberos ticket: bash kinit username@YOURDOMAIN.LOCAL

  2. 安全挂载: bash sudo mount -t nfs -o sec=krb5,rw,vers=4.2 192.168.1.10:/krb_share /mnt/nfs_krb

安全级别选项

  • sec=sys:无 Kerberos(传统方式)
  • sec=krb5:仅身份验证
  • sec=krb5i:身份验证 + 完整性检查
  • sec=krb5p:身份验证 + 完整性 + 隐私(加密)

NFS 与 SMB 性能对比

性能特征总结

场景 推荐协议 理由
Linux-to-Linux,小文件高并发 NFS 协议开销小,延迟低
混合环境(Windows/Linux/macOS) SMB3 跨平台兼容性好,功能丰富
大文件顺序读写 两者相当 都能饱和万兆网络带宽
虚拟化环境(VM 磁盘) SMB3 深度优化,支持 RDMA
数据库访问 避免使用 推荐直接使用块存储(iSCSI/FC)
高延迟网络(WAN) SMB3 更好的高延迟处理机制

决策指南

graph TD
    A[选择网络文件协议] --> B{主要使用环境是?}

    B --> C[Linux/UNIX 间]
    B --> D[Windows 或 跨平台混合环境]

    C --> E{性能优先级如何?}
    E -- 最高 --> F[推荐:NFS]
    E -- 安全与功能 --> G[考虑:SMB3]

    D --> H{需要哪些特性?}
    H -- AD集成/加密/企业级功能 --> I[推荐:SMB3]
    H -- 仅基础文件共享且信任网络 --> J[考虑:NFS]

核心差异

  1. NFS:设计简单轻量,为 UNIX/Linux 环境优化
  2. SMB3:功能丰富企业级,原生支持加密和 AD 集成

NFS 挂载故障排除

常见错误及解决

错误:mount.nfs: an incorrect mount option was specified

问题分析:挂载选项不被服务器支持

解决方案

  1. 简化挂载选项bash # 去掉 uid/gid 参数 mount -t nfs -o ro 192.168.0.9:/d2 /home/wcs/d2

  2. 强制使用 NFSv3bash mount -t nfs -o ro,nfsvers=3 192.168.0.9:/d2 /home/wcs/d2

  3. 检查服务器导出bash showmount -e 192.168.0.9

调试步骤

  1. 使用详细输出bash mount.nfs -v 192.168.0.9:/d2 /home/wcs/d2 -o ro

  2. 逐步测试选项: ```bash # 基础测试 mount -t nfs -o ro 192.168.0.9:/d2 /home/wcs/d2

# 如果成功,逐步添加选项 umount /home/wcs/d2 mount -t nfs -o ro,uid=1000,gid=1000,nfsvers=3 192.168.0.9:/d2 /home/wcs/d2 ```

  1. 检查服务器配置
  2. Linux 服务器:检查 /etc/exports
  3. Windows 服务器:检查 NFS 共享权限

注意事项

  1. NFS 选项语法:逗号前后不能有空格
  2. 协议版本:确保客户端和服务器版本兼容
  3. 防火墙:确保相关端口开放(2049, 111, 20048 等)

实用命令参考

查看挂载信息

# 查看所有挂载点
df -h

# 查看 NFS 挂载
mount | grep nfs

# 查看 CIFS 挂载
mount | grep cifs

卸载文件系统

# 卸载指定挂载点
umount /mnt/share

# 强制卸载(当设备忙时)
umount -f /mnt/share

# 懒卸载(当有程序正在使用时)
umount -l /mnt/share

开机自动挂载

确保 /etc/fstab 配置正确后,测试自动挂载:

# 测试 fstab 配置
sudo mount -a

# 查看启动日志
sudo systemctl status local-fs.target

文档版本:1.0
最后更新:2023年11月6日
适用系统:Linux (CentOS/RHEL/Ubuntu), Windows Server 2016+