Linux 远程文件系统挂载与配置指南
目录
CIFS/SMB 挂载配置
基本概念
CIFS(Common Internet File System)是 SMB(Server Message Block)协议的公共版本,用于在 Linux 和 Windows 系统间共享文件。
/etc/fstab 配置示例
基础配置(用户名密码明文)
//服务器IP/共享名 /本地挂载点 cifs username=用户名,password=密码,选项 0 0
安全配置(使用凭据文件)
- 创建凭据文件
/root/.smbcredentials:ini username=用户名 password=密码 - 设置文件权限:
bash sudo chmod 600 /root/.smbcredentials - /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 服务器功能
- 打开服务器管理器 → 添加角色和功能
- 选择"基于角色或基于功能的安装"
- 在"服务器角色"中勾选 NFS 服务器
- 完成安装
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 客户端
-
安装 Kerberos 客户端:
bash sudo apt install krb5-user nfs-common -
配置
/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 } ```
-
获取 Kerberos ticket:
bash kinit username@YOURDOMAIN.LOCAL -
安全挂载:
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]
核心差异
- NFS:设计简单轻量,为 UNIX/Linux 环境优化
- SMB3:功能丰富企业级,原生支持加密和 AD 集成
NFS 挂载故障排除
常见错误及解决
错误:mount.nfs: an incorrect mount option was specified
问题分析:挂载选项不被服务器支持
解决方案:
-
简化挂载选项:
bash # 去掉 uid/gid 参数 mount -t nfs -o ro 192.168.0.9:/d2 /home/wcs/d2 -
强制使用 NFSv3:
bash mount -t nfs -o ro,nfsvers=3 192.168.0.9:/d2 /home/wcs/d2 -
检查服务器导出:
bash showmount -e 192.168.0.9
调试步骤
-
使用详细输出:
bash mount.nfs -v 192.168.0.9:/d2 /home/wcs/d2 -o ro -
逐步测试选项: ```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 ```
- 检查服务器配置:
- Linux 服务器:检查
/etc/exports - Windows 服务器:检查 NFS 共享权限
注意事项
- NFS 选项语法:逗号前后不能有空格
- 协议版本:确保客户端和服务器版本兼容
- 防火墙:确保相关端口开放(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+