NFS/autofs_Config_Instruction

本文详细介绍了服务器端NFS配置,包括exports文件的编辑、访问权限设置、客户端挂载方法、防火墙放行策略,以及AUTOFS自动挂载和root用户权限管理。

服务器端配置

配置文件位置:/etc/exports

配置格式:

/share1    10.32.0.0/24(rw)

# /share1        Server上的共享目录
#10.32.0.0/24    访问共享目录的地址
#(rw)            权限

设置访问共享目录地址的方法:

*                     //代表所属有用户
192.168.1.0/24        //这个网段的主机
192.168.1.1/32        //仅这个主机
*.lab.example.com     //域中的用户

#hosts的文件添加IP与域的对应关系
vim /etc/hosts
    192.168.1.1 NfsServer.lab.example.com
    192.168.1.2 NfsClient.lab.example.com

 

客户端挂载查看

查看NFS_Server的共享目录

showmount -e Server_IP
#
#示例:NFS_Server:10.32.0.1
#
#Client端查看:showmount -e 10.32.0.1

客户端挂载NFS_Server端的共享文件

1. 临时挂载

#本地提前创建一个目录用于挂载NFS的共享目录
mkdir /mnt/share

#临时挂载 10.32.0.1 服务器上的 “/share1” 目录,挂载到本地 “/mnt/share” 目录
mount -t nfs 10.32.0.1:/share1 /mnt/share    

2. 永久挂载

#永久挂载 10.32.0.1 服务器上的 “/share1” 目录,挂载到本地 “/mnt/share” 目录
vim /etc/fstab
192.168.25.128:/share1 /mnt/share nfs defaults 0 0

#进行测试,是否正确
mount -a

#没有出错,说明挂载配置成功

客户端向NFS_Server的共享目录写数据过程

1. Client:向共享目录的挂载点写数据的时候,会带上用户的UID。

2. Server:首先对比UID,对于这个共享目录是否有读写的权限

3. 共享目录导出时,是否具有rw权限。

#示例1:
#Server端:/etc/exports  文件
    vim /etc/eports
    /share1 192.168.1.0/24 (rw)

#Server端:/share1 目录的属性
    ll -ld /share1
    drwxr-xr-x 2 root root 6 Feb 21 14:44 /share1

#Server端:存在用户user1的信息
    id user1
    uid=1004(user1) gid=1004(user1) groups=1004(user1)

#Client端:挂载share1共享目录后写入文件

#Client端:存在用户user1的信息
    id user1
    uid=1004(user1) gid=1004(user1) groups=1004(user1)
 
#Client端 可以访问 文件
#Client端 不能写入 文件

#设置ACL权限列表,针对user1进行设置
setfacl -m u:1004:rwx /share1

#Client端 既可以访问 又可以 写入 文件

说明:

Server端的/etc/exports文件将 权限“rw” 改为“ro”。即使设置了ACL仍然无法写入文件。

修改Server的配置文件,如何快速应用

#快速应用配置文件信息,不需要重启服务
exportfs -rv

Root用户特性

root用户进行写操作,不是真的root用户,而是使用nfsnobody进行替换

#Server查看nfsnobody的用户信息
id nfsnobody
uid=65534(nfsnobody) gid=65534(nfsnobody) groups=65534(nfsnobody)

#Server上设置nfsnobody的ACL权限列表
setfacl -m u:65534:rwx /share1

root用户进行操作时,不进行替换

#禁止root的 uid及gid 的替换
#Server端配置
vim /etc/exports
/share1 10.32.1.0/24(rw,no_root_squash)

所有用户进行替换

#所有用户 进行 uid及gid 的替换
#Server端配置:
vim /etc/exports
/share1 10.32.1.0/24(rw,all_squash)

自定义替换的用户和组

#Server端存在用户user2
id user2
uid=1005(user2) gid=1005(user2) groups=1005(user2)

#Server端配置:
vim /etc/exports
/share1 10.32.1.0/24(rw,all_squash,anonuid=1005,anongid=1005)

#设置user2的用户ACL权限列表
setfacl -m u:1007:rwx /share1

防火墙放行NFS

NFS端口不固定

NFS在启动时,向rpfbind服务区注册端口,而每次启动注册的端口会不一样。

