目录:
1什么是RPC(管理端口的服务)
2 NFS软件
3 NFS配置文件
因为NFS支持的功能相当多,而不同的功能都会使用不同的程序来启动,每启动一个功能就会启用一些端口来传输数据,因此,NFS的功能所对应的端口才无法固定,而是随机取用一些违背使用的端口来作为传输只用,其中centos5.x随机端口为小于1024的,而centos6.x随机端口都是较大的
RPC远程过程调用就是为了解决这个问题出现的,
NFS的RPC服务最主要的方能就是记录每个NFS功能所对应的端口号,并且在NFS客户端请求时将该端口和功能对应的信息传递给请求数据的NFS客户端,从而可以确保客户端可以连接到正确的NFS端口上去,达到实现传输交互数据的目的,类似于房屋中介的地位
RPC服务大网站必用
中小企业会选择nfs,大门户或门户除了MFS,GFS,fastfs,tfs等分布式文件系统。对于不会的东西,如果公司需要,
我会努力搞定
互联网中小型公司用NFS,互联网大公司用分布式文件系统。
学会nfs和一种分布式。传统公司会购买硬件共享设备,emc等
要部署NFS服务,需要安装下面的软件
yum install nfs-utils portmap rpcbind -y yum groupinstall "NFS file server" -y rpm -ivh nfs-utils-1.2.3-36.el6.x86_64.rpm # /etc/init.d/rpcbind stop 停止 rpcbind: [确定] # rpcinfo -p localhost rpcinfo: can't contact portmapper: RPC: Remote system error - Connection refused
/etc/exports 默认为空,添加一个
####shared /data for bbs by lsp at 20140901
/data 192.168.2.0/24(rw,sync)
sync把数据从buffer写入到磁盘
async写到buffer
ro,只读
cat /etc/exports
/etc/init.d/nfs reload 注意要用reload
showmount -e localhost 在本机做检查
# cat /var/lib/nfs/etab
/data 10.0.0.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,anonuid=827,anongid=827)
客户端showmount -e 192.168.2.33
telnet 192.168.2.33 111
系统权限是有两部分控制,一是共享权限,二是本地权限
默认nfs共享的目录,使用者是nfsnobody
nfs挂在要么在rc.local要么在fstab中
NFS服务端
1)打印系统版本号
cat /etc/redhat-release
uname -r 内核
uname -m 多少位
2)检查并安装
rpm -qa nfs-utils rpcbind
yum install nfs-utils rpcbind -y
rpm -qa nfs-utils rpcbind
3)启动NFS服务
/etc/init.d/rpcbind start
/etc/init.d/rpcbind status
rpcinfo -p 127.0.0.1 <==检查有没有房源
#服务器端启动房东,向rpcbind输送房源
/etc/init.d/nfs start 功能太多,端口多,因此需要rpcbind
/etc/init.d/nfs status
rpcinfo -p 127.0.0.1 <==检查有没有房源
3)配置共享目录 <==让用户知道有房源
# cat /etc/exports
#shared to bbs by lsp at 2014
/data 10.0.0.0/24(rw,sync,anonuid=827,anongid=827)
mkdir /data
touch /data/oldboy.txt
/etc/init.d/nfs reload (等同exportfs -rv) 平滑重启
showmount -e 127.0.0.1 还可以自己mount自己的共享目录
chkconfig nfs on
chkconfig rpcbind on
5)配置NFS客户端
/etc/init.d/rpcbind start chkconfig rpcbind on showmount -e 10.0.0.77 mount 10.0.0.77:/data /mnt
默认的nfs共享目录匿名访问的用户和组是nfsnobody,
测试服务端开启防火墙
测试服务端的rpcbind服务没启动
NFS启动的进程列表
# ps -ef |egrep "nfs|rpc" rpc 913 1 0 15:50 ? 00:00:00 rpcbind rpcuser 931 1 0 15:50 ? 00:00:00 rpc.statd root 970 2 0 15:50 ? 00:00:00 [rpciod/0] root 978 1 0 15:50 ? 00:00:00 rpc.rquotad root 982 1 0 15:50 ? 00:00:00 rpc.mountd root 988 2 0 15:50 ? 00:00:00 [nfsd4] root 989 2 0 15:50 ? 00:00:00 [nfsd4_callbacks] root 990 2 0 15:50 ? 00:00:00 [nfsd] root 991 2 0 15:50 ? 00:00:00 [nfsd] root 992 2 0 15:50 ? 00:00:00 [nfsd] root 993 2 0 15:50 ? 00:00:00 [nfsd] root 994 2 0 15:50 ? 00:00:00 [nfsd] root 995 2 0 15:50 ? 00:00:00 [nfsd] root 996 2 0 15:50 ? 00:00:00 [nfsd] root 997 2 0 15:50 ? 00:00:00 [nfsd] root 1018 1 0 15:50 ? 00:00:00 rpc.idmapd root 2918 1449 0 19:12 pts/0 00:00:00 egrep nfs|rpc
man rpc.rquotad # exportfs -o rw,sync 10.0.0.7:/tmp
man exportfs # cat /proc/mounts rootfs / rootfs rw 0 0 proc /proc proc rw,relatime 0 0 sysfs /sys sysfs rw,relatime 0 0 devtmpfs /dev devtmpfs rw,relatime,size=495972k,nr_inodes=123993,mode=755 0 0 devpts /dev/pts devpts rw,relatime,gid=5,mode=620,ptmxmode=000 0 0 tmpfs /dev/shm tmpfs rw,relatime 0 0 /dev/sda3 / ext4 rw,relatime,barrier=1,data=ordered 0 0 /proc/bus/usb /proc/bus/usb usbfs rw,relatime 0 0 /dev/sda1 /boot ext4 rw,relatime,barrier=1,data=ordered 0 0 none /proc/sys/fs/binfmt_misc binfmt_misc rw,relatime 0 0 sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw,relatime 0 0 10.0.0.77:/data/ /mnt nfs4 rw,relatime,vers=4,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=10.0.0.76,minorversion=0,local_lock=none,addr=10.0.0.77 0 0
exports配置文件格式 man exports
NFS共享目录 NFS客户端地址(参数1,参数2) NFS客户端地址(参数1,参数2)
生产场景:确保nfs权限对应的配置
注意加all_squash
在做nfs共享的时候要确保每台机器上都有uid相同的账号,给anonuid
使所有主机有修改文件的权限
生产集群共享存储配置:
# cat /etc/exports
######bbs resouce by oldboy at 201409
/data 10.0.0.0/24(rw,sync,all_squash)
要确保:默认的匿名用户配置anonuid=65534,anongid=65534,对应的UID,GID
在所有的服务器都是存在的。
配置:
/data 10.0.0.0/24(rw,sync,all_squash,anonuid=999,anongid=999)
所有机器:useradd -u 999 nfsshared
门户网站100%用到异步,类似于exports中的async
异步的软件实现,(消息中间件,消息队列)
(4)文件挂在的东西
mount -o rw,remount /