启动NFS SERVER之前,首先要启动RPC服务(CentOS5.8下为portmap服务,CentOS6.6下为rpcbind服务,下同),否则NFS SERVER就无法向RPC服务注册了。另外,如果RPC服务重新启动,原来已经注册好的NFS端口数据就会丢失,因此,此时RPC服务管理的NFS程序也需要重新启动以重新向RPC注册。要特别注意的是,一般修改NFS配置文件后,是不需要重启NFS的,直接在命令行执行 /etc/init.d/nfs reload 或 exportfs -rv 即可使修改的 /etc/exports 生效。
1. NFS服务端搭建
1.1. 安装NFS和rpc 【服务端、客户端都安装】
1 [root@backup ~]# rpm -qa nfs-utils rpcbind2 [root@backup ~]# yum install nfs-utils rpcbind -y #nfs需要的安装包3 [root@backup ~]# rpm -qa nfs-utils rpcbind4 nfs-utils-1.2.3-64.el6.x86_645 rpcbind-0.2.0-11.el6_7.x86_64
1.2. 查看用户信息
1 [root@nfs01 ~]# tail /etc/passwd 2 haldaemon:x:68:68:HAL daemon:/:/sbin/nologin 3 ntp:x:38:38::/etc/ntp:/sbin/nologin 4 saslauth:x:499:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin 5 postfix:x:89:89::/var/spool/postfix:/sbin/nologin 6 sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin 7 tcpdump:x:72:72::/:/sbin/nologin 8 oldboy:x:500:500::/home/oldboy:/bin/bash 9 rpc:x:32:32:Rpcbind Daemon:/var/cache/rpcbind:/sbin/nologin #yum安装rpc服务时创建的10 rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin #yum安装rpc服务时创建的11 nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin #yum安装nfs服务时创建的
1.3. 配置exports
1 [root@nfs01 ~]# mkdir /data 2 [root@nfs01 ~]# ll -d /data/ 3 drwxr-xr-x. 3 root root 4096 Apr 11 09:49 /data/ 4 [root@nfs01 ~]# chown -R nfsnobody.nfsnobody /data/ 5 [root@nfs01 ~]# ll -d /data/ 6 drwxr-xr-x. 3 nfsnobody nfsnobody 4096 Apr 11 09:49 /data/ 7 [root@nfs01 ~]# cat /etc/exports 8 # share /data for web created by zhangliang at 2016-05-21 9 /data 172.16.1.0/24(rw,sync)10 #172.16.1.0/24(rw,sync) 没有空格
1.4. 启动rpcbind服务
1 [root@nfs01 ~]# /etc/init.d/rpcbind start 2 [root@nfs01 ~]# netstat -anp | grep 'rpc' 3 tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1346/rpcbind 4 tcp 0 0 0.0.0.0:38420 0.0.0.0:* LISTEN 1368/rpc.statd 5 tcp 0 0 :::13894 :::* LISTEN 1368/rpc.statd 6 tcp 0 0 :::111 :::* LISTEN 1346/rpcbind 7 udp 0 0 0.0.0.0:673 0.0.0.0:* 1346/rpcbind 8 udp 0 0 127.0.0.1:703 0.0.0.0:* 1368/rpc.statd 9 udp 0 0 0.0.0.0:15306 0.0.0.0:* 1368/rpc.statd 10 udp 0 0 0.0.0.0:111 0.0.0.0:* 1346/rpcbind 11 udp 0 0 :::673 :::* 1346/rpcbind 12 udp 0 0 :::50537 :::* 1368/rpc.statd 13 udp 0 0 :::111 :::* 1346/rpcbind 14 unix 2 [ ACC ] STREAM LISTENING 10120 1346/rpcbind /var/run/rpcbind.sock15 unix 2 [ ] DGRAM 10207 1368/rpc.statd 16 [root@nfs01 ~]# rpcinfo -p localhost 17 program vers proto port service18 100000 4 tcp 111 portmapper19 100000 3 tcp 111 portmapper20 100000 2 tcp 111 portmapper21 100000 4 udp 111 portmapper22 100000 3 udp 111 portmapper23 100000 2 udp 111 portmapper24 100024 1 udp 15306 status25 100024 1 tcp 38420 status26 #### 由上可知,暂时只有自己的端口服务,没有其他的
1.5. 启动NFS
1 [root@nfs01 ~]# /etc/init.d/nfs start 2 Starting NFS services: [ OK ] 3 Starting NFS quotas: [ OK ] 4 Starting NFS mountd: [ OK ] 5 Starting NFS daemon: [ OK ] 6 正在启动 RPC idmapd: [确定] 7 [root@nfs01 ~]# rpcinfo -p localhost 8 program vers proto port service 9 100000 4 tcp 111 portmapper10 100000 3 tcp 111 portmapper11 100000 2 tcp 111 portmapper12 100000 4 udp 111 portmapper13 100000 3 udp 111 portmapper14 100000 2 udp 111 portmapper15 100024 1 udp 15306 status16 100024 1 tcp 38420 status17 100011 1 udp 875 rquotad18 100011 2 udp 875 rquotad19 100011 1 tcp 875 rquotad20 100011 2 tcp 875 rquotad21 100005 1 udp 11473 mountd22 100005 1 tcp 62369 mountd23 100005 2 udp 17528 mountd24 100005 2 tcp 47308 mountd25 100005 3 udp 11312 mountd26 100005 3 tcp 51724 mountd27 100003 2 tcp 2049 nfs28 100003 3 tcp 2049 nfs29 100003 4 tcp 2049 nfs30 100227 2 tcp 2049 nfs_acl31 100227 3 tcp 2049 nfs_acl32 100003 2 udp 2049 nfs33 100003 3 udp 2049 nfs34 100003 4 udp 2049 nfs35 100227 2 udp 2049 nfs_acl36 100227 3 udp 2049 nfs_acl37 100021 1 udp 25181 nlockmgr38 100021 3 udp 25181 nlockmgr39 100021 4 udp 25181 nlockmgr40 100021 1 tcp 20093 nlockmgr41 100021 3 tcp 20093 nlockmgr42 100021 4 tcp 20093 nlockmgr
1.6. 加入开始自启动
1.6.1. 使用 /etc/rc.local
1 [root@nfs01 ~]# tail /etc/rc.local 2 # You can put your own initialization stuff in here if you don't 3 # want to do the full Sys V style init stuff. 4 5 touch /var/lock/subsys/local 6 7 8 # start rpc and nfs server 9 /etc/init.d/rpcbind start10 /etc/init.d/nfs start
1.6.2. 使用chkconfig
1 [root@nfs01 ~]# chkconfig rpcbind on 2 [root@nfs01 ~]# chkconfig nfs on 3 [root@nfs01 ~]# ls /etc/rc.d/rc3.d/* | grep -E 'rpc|nfs' 4 /etc/rc.d/rc3.d/K61nfs-rdma5 /etc/rc.d/rc3.d/K69rpcsvcgssd6 /etc/rc.d/rc3.d/S13rpcbind7 /etc/rc.d/rc3.d/S14nfslock8 /etc/rc.d/rc3.d/S19rpcgssd9 /etc/rc.d/rc3.d/S30nfs
查看rpc服务和NFS服务的开机启动顺序
1 [root@nfs01 ~]# head /etc/init.d/rpcbind 2 #! /bin/sh 3 # 4 # rpcbind Start/Stop RPCbind 5 # 6 # chkconfig: 2345 13 87 #运行级别 开机顺序 关机顺序【其中 2345 指的是 运行级别】 7 # description: The rpcbind utility is a server that converts RPC program \ 8 # numbers into universal addresses. It must be running on the \ 9 # host to be able to make RPC calls on a server on that machine.10 #11 # processname: rpcbind12 [root@nfs01 ~]# head /etc/init.d/nfs 13 #!/bin/sh14 #15 # nfs This shell script takes care of starting and stopping16 # the NFS services.17 #18 # chkconfig: - 30 6019 # description: NFS is a popular protocol for file sharing across networks.20 # This service provides NFS server functionality, which is \21 # configured via the /etc/exports file.22 # probe: true
1.7. 查看有哪些参数生效
1 [root@nfs01 ~]# cat /var/lib/nfs/etab 2 /data 172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,anonuid=65534,anongid=65534,sec=sys,rw,root_squash,no_all_squash)
1.8. 检查是否成功
1 [root@nfs01 ~]# showmount -e 172.16.1.31 2 Export list for 172.16.1.31:3 /data 172.16.1.0/24
2. NFS客户端配置
2.1. 开始rpcbind服务
1 [root@web01 ~]# /etc/init.d/rpcbind start 2 Starting rpcbind: [ OK ]
2.2. 检查共享信息
1 [root@web01 ~]# showmount -e 172.16.1.31 2 Export list for 172.16.1.31:3 /data 172.16.1.0/24
2.3. NFS挂载
1 [root@web01 ~]# mount -t nfs 172.16.1.31:/data /mnt
2.4. 查看挂载信息
1 [root@web01 ~]# df -h #有时可能会被卡主2 Filesystem Size Used Avail Use% Mounted on3 /dev/sda3 8.8G 1.5G 6.9G 18% /4 tmpfs 495M 0 495M 0% /dev/shm5 /dev/sda1 190M 40M 141M 23% /boot6 172.16.1.31:/data 8.8G 1.5G 6.9G 18% /mnt
或者
1 [root@web01 ~]# cat /proc/mounts # 优先使用,监控时使用该命令 2 rootfs / rootfs rw 0 0 3 proc /proc proc rw,relatime 0 0 4 sysfs /sys sysfs rw,relatime 0 0 5 devtmpfs /dev devtmpfs rw,relatime,size=490920k,nr_inodes=122730,mode=755 0 0 6 devpts /dev/pts devpts rw,relatime,gid=5,mode=620,ptmxmode=000 0 0 7 tmpfs /dev/shm tmpfs rw,relatime 0 0 8 /dev/sda3 / ext4 rw,relatime,barrier=1,data=ordered 0 0 9 /proc/bus/usb /proc/bus/usb usbfs rw,relatime 0 010 /dev/sda1 /boot ext4 rw,relatime,barrier=1,data=ordered 0 011 none /proc/sys/fs/binfmt_misc binfmt_misc rw,relatime 0 012 sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw,relatime 0 013 172.16.1.31:/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=172.16.1.8,minorversion=0,local_lock=none,addr=172.16.1.31 0 0
2.5. 测试
在客户端和服务端之间测试
1、客户端创建文件并且输入数据,在服务端是否可以查看
2、服务端创建文件并且输入数据,在客户端是否可以查看
3、在服务端删除客户端创建的文件
4、在客户端删除服务端创建的文件
2.6. 加入开机自启动
1 [root@web01 mnt]# tail -3 /etc/rc.local 2 3 # mount nfs4 mount -t nfs 172.16.1.31:/data /mnt