rpcbind服务的端口:111/tcp

#Server端防火墙配置:
firewall-cmd --permanent --add-service=rpc-bind
firewall-cmd --permanent --add-service=nfs
firewall-cmd --permanent --add-service=mountd
firewall-cmd --reload

AUTOFS配置

自动根据规则将远程服务器的共享目录进行挂载。当不使用的时候会自动的卸载

原理:

1. 在Client端配置

2. 监听一个目录“/mnt/”,当该目录下的子目录/mnt/share1,被使用时,会根据规则,挂载到远程服务器相应的共享目录

配置监听目录

#配置监听文件
vim /etc/auto.master
/mnt    /etc/auto.nfs
#/mnt            监听目录
#/etc/auto.nfs   规则文件

配置规则文件

cp /etc/auto.misc /etc/auto.nfs
vim /etc/auto.nfs
share     -fstype=nfs    10.32.1.1:/share1

#share                Client的监听目录
#fstype               挂载的文件类型
#10.32.1.1:/share1    Server的挂载点

autofs的串联解释

#首先:配置主要在Client端
#文件的目录层级:/mnt/share

#监听文件:设置服务监听的目录
vim /etc/auto.master
/mnt    /etc/auto.nfs

vim /etc/auto.nfs
share    -fstype=nfs    10.32.1.1:/share1

#注释:
#    服务会一直监听/mnt目录
#    当Client使用/mnt目录下的子目录share时,会自动调用/etc/auto.nfs的规则文件
#    而/etc/auto.nfs规则文件指定:将Server的/share1目录挂载到Client的/mnt/share目录

---个人笔记,存档,细节逐步添加

