nfs 配置
来源:互联网 发布:python 驼峰命名 编辑:程序博客网 时间:2024/04/26 18:39
Linux 搭建NFS服务器
NFS介绍
NFS是分布式计算机系统的一个组成部分, 可实现在异构网络上共享和装配远程文件系统。NFS由SUN公司开发,目前已经成为文件服务的一种标准(RFC1904,RFC1813)。其最大功能是可以通过网络让不同操作系统的计算机可以共享数据,所以也可以将其看做是一台文件服务器
NFS的工作原理
启动NFS文件服务器时,/etc/rc.local会自动启动exportfs程序,指定可以导出的文件或目录,而所能挂载的也只能是其所指定的目录。
NFS是基于XDR/RPC协议的。XDR(eXternalData Representation,即外部数据表示法)提供一种方法,把数据从一种格式转换成另一种标准数据格式表示法,确保在不同的计算机、操作系统及程序语言中,所有数据代表的意义都是相同的。
RPC(RemoteProcedure Call,远程程序调用)请求远程计算机给予服务。客户机通过网络传送RPC到远程计算机,请求服务。
NFS运用RPC传送数据的方法有以下几步:
(1)客户送出信息,请求服务。
(2)客户占位程序把客户送出的参数转换成XDR标准格式,并用系统调用把信息送到网络上。
(3)信息经过网络送达远程主机系统。
(4)远程主机将接受到的信息传给服务器占位程序。
(5)把XDR形式的数据,转换成符合主机端的格式,取出客户发出的服务请求参数,送给服务器。
(6)服务器给客户发送服务的逆向传送过程。
NFS安装
安装NFS包
NFS需要5个RPM,分别是:
setup-*:共享NFS目录在/etc/exports中定义
initscripts-*:包括引导过程中装载网络目录的基本脚本
nfs-utils-*:包括基本的NFS命令与监控程序
portmap-*:支持安全NFSRPC服务的连接
quota-*:网络上共享的目录配额,包括rpc.rquotad(这个包不是必须的)
基本监控程序
要顺利运行NFS,至少需要五个Linux服务,它们各有不同的功能,有的负责装载服务,有的保证远程命令指向正确的位置。这些服务通过/etc/rc.d/init.d目录中的nfs,nfslock和portmap脚本启动。下面简单介绍每个监控程序:
(1) 基本NFS
rpc.nfsd是NFS服务器监控程序,它通过/etc/rc.d/init.d目录中的nfs脚本启动。NFS监控程序还启动rpc.mountd装载监控程序,并导出共享目录。
(2) RPC装载
可以用mount命令连接本地目录或网络目录,但还需要一个装载NFS目录的特殊监控程序rpc.mountd
(3) 端口映射器
portmap监控程序只是定向RPC通信数据流,但它对于NFS服务很重要。如果不运行portmap,则NFS客户机无法找到从NFS服务器共享的目录。
(4) 重新启动与statd
当NFS服务需要中断或者重新启动时,rpc.statd监控程序和rpc.lockd在服务器重新启动之后使客户机恢复NFS连接。
(5) 锁定
通过共享NFS目录打开文件时,锁定可以使用户不能覆盖同一个文件。锁定通过nfslock脚本并使用rpc.lockd监控程序启动运行。
配置NFS
以下以本人使用环境为例:
共两台Linux主机,A机版本为rhel5.5,B机版本为rhel5.5。网络连接,地址解析正常。系统相关配置如下:
A机
1.主机名:rhel1
2.iptables版本:1.3.5
3.网卡eth0,IP地址为192.168.13.101/24
4.作为NFS服务器
B机
1.主机名:rhel2
2.iptables版本:1.3.5
3.网卡eth0,IP地址静态配置为192.168.13.102/24
4.网卡eth1,IP地址静态配置为192.168.10.200/24
5.路由器
C机
1.主机名:rhel3
2.iptables版本:1.3.5
3.网卡eth1,IP地址根据实验需求切换相应网段
需求:
1、/media 目录
共享/media 目录,允许所有客户端访问该目录并只有只读权限。
2、/nfs/public 目录
共享/nfs/public 目录,允许192.168.13.0/24 和192.168.10.0/24 网段的客户端访问,并且对此目录只有只读权限。
3、/nfs/works 目录
共享/nfs/works 目录,192.168.13.0/24 网段的客户端具有只读权限,并且将root 用户映射成匿名用户。
4、/nfs/test 目录
共享/nfs/test 目录,所有人都具有读写权限,但当用户使用该共享目录时都将帐号映射成匿名用户,并且指定匿名用户的UID 和GID 都为65534。
5、/nfs/security 目录
共享/nfs/security 目录,仅允许192.168.13.102 客户端访问并具有读写权限。
解决方案
1、建立相应目录;
2、在NFS服务器上编辑/etc/exports;
在A机上通过vi/etc/exports,将共享的NFS目录在/etc/exports中列出,这个文件控制对目录的共享。书写规则是:(每个共享规则一行)。
共享目录主机(参数)
任何共享目录都要指定sync或async,默认是sync模式。也就是指定文件写入磁盘之前共享NFS目录是否响应命令。
下面是一些NFS共享的常用参数:
ro只读访问
rw读写访问
sync所有数据在请求时写入共享
asyncNFS在写入数据前可以相应请求
secureNFS通过1024以下的安全TCP/IP端口发送
insecureNFS通过1024以上的端口发送
wdelay如果多个用户要写入NFS目录,则归组写入(默认)
no_wdelay如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。
hide在NFS共享目录中不共享其子目录
no_hide共享NFS目录的子目录
subtree_check如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)
no_subtree_check和上面相对,不检查父目录权限
all_squash共享文件的UID和GID映射匿名用户anonymous,适合公用目录。
no_all_squash保留共享文件的UID和GID(默认)
root_squashroot用户的所有请求映射成如anonymous用户一样的权限(默认)
no_root_squasroot用户具有根目录的完全管理访问权限
anonuid=xxx指定NFS服务器/etc/passwd文件中匿名用户的UID
anongid=xxx指定NFS服务器/etc/passwd文件中匿名用户的GID
注:
使用exportfs命令当/etc/exports内容发生改变时,挂载、卸载或更新共享目录列表。
使用showmount命令可以查看本机或远程共享目录列表。
配置完/etc/exportfs配置文件后,需要查看系统的iptables、/etc/hosts.allow、/etc/hosts.deny是否设置了正确的NFS访问规则。
3、配置TCP WRAPPER;
编辑A机上的/etc/hosts.allow,添加如下内容:
portmap:120.196.245.0/24
portmap:192.168.13.0/24
编辑A机上的/etc/hosts.deny,添加如下内容:
portmap:ALL
4、设置nfs相关服务使用固定端口;
由于在设置了防火墙的环境中使用NFS,需要在防火墙上打开如下端口:
1.portmap端口111udp/tcp;
2.nfsd端口2049udp/tcp;
3.mountd端口"xxx"udp/tcp
系统RPC服务在nfs服务启动时默认会为mountd动态选取一个随机端口(32768--65535)
另外,nfs中需要通讯的服务还有rpc.lockd和rpc.statd
通过编辑A机上#vi/etc/sysconfig/nfs,找到以下几项并按如下值进行修改;
MOUNTD_PORT="4002"
STATD_PORT="4003"
LOCKD_TCPPORT="4004"
LOCKD_UDPPORT="4004"
设置mountd,statd,lockd为固定端口
5、开启防火墙相应放行策略;
A机上的iptables设置如下;
基本规则:
iptables -P INPUT DROP
iptables -A INPUT -m state --state ESTAHLISHED,RELATED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
portmap服务相关规则:
iptables -A INPUT -p tcp --dport 111 -m state --state NEW -j ACCEPT
iptables -A INPUT -p udp --dport 111 -m state --state NEW -j ACCEPT
NFS服务相关规则:
iptables -A INPUT -p TCP --dport 2049 -m state --state NEW -j ACCEPT
iptables -A INPUT -p UDP --dport 2049 -m state --state NEW -j ACCEPT
iptables -A INPUT -p TCP --dport 4002:4004 -m state --state NEW -j ACCEPT
iptables -A INPUT -p UDP --dport 4004 -m state --state NEW -j ACCEPT
/etc/init.d/iptables save
启动NFS
1、在A机上启动NFS和RPC服务
/etc/init.d/portmap start
/etc/init.d/nfs start
2、检查NFS的运行级别:
chkconfig—list portmap
chkconfig—list nfs
3、根据需要设置在相应的运行级别自动启动NFS:
chkconfig--level235 portmap on
chkconfig--level235 nfs on
结果测试
NFS 服务器本机测试(A)
1、使用rpcinfo 命令检测nfs 是否使用了固定端口
rpcinfo -p
2、检测nfs 的rpc 注册状态
rpcinfo -u 主机名或IP 地址 进程
rpcinfo-u 192.168.13.101 nfs
rpcinfo-u 192.168.13.101 mount
3、查看共享目录和参数设置
cat/var/lib/nfs/etab
4、使用showmount 命令查看共享目录发布及使用情况
showmount -e 或showmount-e IP 地址
showmount -d 或者showmount-d IP 地址
Linux 客户端测试(C)
1、查看nfs 服务器共享目录
showmount-e 192.168.13.101
2、挂载及卸载NFS 文件系统
mount-t nfs NFS 服务器IP 地址或主机名:共享名本地挂载点
1) 192.168.10.0/24这个网段的主机对media和public有只读权限,对test有读写权限,但会映射uid和gid变成65534。
media和public提示只读
root用户挂载test后,新建的bb文件,用户属主和属组都是65534,即匿名用户nfsnobody,实际应用用户映射改变uid和gid时,不会映射到65534,这里仅为方便实验而已,一般是映射为其他普通用户,因为all_squash,anonuid=65534,anongid=65534等效于root_squash
2) 192.168.13.0/24对media、public、test情况与192.168.10.0/24类似,这几个步骤忽略。对于work目录会将root用户映射为匿名用户,所以只测试work目录,使用work挂载点时,会自动将root映射为匿名用户。
新建文件aaa时,自动映射为nfsnobody用户
3) 仅192.168.13.102访问security,并具有读写权限。
3、启动自动挂载nfs 文件系统
vim/etc/fstab
仅添加一项示例,修改/etc/fstab,添加如下语句,并保存重启即可实现自动挂载。
温馨提示:整个实验过程,请确保目录权限已配置正确,防火墙已开放相应访问策略,如/nfs/test对所有人都有读写权限,但如果test目录并没有配置o+rw文件权限时,即使nfs服务允许读写也是没有任何作用的。
- NFS配置
- NFS配置
- NFS配置
- NFS配置
- NFS配置
- nfs配置
- NFS 配置
- 配置NFS
- 配置NFS
- nfs 配置
- nfs 配置
- NFS配置
- nfs 配置
- nfs配置
- 配置NFS
- NFS 配置
- NFS配置
- NFS配置
- linux几个常用命令
- 3D场景的制作步骤
- 键值key排序
- linux命令速查手册
- jquery的各种取值方法。留着自己用
- nfs 配置
- Windows Phone7的新版本
- 说的话
- Delphi 多线程简单应用
- Spring事务--案例项目结构描述
- sql网络配置--不能方问1433的解决办法
- 动态产生虚拟路径工具类
- kingcms5.0/5.1漏洞
- Extjs按钮字体大小的调整