linux NFS

NFS配置与故障排除
本文介绍了NFS的基本操作命令,如showmount和mount的使用方法,并提供了详细的参数说明。此外,还详细阐述了如何通过配置/etc/fstab来管理NFS挂载点,以及常见NFS故障的排查技巧。
客户段的操作:
1、showmout命令对于NFS的操作和查错有很大的帮助,所以我们先来看一下showmount的用法
showmout
-a :这个参数是一般在NFS SERVER上使用,是用来显示已经mount上本机nfs目录的cline机器。
-e :显示指定的NFS SERVER上export出来的目录。
例如:
showmount -e 192.168.0.30
Export list for localhost:
/tmp *
/home/linux *.linux.org
/home/public (everyone)
/home/test 192.168.0.100
2、mount nfs目录的方法:
mount -t nfs hostname(orIP):/directory /mount/point
具体例子:
Linux: mount -t nfs 192.168.0.1:/tmp /mnt/nfs
Solaris:mount -F nfs 192.168.0.1:/tmp /mnt/nfs
BSD: mount 192.168.0.1:/tmp /mnt/nfs
3、mount nfs的其它可选参数:
[color=red]HARD mount和SOFT MOUNT: [/color]HARD: NFS CLIENT会不断的尝试与SERVER的连接(在后台,不会给出任何提示信息,在LINUX下有的版本仍然会给出一些提示),直到MOUNT上。
SOFT:会在前台尝试与SERVER的连接,是默认的连接方式。当收到错误信息后终止mount尝试,并给出相关信息。
例如:mount -F nfs -o hard 192.168.0.10:/nfs /nfs
对于到底是使用hard还是soft的问题,这主要取决于你访问什么信息有关。例如你是想通过NFS来运行X PROGRAM的话,你绝对不会希望由于一些意外的情况(如网络速度一下子变的很慢,插拔了一下网卡插头等)而使系统输出大量的错误信息,如果此时你用的是HARD方式的话,系统就会等待,直到能够重新与NFS SERVER建立连接传输信息。另外如果是非关键数据的话也可以使用SOFT方式,如FTP数据等,这样在远程机器暂时连接不上或关闭时就不会挂起你的会话过程。

4、/etc/fstab的设定方法
/etc/fstab的格式如下:
fs_spec fs_file fs_type fs_options fs_dump fs_pass
fs_spec:该字段定义希望加载的文件系统所在的设备或远程文件系统,对于nfs这个参数一般设置为这样:192.168.0.1:/NFS
fs_file:本地的挂载点
fs_type:对于NFS来说这个字段只要设置成nfs就可以了
fs_options:挂载的参数,可以使用的参数可以参考上面的mount参数。
fs_dump - 该选项被"dump"命令使用来检查一个文件系统应该以多快频率进行转储,若不需要转储就设置该字段为0
fs_pass - 该字段被fsck命令用来决定在启动时需要被扫描的文件系统的顺序,根文件系统"/"对应该字段的值应该为1,其他文件系统应该为2。若该文件系统无需在启动时扫描则设置该字段为0 。
5、与NFS有关的一些命令介绍
nfsstat:
查看NFS的运行状态,对于调整NFS的运行有很大帮助
rpcinfo:
查看rpc执行信息,可以用于检测rpc运行情况的工具。

