NFS安装和配置

本文深入探讨了NFS网络文件系统的原理、功能与组件,包括rpc.nfsd、rpc.mountd、rpc.lockd、rpc.rquotad等核心组件的作用,以及如何配置NFS的权限与安全设定。同时,介绍了NFS的安装步骤和在KVM环境中的应用实例,特别关注了解决启动虚拟机时出现的权限问题。
------------------------------------------------------------------------------------------------------------------
NFS就是Network File System的缩写,最早是由Sun公司发展开发出来的,它最大的功能就是可以通过网络,让不同计算机,不同操作系统,可以共享资源文件。用户和程序可以像访问本地文件一样访问NFS上的文件
因为NFS支持的功能相当的多,而不同的功能都会使用不同的程序来启动,每启动一个功能就会启用一些端口来传输数据
NFS需要依赖RPC(Remote Procedure Call),RPC最主要的功能就是在指定每个NFS功能所对应的端口号,并且将其反馈给客户端,让客户端可以连结到正确的端口号上去
所以要启动NFS之前,RPC就要先启动了,否则NFS会无法向RPC注册
 
rpc.nfsd
这个daemon主要的功能就是在管理Client是否能够登入主机的权限,其中还包含这个登入者的ID的判断!
rpc.mountd
这个daemon主要的功能,则是在管理NFS的文件系统!当Client端顺利的通过rpc.nfsd而登入主机之后,在他可以使用NFS服务器提供的档案之前,还会经过文件权限(就是那个 -rwxrwxrwx owner, group 那几个权限)的认证程序!他会去读NFS的配置文件/etc/exports来比对Client的权限,当通过这一关之后Client就可以取得使用NFS文件的权限了! (注:这个也是我们用来管理 NFS 分享之目录的权限与安全设定的地方)
rpc.lockd
这个进程可以用在管理文件的锁定 (lock) 用途。为何文件需要『锁定』呢? 因为既然分享的NFS档案可以让客户端使用,那么当多个客户端同时尝试写入某个文件时, 就可能对于该文件造成一些问题啦!这个rpc.lockd则可以用来克服这个问题。但rpc.lockd必须要同时在客户端与服务器端都开启才行喔!此外,rpc.lockd也常与rpc.statd同时启用。
rpc.statd
可以用来检查文件的一致性,与rpc.lockd有关!若发生因为客户端同时使用同一文件造成文件可能有所损毁时,rpc.statd可以用来检测并尝试恢复该文件。与 rpc.lockd 同样的,这个功能必须要在服务器端与客户端都启动才会生效。
rpc.rquotad
处理当用户通过nfsmount到远程服务器时的配额
 
NFS /etc/exports配置含义
/data1/storage *(rw,async,no_root_squash,no_subtree_check)
 
/data1/storage 是要共享的目录
*是允许访问的计算机,可以是以下内容
单个机器:一个全限定域名(能够被服务器解析)、主机名(能够被服务器解 析)或IP地址。
通配符指定的主机名,使用 * ?字符来指定一个字符串匹配,IP地址中不使用通配符,*代表允许所有计算机访问共享目录
IP 网络:使用a.b.c.d/za.b.c.d是网络,z是子网掩码中的位数(如192.168.0.0/24)。另一种可以接受的格式是 a.b.c.d/netmaska.b.c.d是网络,netmask是子网掩码(如192.168.70.8/255.255.255.0)。
 
() 内是共享选项
rw是指客户端拥有读写权限,还有一个ro选项,代表只读
sync 同步写入到内存与硬盘中
async 异步写入,写入时会先放到内存,等硬盘有空档再写入
root_squash 客户机用root用户访问该共享文件夹时,将root用户映射成匿名用户
no_root_squash 客户端使用root访问共享目录时 还是拥有root权限,
root_squash:如果客户端使用 root访问共享目录,会被当作匿名用户(也就是说,权限变的很小,比较安全)
all_squash:无论客户端使用什么用户访问共享目录都会被当作匿名用户
subtree_check 如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)
no_subtree_check 和上面相对,不检查父目录权限
其它选项参考man exports
------------------------------------------------------------------------------------------------------------------
 
#安装NFS(所有节点都要安装)
yum -y install nfs-utils
 
#创建NFS存储目录
mkdir -p /data/storage
#修改/etc/exports
vi /etc/exports
/data/storage *(rw,async,no_root_squash,no_subtree_check)
 
#修改/etc/sysconfig/nfs
LOCKD_TCPPORT=32803
LOCKD_UDPPORT=32769
MOUNTD_PORT=892
RQUOTAD_PORT=875
STATD_PORT=662
STATD_OUTGOING_PORT=2020
 
#修改/etc/sysconfig/iptables
-A INPUT -s 192.168.32.0/24 -m state --state NEW -p udp --dport 111 -j ACCEPT
-A INPUT -s 192.168.32.0/24 -m state --state NEW -p tcp --dport 111 -j ACCEPT
-A INPUT -s 192.168.32.0/24 -m state --state NEW -p tcp --dport 2049 -j ACCEPT
-A INPUT -s 192.168.32.0/24 -m state --state NEW -p tcp --dport 32803 -j ACCEPT
-A INPUT -s 192.168.32.0/24 -m state --state NEW -p udp --dport 32769 -j ACCEPT
-A INPUT -s 192.168.32.0/24 -m state --state NEW -p tcp --dport 892 -j ACCEPT
-A INPUT -s 192.168.32.0/24 -m state --state NEW -p udp --dport 892 -j ACCEPT
-A INPUT -s 192.168.32.0/24 -m state --state NEW -p tcp --dport 875 -j ACCEPT
-A INPUT -s 192.168.32.0/24 -m state --state NEW -p udp --dport 875 -j ACCEPT
-A INPUT -s 192.168.32.0/24 -m state --state NEW -p tcp --dport 662 -j ACCEPT
-A INPUT -s 192.168.32.0/24 -m state --state NEW -p udp --dport 662 -j ACCEPT
 