<think>好的,我需要帮助用户检查他们的NFS挂载配置是否正确,并识别潜在问题。首先,用户提供的配置是: `10.10.168.54:/dae_nto_prod /dae_nto_prod nfs defaults,_netdev 0 0` 我需要分析这个配置的每个部分,看看是否符合最佳实践,并指出可能的问题。 首先,检查挂载选项部分。用户使用了`defaults`和`_netdev`。`defaults`通常包括rw、suid、dev、exec、auto、nouser、async等选项。其中`async`可能会影响数据一致性,特别是在服务器崩溃时可能导致数据丢失。不过这在某些情况下是可以接受的,但需要用户了解风险。 `_netdev`选项是正确的,因为它确保在网络就绪后再挂载,避免启动时挂载失败。这一点没问题。 接下来是挂载参数格式。用户将NFS服务器路径和本地挂载点正确指定,没有问题。 关于文件系统类型,用户指定了`nfs`。通常建议明确使用NFS版本,比如`nfs4`,以避免使用旧版本可能存在的兼容性或性能问题。如果服务器支持NFSv4,最好显式指定版本。 备份和检查字段(最后两个0)。这里用户设置为0 0,意味着不进行备份和fsck检查。对于NFS来说,通常不需要进行fsck,所以第二个0是正确的。但第一个0表示不备份,可能对于重要数据来说,用户可能需要备份策略,但这不是配置本身的错误,而是策略问题。 潜在问题方面,可能需要检查以下几点: 1. 防火墙设置:NFS使用的端口是否开放?特别是如果使用NFSv4,默认端口是2049,但旧版本可能需要更多端口。需要确保服务器和客户端之间的相关端口畅通。 2. 服务器导出配置:确认服务器是否正确导出了`/dae_nto_prod`目录,并且客户端的IP地址是否有权限访问。可以通过在服务器上运行`showmount -e 10.10.168.54`来检查。 3. 版本兼容性:如果服务器配置为仅支持特定NFS版本,而客户端使用默认版本可能导致连接问题。建议明确指定版本,如使用`nfsvers=4`或`nfs4`作为文件系统类型。 4. 挂载超时问题:如果网络延迟较高或服务器响应慢,可能需要调整超时参数,比如增加`timeo`和`retrans`选项。 解决方案部分,我应该建议用户修改挂载选项,比如指定NFSv4,添加必要的参数,检查服务器导出和防火墙设置,以及测试挂载后的读写操作。 另外,用户提供的引用中有关于网络连接的问题(如引用2和3提到的连接被拒绝或重置),这可能与NFS挂载问题相关,需要检查网络连通性,DNS解析是否正确,以及SSL/TLS配置(尽管NFS通常不使用SSL,但如果是通过某些安全通道可能需要考虑)。 最后,根据用户之前的NUMA调整问题,可能需要确保NFS服务器的NUMA配置也进行了优化,尤其是在高负载场景下,但这个问题可能超出了当前用户的需求范围,不过可以作为一个额外建议提及。</think>### NFS挂载配置检查与优化建议 您提供的NFS挂载配置 `10.10.168.54:/dae_nto_prod /dae_nto_prod nfs defaults,_netdev 0 0` 存在部分潜在问题,以下是详细分析和解决方案: --- #### **一、配置问题诊断** 1. **挂载选项优化不足** - **`defaults` 隐含风险** `defaults` 包含 `async`(异步写入)选项,可能导致数据不一致(如服务器崩溃时未同步的写入丢失)[^1]。 - **缺少版本指定** 未明确指定NFS版本(如`nfs4`),可能导致兼容性问题或性能下降[^2]。 2. **网络依赖性验证** - **防火墙/端口问题** NFS依赖特定端口(如NFSv4默认端口2049,旧版本可能需111/2049/20048等)。若防火墙未放行,会导致挂载失败(类似引用[2]的`connection refused`错误)[^2]。 - **DNS解析问题** 使用IP地址替代主机名可规避DNS解析失败(如引用[3]的`SSL_read`错误可能与网络层相关)[^3]。 3. **服务器端配置验证** - **导出目录权限** 需确保NFS服务器已正确导出 `/dae_nto_prod` 并允许客户端IP访问(通过 `exportfs -v` 验证)。 --- #### **二、解决方案与优化建议** 1. **修改挂载配置(/etc/fstab)** 调整后的配置示例: ```bash 10.10.168.54:/dae_nto_prod /dae_nto_prod nfs4 rw,_netdev,hard,intr,timeo=600,retrans=2 0 0 ``` - **关键参数说明**: - `nfs4`:强制使用NFSv4协议(兼容性更好) - `hard` + `intr`:确保挂载稳定性,允许中断长时间无响应的操作 - `timeo=600`:超时时间设置为60秒(单位:0.1秒) - `retrans=2`:重试次数限制,防止无限重试 2. **验证网络与服务器配置** - **检查NFS服务状态**: ```bash showmount -e 10.10.168.54 # 确认服务器导出列表 ``` - **防火墙放行**: ```bash # 若使用firewalld(NFSv4为例) firewall-cmd --permanent --add-service=nfs firewall-cmd --reload ``` 3. **测试挂载与读写** - **手动挂载测试**: ```bash mount -t nfs4 10.10.168.54:/dae_nto_prod /dae_nto_prod ``` - **写入验证**: ```bash echo "test" > /dae_nto_prod/testfile && rm -f /dae_nto_prod/testfile ``` 4. **日志排查(若失败)** - **查看挂载错误**: ```bash dmesg | grep nfs # 内核日志 journalctl -xe | grep nfs # systemd日志 ``` --- #### **三、关键注意事项** 1. **避免`soft`挂载** `soft`模式可能导致数据损坏(超时后丢弃请求),仅适用于非关键数据。 2. **客户端与服务端版本一致性** - 通过 `nfsstat -m` 查看当前挂载参数和版本。 - 若服务器仅支持NFSv3,需客户端安装 `nfs-utils` 兼容包。 3. **性能调优(高负载场景)** - 增加 `rsize`/`wsize`(如 `rsize=1048576,wsize=1048576`)提升吞吐量。 - 使用 `noatime` 减少元数据更新开销[^4]。 --- ### **总结步骤** ```plaintext 1. 修改/etc/fstab → 指定NFSv4并添加稳定性参数 2. 验证服务器导出与网络连通性 3. 手动挂载测试 → 检查读写权限 4. 监控日志与性能(可选) ``` --- ### 相关问题 1. 如何通过`tcpdump`抓包分析NFS挂载失败的具体原因? 2. NFS共享目录出现权限拒绝(Permission Denied)时应如何排查? 3. 如何通过autofs实现按需自动挂载NFS目录?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值