三、NFS故障解决
1、NFSD没有启动起来
首先要确认 NFS 输出列表存在,否则 nfsd 不会启动。可用 exportfs 命令来检查,如果 exportfs 命令没有结果返回或返回不正确,则需要检查 /etc/exports 文件。
2、mountd 进程没有启动
mountd 进程是一个远程过程调用 (RPC) ,其作用是对客户端要求安装(mount)文件系统的申请作出响应。mountd进程通过查找 /etc/xtab文件来获知哪些文件系统可以被远程客户端使用。另外,通过mountd进程,用户可以知道目前有哪些文件系统已被远程文件系统装配,并得知远程客户端的列表。查看mountd是否正常启动起来可以使用命令rpcinfo进行查看,在正常情况下在输出的列表中应该象这样的行:
100005 1 udp 1039 mountd
100005 1 tcp 1113 mountd
100005 2 udp 1039 mountd
100005 2 tcp 1113 mountd
100005 3 udp 1039 mountd
100005 3 tcp 1113 mountd
如果没有起来的话可以检查是否安装了PORTMAP组件。
rpm -qa|grep portmap
3、fs type nfs no supported by kernel
kernel不支持nfs文件系统,重新编译一下KERNEL就可以解决。
4、can't contact portmapper: RPC: Remote system error - Connection refused
出现这个错误信息是由于SEVER端的PORTMAP没有启动。
5、mount clntudp_create: RPC: Program not registered
NFS没有启动起来,可以用showmout -e host命令来检查NFS SERVER是否正常启动起来。
6、mount: localhost:/home/test failed, reason given by server: Permission denied
这个提示是当client要mount nfs server时可能出现的提示,意思是说本机没有权限去mount nfs server上的目录。解决方法当然是去修改NFS SERVER咯。
7、被防火墙阻挡
这个原因很多人都忽视了,在有严格要求的网络环境中,我们一般会关闭linux上的所有端口,当需要使用哪个端口的时候才会去打开。而NFS默认是使用111端口,所以我们先要检测是否打开了这个端口,另外也要检查TCP_Wrappers的设定。

四、NFS安全
加强NFS安全的方法:
1、合理的设定/etc/exports中共享出去的目录,最好能使用anonuid,anongid以使MOUNT到NFS SERVER的CLIENT仅仅有最小的权限,最好不要使用root_squash。
2、使用IPTABLE防火墙限制能够连接到NFS SERVER的机器范围
iptables -A INPUT -i eth0 -p TCP -s 192.168.0.0/24 --dport 111 -j ACCEPT
iptables -A INPUT -i eth0 -p UDP -s 192.168.0.0/24 --dport 111 -j ACCEPT
iptables -A INPUT -i eth0 -p TCP -s 140.0.0.0/8 --dport 111 -j ACCEPT
iptables -A INPUT -i eth0 -p UDP -s 140.0.0.0/8 --dport 111 -j ACCEPT
3、为了防止可能的Dos攻击,需要合理设定NFSD 的COPY数目。
4、修改/etc/hosts.allow和/etc/hosts.deny达到限制CLIENT的目的
/etc/hosts.allow
portmap: 192.168.0.0/255.255.255.0 : allow
portmap: 140.116.44.125 : allow
/etc/hosts.deny
portmap: ALL : deny
5、改变默认的NFS 端口
NFS默认使用的是111端口,但同时你也可以使用port参数来改变这个端口,这样就可以在一定程度上增强安全性。