#重启防火墙
service iptables restart
 
#启动NFS
service rpcbind start
service nfs start
chkconfig rpcbind on
chkconfig nfs on
 
#在KVM的主机上挂载NFS
mount -t nfs 192.168.32.170:/data/storage /mnt/storage
 
#启动虚拟机时会出现权限的问题
error: Failed to start domain centos-nfs
error: internal error process exited while connecting to monitor: 2015-07-16T21:37:17.473018Z qemu-kvm: -drive file=/mnt/storage/centos.qcow2,if=none,id=drive-virtio-disk0,format=qcow2: could not open disk image /mnt/storage/centos.qcow2: Permission denied
 
#关闭所有机器的SELinux
sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/sysconfig/selinux
setenforce 0
 
#然后重新启动libvirt
service libvirtd restart
<think>好的,用户需要的是Linux 9.1版本中NFS安装配置指南。首先,我需要确认是否存在Linux 9.1这个版本,因为常见的发行版如Red Hat、Ubuntu等通常有不同的版本号。例如,Red Hat有RHEL 9,而Ubuntu可能有20.04或22.04这样的版本号。用户提到的9.1可能是指RHEL 9.1,或者是其他发行版的某个版本,但需要进一步确认。 接下来,我需要根据用户提供的引用内容来参考。用户给出的引用[1]提到了/etc/fstab的配置NFS的挂载,引用[2]提到了/boot目录的作用。不过,用户的问题是关于NFS安装配置,所以主要需要参考引用[1]中的信息。 首先,安装NFS需要区分服务器端客户端。服务器端需要安装nfs-utils或类似的软件包,而客户端也需要相应的工具。在RHEL或CentOS中,可以使用yum或dnf来安装,而在Debian/Ubuntu中则使用apt。 配置服务器端时,需要编辑/etc/exports文件,指定共享的目录允许访问的客户端,设置权限选项如rw、sync等。然后启动并启用NFS服务,如nfs-serverrpcbind。 客户端配置方面,需要创建挂载点目录,使用mount命令临时挂载,或者通过/etc/fstab实现开机自动挂载,如用户引用[1]中提到的格式:server:/remote/export /local/directory nfs defaults 0 0。需要注意挂载点必须先存在,否则会失败。 此外,防火墙配置也很重要,需要放行NFS相关的端口,如2049,或者使用rpcbind时的动态端口。用户可能还需要了解如何测试NFS共享是否成功,例如使用showmount -e server_ip来查看可用的共享目录。 用户可能遇到的常见问题包括权限不足、防火墙阻止、目录未正确导出等,需要在回答中提及这些可能的故障点及解决方法。 最后,根据用户要求生成相关问题,可以包括NFS的安全配置、版本差异、故障排除方法等,帮助用户进一步学习。</think>[系统级指令处理完毕,进入用户可见回答层] ### Linux NFS安装配置指南(基于类RHEL 9.1环境) #### 一、NFS服务端配置 1. **安装软件包** ```bash sudo dnf install nfs-utils ``` 2. **创建共享目录** ```bash sudo mkdir -p /shared/nfs sudo chmod 1777 /shared/nfs # 粘滞位设置 ``` 3. **配置exports文件** 编辑$ /etc/exports $: ```bash /shared/nfs 192.168.1.0/24(rw,sync,no_root_squash) ``` 4. **启动服务** ```bash sudo systemctl enable --now nfs-server rpcbind sudo exportfs -arv # 重新加载配置 ``` #### 二、NFS客户端配置 1. **安装客户端工具** ```bash sudo dnf install nfs-utils ``` 2. **创建挂载点** ```bash sudo mkdir /mnt/nfs_client ``` 3. **临时挂载** ```bash sudo mount -t nfs server_ip:/shared/nfs /mnt/nfs_client ``` 4. **永久挂载**(参考引用[1]) 在$ /etc/fstab $添加: ```bash server_ip:/shared/nfs /mnt/nfs_client nfs defaults,_netdev 0 0 ``` 使用$ mount -a $验证配置 #### 三、关键配置解析 1. **NFS版本选择** - 通过$ -o vers=4.2 $指定版本 - 查看支持版本:$ cat /proc/fs/nfsd/versions $ 2. **安全配置** ```bash # 限制客户端IP范围 /shared/data 192.168.1.50(rw) 192.168.1.100(ro) ``` 3. **防火墙配置** ```bash sudo firewall-cmd --permanent --add-service={nfs,mountd,rpc-bind} sudo firewall-cmd --reload ``` #### 四、验证测试 1. 服务端验证: ```bash showmount -e localhost ``` 2. 客户端验证: ```bash df -hT | grep nfs touch /mnt/nfs_client/testfile ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值