服务器端:
Nfs
修改/etc/exports
/citylife/media 192.168.50.24(rw,sync,no_root_squash)
/etc/init.d/portmap start
/etc/init.d/nfs start
### 配置Linux系统上的NFS(网络文件系统) #### NFS服务概述 NFS(Network File System)是一种用于UNIX/Linux系统的分布式文件系统协议,允许客户端通过网络访问远程服务器上的文件,就像访问本地文件一样。其核心特性包括: - **支持异构系统共享**:适用于Linux与Unix系统之间的文件共享。 - **提供POSIX兼容文件操作语义**:确保文件操作的标准化。 - **采用RPC机制实现透明访问**:通过远程过程调用(Remote Procedure Call, RPC)实现跨网络的文件访问。 - **支持TCP/UDP传输**:推荐使用TCP以获得更稳定的连接[^3]。 #### NFS服务端配置指南 1. **安装NFS服务** 在大多数Linux发行版中,NFS服务由`nfs-utils`包提供。可以通过以下命令安装: ```bash sudo yum install nfs-utils # CentOS/RHEL sudo apt-get install nfs-kernel-server # Debian/Ubuntu ``` 2. **配置NFS共享目录** 编辑NFS配置文件`/etc/exports`,定义要共享的目录及其权限规则。例如,要将`/nfs/oracle`目录共享给`192.168.1.0/24`网络的所有主机,并赋予读写权限,可以添加如下内容: ``` /nfs/oracle 192.168.1.0/24(rw,sync,no_subtree_check) ``` 其中,常用的选项包括: - `rw`: 允许读写操作。 - `ro`: 只读访问。 - `sync`: 数据同步写入磁盘。 - `no_subtree_check`: 禁止子树检查,提升性能但降低安全性。 3. **启动并启用NFS服务** 安装完成后,需要启动NFS服务并设置开机自启: ```bash sudo systemctl start nfs-server sudo systemctl enable nfs-server ``` 4. **配置防火墙规则** 为确保NFS服务能够正常运行,需在防火墙上开放相关端口: ```bash sudo firewall-cmd --permanent --add-service=nfs sudo firewall-cmd --permanent --add-service=mountd sudo firewall-cmd --permanent --add-service=rpc-bind sudo firewall-cmd --reload ``` 5. **验证NFS共享** 使用以下命令查看当前NFS共享的状态: ```bash sudo exportfs -v ``` #### NFS客户端配置指南 1. **安装NFS客户端工具** 在客户端上,同样需要安装NFS客户端工具: ```bash sudo yum install nfs-utils # CentOS/RHEL sudo apt-get install nfs-common # Debian/Ubuntu ``` 2. **挂载NFS共享目录** 创建一个本地挂载点,并将远程NFS共享目录挂载到该位置: ```bash sudo mkdir -p /mnt/nfs/oracle sudo mount 192.168.1.1:/nfs/oracle /mnt/nfs/oracle ``` 其中,`192.168.1.1`是NFS服务器的IP地址。 3. **验证挂载状态** 使用以下命令确认挂载是否成功: ```bash df -h | grep nfs ``` 4. **自动挂载(可选)** 为了在系统重启后自动挂载NFS共享目录,可以在`/etc/fstab`中添加一条记录: ``` 192.168.1.1:/nfs/oracle /mnt/nfs/oracle nfs defaults 0 0 ``` #### NFS安全性和性能优化建议 1. **增强安全性** - **结合Kerberos认证**:对于生产环境,建议使用Kerberos进行身份验证,以提高NFS的安全性。 - **限制访问范围**:在`/etc/exports`中明确指定允许访问的IP地址或子网,避免不必要的开放。 - **定期监控NFS性能**:使用工具如`nfsstat`、`iostat`等监控NFS的性能和负载情况。 2. **性能优化** - **调整NFS挂载选项**:例如使用`async`代替`sync`以提升写入性能,但需注意数据一致性风险。 - **优化网络配置**:确保NFS服务器与客户端之间的网络带宽充足且延迟低。 - **合理分配存储资源**:根据实际需求分配足够的存储空间,并定期清理无用文件。 #### 示例代码:NFS服务端配置脚本 ```bash # 安装NFS服务 sudo yum install nfs-utils -y # 创建共享目录 sudo mkdir -p /nfs/oracle # 配置/etc/exports文件 echo "/nfs/oracle 192.168.1.0/24(rw,sync,no_subtree_check)" | sudo tee -a /etc/exports # 启动并启用NFS服务 sudo systemctl start nfs-server sudo systemctl enable nfs-server # 配置防火墙规则 sudo firewall-cmd --permanent --add-service=nfs sudo firewall-cmd --permanent --add-service=mountd sudo firewall-cmd --permanent --add-service=rpc-bind sudo firewall-cmd --reload # 验证NFS共享状态 sudo exportfs -v ``` #### 示例代码:NFS客户端挂载脚本 ```bash # 安装NFS客户端工具 sudo yum install nfs-utils -y # 创建挂载点 sudo mkdir -p /mnt/nfs/oracle # 挂载NFS共享目录 sudo mount 192.168.1.1:/nfs/oracle /mnt/nfs/oracle # 验证挂载状态 df -h | grep nfs ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值