linux集群搭建之nfs服务的搭建

第1章 NFS简介

1.1 什么是NFS
NFS是Network File System的缩写,中文称为网络文件系统,它的主要功能是通过网络(一个局域网)让不同的主机系统之间可以共享文件或目录,NFS的客户端(一般为应用服务器,例如web)可以通过挂载(mount)的方式将NFS服务器共享的数据目录挂载到NFS客户端本地系统中(就是某一个关在点下),从客户端本地看,NFS服务器端共享目录就好像是客户端自己的磁盘分区或者目录一样,而实际上却是远端的NFS服务器的目录。
NFS网络文件系统很像Windows系统的网络共享、安全功能、网络驱动器映射,这也和linux的samba服务类似,只不过一般情况下,Windows网络共享服务或samba服务用户办公局域网共享,而互联网中小型网站集群架构后端常用NFS进行数据共享,若是大型网站,那么有可能还会用到更复杂的分布式文件系统Moosefs(mfs)、GlusterFS。
1.2 NFS历史介绍
第一个网络文件系统被称为File Access Listener,由DEC在1976年开发。
NFS是第一个构建在IP协议之上的现代网络文件系统,在20世纪80年代,首先作为实验文件系统,由Sun Microsystems在内部开发完成,NFS协议归属与RFC标准,在随后演化为NFSv2,作为一个标准,由于NFS与其他客户端和服务器的互操作能力很好而发展迅速。
1.3 NFS发展时间表

1.4 NFS企业在企业中的应用场景
在企业集群架构的工作场景中,NFS网络文件系统一般被用来存储共享视频、图片、附件等静态资源文件,通常网站用户上传的文件都会放到NFS共享中,例如BBS产品的图片、附件、头像(网站BBS的程序不要放在NFS共享中),然后前端所有节点在访问这些静态资源时都会读取NFS存储上的资源。
NFS是当前互联网系统架构中最常用的数据存储服务之一,特别是中小型网站应用频率更高。
1.5 NFS工作流程图


1.6 NFS原理图

注意:NFS的rpc服务,在Centos5系列下名称为portmap,在Centos6系列下名称为rpcbind

第2章 NFS服务的搭建

2.1 部署服务器前的准备

操作系统 服务器角色 IP地址
CentOS release 6.9 x86_64 NFS服务端(nfs-server) 内网:172.16.1.31/24 外网:10.0.0.31/24
CentOS release 6.9 x86_64 NFS客户端(nfs-client1) 内网:172.16.1.41/24 外网:10.0.0.41/24
CentOS release 6.9 x86_64 NFS客户端(nfs-client2) 内网:172.16.1.8/24 外网:10.0.0.8/24

2.2 NFS服务端的配置
2.2.1 检查操作系统的环境
[[email protected] ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)
[[email protected] ~]# uname -r
2.6.32-696.el6.x86_64
[[email protected] ~]# uname -m
x86_64
2.2.2 NFS服务端需要安装的软件包
nfs-utils:nfs服务的主程序,包括rpc.nfsd、rpc.mountd两个daemons和相关的文档说明及执行命令文件等
rpcbind:centos6下面的rpc主程序(centos5下的是portmap)
2.2.3 安装相应的软件包及检查
安装:
[[email protected] ~]# yum install nfs-utils rpcbind -y
检查:
[[email protected] ~]# rpm -qa nfs-utils rpcbind
rpcbind-0.2.0-13.el6_9.1.x86_64
nfs-utils-1.2.3-75.el6_9.x86_64
注意:在安装完该软件包后会自动创建nfsnobody用户
[[email protected] ~]# id nfsnobody
uid=65534(nfsnobody) gid=65534(nfsnobody) groups=65534(nfsnobody)
2.2.4 启动NFS相关的服务
2.2.4.1 启动rpcbind服务并进行检查
启动:
[[email protected] ~]# /etc/init.d/rpcbind start
Starting rpcbind: [ OK ]
检查:
[[email protected] ~]# /etc/init.d/rpcbind status
rpcbind (pid 2309) is running...
查看rpc的端口:
[[email protected] ~]# netstat -tnulp|grep rpc 端口为111
tcp 0 0 0.0.0.0:111 0.0.0.0: LISTEN 2309/rpcbind
tcp 0 0 0.0.0.0:35957 0.0.0.0:
LISTEN 1221/rpc.statd
tcp 0 0 :::14282 ::: LISTEN 1221/rpc.statd
tcp 0 0 :::111 :::
LISTEN 2309/rpcbind
udp 0 0 0.0.0.0:49347 0.0.0.0: 1221/rpc.statd
udp 0 0 127.0.0.1:973 0.0.0.0:
1221/rpc.statd
udp 0 0 0.0.0.0:111 0.0.0.0: 2309/rpcbind
udp 0 0 0.0.0.0:788 0.0.0.0:
2309/rpcbind
udp 0 0 :::111 ::: 2309/rpcbind
udp 0 0 :::10354 :::
1221/rpc.statd
udp 0 0 :::788 :::* 2309/rpcbind
查看端口映射情况:
[[email protected] ~]# rpcinfo -p localhost
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
注意:在未启动nfs服务时,不能看到nfs端口的映射情况
2.2.4.2 启动nfs服务并进行检查
启动:
[[email protected] ~]# /etc/init.d/nfs start
Starting NFS services: [ OK ]
Starting NFS quotas: [ OK ]
Starting NFS mountd: [ OK ]
Starting NFS daemon: [ OK ]
Starting RPC idmapd: [ OK ]
检查:
[[email protected] ~]# /etc/init.d/nfs status
rpc.svcgssd is stopped
rpc.mountd (pid 2432) is running...
nfsd (pid 2448 2447 2446 2445 2444 2443 2442 2441) is running...
rpc.rquotad (pid 2427) is running...
查看端口映射情况:
[[email protected] ~]# rpcinfo -p localhost
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100011 1 udp 875 rquotad
100011 2 udp 875 rquotad
100011 1 tcp 875 rquotad
100011 2 tcp 875 rquotad
100005 1 udp 28839 mountd
100005 1 tcp 34541 mountd
100005 2 udp 12297 mountd
100005 2 tcp 38042 mountd
100005 3 udp 54557 mountd
100005 3 tcp 11471 mountd
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 2 tcp 2049 nfs_acl
100227 3 tcp 2049 nfs_acl
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100227 2 udp 2049 nfs_acl
100227 3 udp 2049 nfs_acl
100021 1 udp 9683 nlockmgr
100021 3 udp 9683 nlockmgr
100021 4 udp 9683 nlockmgr
100021 1 tcp 4166 nlockmgr
100021 3 tcp 4166 nlockmgr
100021 4 tcp 4166 nlockmgr
注意:此时有了端口映射
? 【特别注意】必须先启动rpcbind服务之后,才能启动nfs服务
原因:nfs可以视为一个rpc程序,在启动任何一个rpc程序之前,需要做好端口和功能的映射工作,这个映射工作就是由rpcbind服务来完成的,因此在提供nfs服务之前,必须要先启动rpcbind服务
2.2.4.3 检查nfs和rpc进程
[[email protected] ~]# ps -ef |grep nfs
root 2900 2 0 19:05 ? 00:00:00 [nfsiod]
root 3133 2 0 19:40 ? 00:00:00 [nfsd4]
root 3134 2 0 19:40 ? 00:00:00 [nfsd4_callbacks]
root 3135 2 0 19:40 ? 00:00:00 [nfsd]
root 3136 2 0 19:40 ? 00:00:00 [nfsd]
root 3137 2 0 19:40 ? 00:00:00 [nfsd]
root 3138 2 0 19:40 ? 00:00:00 [nfsd]
root 3139 2 0 19:40 ? 00:00:00 [nfsd]
root 3140 2 0 19:40 ? 00:00:00 [nfsd]
root 3141 2 0 19:40 ? 00:00:00 [nfsd]
root 3142 2 0 19:40 ? 00:00:00 [nfsd]
root 3221 2130 0 19:41 pts/0 00:00:00 grep nfs
[[email protected] ~]# ps -ef |grep rpc
rpcuser 1221 1 0 10:37 ? 00:00:00 rpc.statd
root 1270 2 0 10:37 ? 00:00:00 [rpciod/0]
rpc 2309 1 0 14:27 ? 00:00:00 rpcbind
root 3121 1 0 19:40 ? 00:00:00 rpc.rquotad
root 3126 1 0 19:40 ? 00:00:00 rpc.mountd
root 3173 1 0 19:40 ? 00:00:00 rpc.idmapd
root 3223 2130 0 19:42 pts/0 00:00:00 grep rpc
2.2.5 将相关的服务添加到开机自启动中
【方法1】
将nfs服务加入并检查:
[[email protected] ~]# chkconfig nfs on
[[email protected] ~]# chkconfig --list nfs
nfs 0:off 1:off 2:on 3:on 4:on 5:on 6:off
将rpcbind服务加入并检查:
[[email protected] ~]# chkconfig rpcbind on
[[email protected] ~]# chkconfig --list rpcbind
rpcbind 0:off 1:off 2:on 3:on 4:on 5:on 6:off
【方法2】
加入:
[[email protected] ~]# echo "/etc/init.d/rpcbind start" >>/etc/rc.local
[[email protected] ~]# echo "/etc/init.d/nfs start" >>/etc/rc.local
查看:
[[email protected] ~]# tail -2 /etc/rc.local
/etc/init.d/rpcbind start
/etc/init.d/nfs start
【注意】
在实际的生产环境中用方法2而不用方法1,因为可以方便运维人员的管理
2.2.6 配置nfs服务的配置文件/etc/exports

默认情况下该配置文件是空的:
[[email protected] ~]# ll -h /etc/exports
-rw-r--r--. 1 root root 0 Jan 12 2010 /etc/exports
编辑该配置文件:
[[email protected] ~]# vim /etc/exports
查看:
[[email protected] ~]# cat /etc/exports
#share /data by oldboy for bingbing at 2018-3-12
/data 172.16.1.0/24(rw,sync)
【注意】
? 该配置文件默认是存在,只不过是空文件而已,在172.16.1.0/24(rw,sync)中24和(之间不能有空格
? 查看NFS服务器配置的参数(包含默认的参数)的文件/var/lib/nfs/etab

2.2.6.1 nfs配置文件的格式
NFS共享的目录 NFS客户端地址(参1,参2,……) NFS客户端地址2(参1,参2,……)或者
NFS共享的目录 NFS客户端地址(参1,参2,……)
上述各列参数的含义:

? NFS共享的目录:为NFS服务端要共享的实际目录,要用绝对路径如(/data)。注意共享目录的本地权限,如果需要读写共享,一定要让本地目录可以被NFS客户端的用户(nfsnobody)读写。/etc/exports配置文件格式书写详细如下表

常用格式说明 实例
配置案例1 /data 172.16.1.0/24(rw,sync) 允许客户端读写,并且数据同步写到服务器的磁盘里
配置案例2 /data 172.16.1.0/24(rw,sync,all_squash,anonuid=888,anongid=888) 允许客户端读写,并且数据同步写到服务器的磁盘里,并且指定客户端的uid和gid,早期生产环境中的一种配置,适合多客户端共享一个NFS单目录,如果所有服务器的nfsnodoby账户的UID相同,则本案例就没什么意义了
配置案例3 /data 172.16.1.0/24(ro) 只读共享,用途:例如在生产环境中开发人员有查看服务器日志的需求,但是又不希望给开发服务器的权限,那么就可以给开发提供从某个测试服务器NFS客户端上查看某个生产服务器日志目录(NFS共享目录)的权限,但是,这不是唯一的方法喲

? NFS 客户端地址:为NFS服务端授权的可访问共享目录的NFS客户端地址,可以为单独的IP地址或主机名、域名等,也可以为整个网段的地址,还可以用”*”来匹配所有的客户端服务器,这里所谓的客户端一般为前端的业务服务器,例如web服务。详细说明如下表

客户端地址 具体地址 说明
授权单一客户端访问NFS 172.16.1.41 一般情况下,生产环境中此配置不多
授权整个网段访问NFS 172.16.1.0/24 指定网段为生产环境中最常见的配置,配置简单、维护方便
授权整个网段可访问NFS 172.0.0.* 指定网段的另外写法(不推荐使用)
授权某个域名客户端访问 nfs.lzhnb.com 生产环境中一般不使用
授权整个域名客户端访问 *.lzhnb.com 生产环境中一般不使用

? NFS配置参数权限,具体如下表

参数名称 参数用途
rw(熟记) 表示可读写权限
sync(熟记) 请求或写入数据时,数据同步写入到NFS Server的硬盘后才返回,优点:数据安全不会丢,缺点:性能比不启用该参数要差
async(熟记) 写入数据时会先写到内存缓冲区,直到硬盘有空档才会在写入磁盘,这样可以提升写入效率。风险是若服务器宕机或不正常关机,会损失缓冲区中未写入硬盘的数据(解决办法:服务器主板电池或UPS不间断电源)
all_squash(熟记) 不管访问NFS Server共享目录的用户身份如何,它的权限都将被压缩为匿名用户,同时它的UID和GID都会变成nfsnobody账号身份,在早期多个NFS客户端同时读写NFS Server数据时,这个参数很有用,在生产环境中配置NFS的重要技巧:1)确保所有客户端服务器对NFS共享目录具备相同的用户访问权限,all_squash把所有客户端都压缩成匿名用户(UID相同),就是anonuid,anongid指定的UID和GID相同,2)所有的客户端和服务器端都需要有一个相同的UID和GID的用户,nfsnodoby(UID必须相同)
anonuid(熟记) 参数以anon*开头即值anonymous匿名用户,这个用户的UID设置值通常为nfsnobody的UID值,当然我们也可以自行设置这个UID值。但是,UID必须存在于/etc/passwd中。在多个NFS Clients时,如多台web server共享一个NFS目录时,通过这个参数可以使得不同的NFS Clients写入的数据对所有NFS Clients保持同样的用户权限,即为配置的匿名UID对应用户权限,这个参数很有用。一般默认就好
anongid(熟记) 同anonuid,区别是把uid(用户id)换成gid(组id)
ro 表示只读权限

2.2.7 创建共享目录
[[email protected] ~]# mkdir /data -p
[[email protected] ~]# ll -d /data/
drwxr-xr-x. 2 root root 4096 Nov 19 10:45 /data/
2.2.8 更改共享目录的权限
[[email protected] ~]# chown -R nfsnodoby.nfsnodoby /data
[[email protected] ~]# ll -d /data
drwxr-xr-x 2 nfsnobody nfsnobody 4096 Mar 12 19:27 /data
2.2.9 重新加载NFS服务
[[email protected] ~]# /etc/init.d/nfs reload
【注意】
? /etc/init.d/nfs reload<==>fexportfs -rv
? 修改完/etc/exports配置后,需要重新加载NFS服务
? 用yum/rpm包安装的软件,用service和/etc/init.d/服务名启动是一样的
2.2.10 检查有权限挂载的服务器是否能够挂载
【方法1】利用showmount来进行检查
[[email protected] ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24
或者
[[email protected] ~]# showmount -e localhost
Export list for localhost:
/data 172.16.1.0/24
【注意】
? 出现上面信息是,说明服务器可以挂载
? 测试的IP地址为NFS服务器的IP地址
【方法2】可以在把NFS服务器当做客户端来进行挂载测试
[[email protected] ~]# mount -t nfs 172.16.1.31:/data /mnt 挂载
[[email protected] ~]# df -h 查看
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 8.8G 1.5G 6.9G 18% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 190M 35M 146M 19% /boot
172.16.1.31:/data 8.8G 1.5G 6.9G 18% /mnt
[[email protected] ~]# umount /mnt 测试完后取消挂载
[[email protected] ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 8.8G 1.5G 6.9G 18% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 190M 35M 146M 19% /boot
2.3 NFS客户端的配置
2.3.1 检查操作系统的环境
[[email protected] client1 ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)
[[email protected] client1 ~]# uname -r
2.6.32-696.el6.x86_64
[[email protected] client1 ~]# uname -m
x86_64
2.3.2 安装客户端软件rpcbind和nfs-utils
安装:
[[email protected] ~]# yum install nfs-utils rpcbind -y
检查:
[[email protected] client1 ~]# rpm -qa nfs-utils rpcbind
rpcbind-0.2.0-13.el6_9.1.x86_64
nfs-utils-1.2.3-75.el6_9.x86_64
【注意】
? 安装nfs-utils软件的目的是为了使用showmount等功能,所以客户端最好也装上,但是不启动NFS服务
2.3.3 启动RPC服务并进行查看
启动:
[[email protected] ~]# /etc/init.d/rpcbind start
Starting rpcbind: [ OK ]
检查:
[[email protected] client1 ~]# /etc/init.d/rpcbind status
rpcbind (pid 2370) is running...
2.3.4 检查能否访问服务端
【方法1】
[[email protected] client1 ~]# showmount -e 172.16.1.31 此ip地址为服务器端的ip地址
Export list for 172.16.1.31:
/data 172.16.1.0/24
出现上面的情况说明可以访问服务端
【方法2】
[[email protected] client1 ~]# telnet 172.16.1.31 111 111为rpc服务的端口
Trying 172.16.1.31...
Connected to 172.16.1.31.
Escape character is ‘^]‘.
出现上面的情况说明可以访问服务端
2.3.5 挂载NFS共享目录
挂载:
[ro[email protected] client1 ~]# mount -t nfs 172.16.1.31:/data /mnt
查看:
[[email protected] client1 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 8.8G 1.5G 6.9G 18% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 190M 35M 146M 19% /boot
172.16.1.31:/data 8.8G 1.5G 6.9G 18% /mnt
查看:
[[email protected] client1 ~]# mount
/dev/sda3 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
172.16.1.31:/data on /mnt type nfs (rw,vers=4,addr=172.16.1.31,clientaddr=172.16.1.8)
2.3.6 测试读写数据
2.3.6.1 在/mnt目录下创建测试文件
[[email protected] client1 ~]# cd /mnt/
[[email protected] client1 mnt]# touch test.txt
[[email protected] client1 mnt]# ls
test.txt
2.3.6.2 在NFS服务端/data目录下进行查看
[[email protected] ~]# cd /data
[[email protected] data]# ls
test.txt
至此NFS客户端挂载成功
2.3.7 将挂载命令加入开机自启动
[[email protected] ~]# echo "mount -t nfs 172.16.1.31:/data /mnt" >>/etc/rc.local
[[email protected] ~]# tail -1 /etc/rc.local
mount -t nfs 172.16.1.31:/data /mnt

第3章 NFS重点知识总结

3.1 NFS常见进程详解
3.1.1 查看NFS进程
[[email protected] ~]# ps -ef|grep -E "rpc|nfs"
rpcuser 1221 1 0 10:37 ? 00:00:00 rpc.statd 检查文件的一致性
root 1270 2 0 10:37 ? 00:00:00 [rpciod/0]
rpc 2309 1 0 14:27 ? 00:00:00 rpcbind
root 2900 2 0 19:05 ? 00:00:00 [nfsiod]
root 3121 1 0 19:40 ? 00:00:00 rpc.rquotad 磁盘配额进程
root 3126 1 0 19:40 ? 00:00:00 rpc.mountd 权限管理验证
root 3133 2 0 19:40 ? 00:00:00 [nfsd4]
root 3134 2 0 19:40 ? 00:00:00 [nfsd4_callbacks]
root 3135 2 0 19:40 ? 00:00:00 [nfsd] nfs主进程管理登入ID身份 认证等
root 3136 2 0 19:40 ? 00:00:00 [nfsd]
root 3137 2 0 19:40 ? 00:00:00 [nfsd]
root 3138 2 0 19:40 ? 00:00:00 [nfsd]
root 3139 2 0 19:40 ? 00:00:00 [nfsd]
root 3140 2 0 19:40 ? 00:00:00 [nfsd]
root 3141 2 0 19:40 ? 00:00:00 [nfsd]
root 3142 2 0 19:40 ? 00:00:00 [nfsd]
root 3173 1 0 19:40 ? 00:00:00 rpc.idmapd name mapping daemon
root 3271 2130 0 20:15 pts/0 00:00:00 grep -E rpc|nfs
3.1.2 NFS服务启动的进程说明

服务或进程名 用途说明
nfsd(rpc.nfsd) 主要功能是用来管理NFS客户端是否能够登入NFS服务端主机,其中还包括登入者的ID判别等
mountd(rpc.mountd) 主要功能是管理NFS文件系统,特别注意的是:NFS本身设置的是网络共享权限,整个共享目录的权限还和目录自身的系统权限有关
rpc.lockd(非必要) 可用来锁定文件,用于多客户端同时写入
rpc.statd(非必要) 检查文件的一致性,与rpc.lockd有关
rpc.idmapd 名字映射后台进程

3.3 NFS客户端挂载命令

挂载命令 挂载的格式类型 NFS服务器提供的共享目录 NFS客户端的挂载点
mount -t nfs 172.16.1.31:/data /mnt (该目录必须存在)

3.4 多个NFS客户端访问服务器的读写文件时必须要有的权限
? NFS服务器/etc/exports设置需要开放可写入的权限,即服务端的共享权限
? NFS服务器实际要共享的NFS目录权限具有可写入w的权限,即服务端本地目录的安全权限
? 每台服务器都对应存在和NFS默认配置UID的相同UID的账户nfsnodoby(确保所有所有客户端的访问权限统一,否则每台机器都需要同时建立相同UID用户,并覆盖NFS的默认用户配置)
只有满足上述三个条件,多个NFS客户端才能具有查看、修改、删除其他任意NFS客户端上传文件的权限,这在大规模的集群环境中最为集群共享存储时尤为重要
第4章 错误重现及客户端排错思路
4.1 错误重现
4.1.1 服务端的防火墙未关闭
? 【错误实例】
[[email protected] ~]# showmount -e 172.16.1.31
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)

并且再出现这种错误时,在客户端不能用df -h命令
? 【解决方法】
只需关掉NFS服务端的防火墙即可
[[email protected] ~]# /etc/init.d/iptables stop
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Flushing firewall rules: [ OK ]
iptables: Unloading modules: [ OK ]
[[email protected] ~]# /etc/init.d/iptables status
iptables: Firewall is not running.
? 【测试】
在NFS客户端在进行测试
[[email protected] ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24
4.1.2 NFS服务端的共享目录权限不够
? 【错误实例】
在NFS客户端挂载目录下创建文件被拒绝出现下面的错误
[[email protected] ~]# cd /mnt/
[[email protected] mnt]# touch oldboy.txt
touch: cannot touch `oldboy.txt‘: Permission denied

? 【解决方法】
在客户端修改共享目录的权限
[[email protected] ~]# ll -d /data
drwxr-xr-x 2 root root 4096 Mar 13 20:07 /data
[[email protected] ~]# chown -R nfsnobody.nfsnobody /data
[[email protected] ~]# ll -d /data
drwxr-xr-x 2 nfsnobody nfsnobody 4096 Mar 13 20:07 /data
? 【测试】
在NFS客户端挂载目录下创建文件
[[email protected] ~]# cd /mnt/
[[email protected] mnt]# touch oldboy.txt
在NFS服务端共享目录下查看
[[email protected] ~]# cd /data
[[email protected] data]# ls
oldboy.txt test.txt
4.1.3 NFS服务端启动顺序有问题
? 【错误实例】
[[email protected] ~]# showmount -e 172.16.1.31
clnt_create: RPC: Program not registered

? 【解决方法】
在NFS端重新启动服务,先启动rpcbind服务,在启动nfs服务
[[email protected] ~]# /etc/init.d/rpcbind start
Starting rpcbind: [ OK ]
[[email protected] ~]# /etc/init.d/nfs start
Starting NFS services: [ OK ]
Starting NFS quotas: [ OK ]
Starting NFS mountd: [ OK ]
Starting NFS daemon: [ OK ]
Starting RPC idmapd: [ OK ]
? 【测试】
[[email protected] ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24
4.1.4 NFS服务端的nfs服务未开启
? 【错误实例】
[[email protected] ~]# showmount -e 172.16.1.31
clnt_create: RPC: Program not registered

? 【解决方法】
在NFS服务端开启nfs服务器
[[email protected] ~]# /etc/init.d/nfs start
Starting NFS services: [ OK ]
Starting NFS quotas: [ OK ]
Starting NFS mountd: [ OK ]
Starting NFS daemon: [ OK ]
Starting RPC idmapd: [ OK ]
? 【测试】
[[email protected] ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24
4.2 排错思路
4.2.1 首先确认NFS服务器端的服务或配置是否OK
[[email protected] ~]# showmount -e localhost
Export list for localhost:
/data 172.16.1.0/24
4.2.2 在NFS服务器端测试能否挂载
[[email protected] ~]# mount -t nfs 172.16.1.31:/data /mnt
[[email protected] ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 8.8G 1.5G 6.9G 18% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 190M 35M 146M 19% /boot
172.16.1.31:/data 8.8G 1.5G 6.9G 18% /mnt
4.2.3 从客户端pingNFS服务端的ip
[[email protected] ~]# ping 172.16.1.31
PING 172.16.1.31 (172.16.1.31) 56(84) bytes of data.
64 bytes from 172.16.1.31: icmp_seq=1 ttl=64 time=2.39 ms
64 bytes from 172.16.1.31: icmp_seq=2 ttl=64 time=0.528 ms
这是通的情况
? 执行这步的主要目的是看物理链路是否通
4.2.4 从客户端telnet服务器端IP端口检查
[[email protected] ~]# telnet 172.16.1.31 111
Trying 172.16.1.31...
Connected to 172.16.1.31.
Escape character is ‘^]‘
这是通的情况
? 执行这步的主要目的是用于测试NFS服务或RPC服务是否通
第5章 生产环境高级案例配置实战
5.1 NFS服务端的配置
5.1.1 建立用户组zuma,并指定GID为888,所有的客户端也执行同样的操作
[[email protected] ~]# groupadd zuma -g 888
5.1.2 建立用户zuma,指定UID为888,并加入zuma组,所有的客户端也执行同样的操作
[[email protected] ~]# useradd zuma -u zuma -g 888
[[email protected] ~]# id zuma 查看建立的用户及用户组
uid=888(zuma) gid=888(zuma) groups=888(zuma)
5.1.3 配置/etc/exports配置文件并检查
[[email protected] ~]# vim /etc/exports
[[email protected] ~]# cat /etc/exports
#share /data by oldboy for bingbing at 2018-3-12
/data 172.16.1.0/24(rw,sync)
#####
/data1 172.16.1.0/24(rw,sync,all_squash,anonuid=888,anongid=888)
5.1.4 创建共享目录并检查
[[email protected] ~]# mkdir -p /data1
[[email protected] ~]# ll -d /data1
drwxr-xr-x 2 root root 4096 Mar 12 20:00 /data1
5.1.5 给共享目录服务权限并检查
[[email protected] ~]# chown -R zuma.zuma /data1
[[email protected] ~]# ll -d /data1
drwxr-xr-x 2 zuma zuma 4096 Mar 12 20:00 /data1
5.1.6 重新加载NFS服务器
[[email protected] ~]# /etc/init.d/nfs reload
5.1.7确认NFS服务端的服务或配置是否OK
[[email protected] ~]# showmount -e localhost
Export list for localhost:
/data1 172.16.1.0/24
/data 172.16.1.0/24
至此NFS服务端配置完成
5.2 NFS客户端的配置
5.2.1 建立用户组zuma,并指定GID为888,同服务端的操作步骤
[[email protected] ~]# groupadd zuma -g 888
5.2.2 建立用户zuma,指定UID为888,并加入zuma组,同服务端的操作步骤
[[email protected] ~]# useradd zuma -u 888 -g zuma
[[email protected] ~]# id zuma 查看
uid=888(zuma) gid=888(zuma) groups=888(zuma)
5.2.3 创建挂载目录并检查
[[email protected] ~]# mkdir /test
[[email protected] ~]# ll -d /test
drwxr-xr-x 2 root root 4096 Mar 14 10:18 /test
5.2.3 检查是否启动rpcbind服务
[[email protected] ~]# /etc/init.d/rpcbind status
rpcbind (pid 1204) is running... 说明正在运行
5.2.4 测试NFS服务端是否可以挂载
[[email protected] ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data1 172.16.1.0/24
/data 172.16.1.0/24 说明可以挂载
5.2.5 挂载并进行查看
[[email protected] ~]# mount -t nfs 172.16.1.31:/data1 /test 挂载
[[email protected] ~]# df -h 查看
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 8.8G 1.5G 6.9G 18% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 190M 35M 146M 19% /boot
172.16.1.31:/data 8.8G 1.5G 6.9G 18% /mnt
172.16.1.31:/data1 8.8G 1.5G 6.9G 18% /test
5.2.6 在挂载目录下创建测试文件
[[email protected] ~]# cd /test/
[[email protected] test]# touch test.txt
[[email protected] test]# ls
test.txt
5.2.7 在服务端共享目录下进行查看
[[email protected] ~]# cd /data1
[[email protected] data1]# ls
test.txt
至此指定NFS共享用户zuma共享/data1目录的配置完成

原文地址:http://blog.51cto.com/lzhnb/2086392

时间: 2024-10-07 06:39:11

linux集群搭建之nfs服务的搭建的相关文章

Linux集群配置ntp时间同步服务

集群中时间不同步有可能会让大数据的应用程序运行混乱,造成不可预知的问题,比如Hbase,当时间差别过大时就会挂掉,所以在大数据集群中,ntp服务,应该作为一种基础的服务,以下在演示在CentOS 7.2集群上配置ntp服务的过程 首先检查系统中是否安装ntp包: rpm -q ntp 我这里是只是基础服务器操作系统,所以没有安装ntp服务 然后,执行命令在线安装ntp: yum -y install ntp 安装成功之后,再次执行 rpm -q ntp 可以看到对应的包: 这个时候可以使用命令查

【集群实战】NFS服务常见故障排查和解决方法

NFS,全名叫Network File System,中文叫网络文件系统,是Linux.UNIX系统的分布式文件系统的一个组成部分,可实现在不同网络上共享远程文件系统. NFS由Sun公司开发,目前已经成为文件服务的一种标准之一(RFC1904,RFC1813). 其最大的功能就是可以通过网络,让不同操作系统的计算机可以共享数据,所以可以把NFS看做是一个文件服务器.NFS缺点是其读写性能比本地硬盘要差一些. 一.NFS服务常见故障排查: NFS服务出现了故障,主要从以下几个方面检查原因: (1

ubuntu 16.04 nfs服务的搭建

nfs服务是实现Linux和Linux之间的文件共享,nfs服务的搭建比较简单. 现在介绍如何在ubuntu16.04系统中搭建nfs服务,ubuntu的搭建比红帽的还要简单. 1.安装nfs服务 sudo apt install nfs-common 2.修改配置文件 sudo vim /etc/exports 修改内容如下: /home *(rw,sync,no_root_squash) 各段表达的意思如下,根据实际进行修改 /home :共享的目录 * :指定哪些用户可以访问 * 所有可以

Red Hat 6.5 nfs服务的搭建

nfs服务是实现Linux和Linux之间的文件共享,nfs服务的搭建比较简单. 现在介绍如何在红帽6.5系统中搭建nfs服务. 1.关闭selinux服务 如果已经关闭该服务的可以直接跳过该步骤. 临时关闭 只对当前有效,电脑重启之后,该服务又会重新启动,所以一般选择永久关闭. setenforce 0 永久关闭 打开selinux的配置文件 vim /etc/sysconfig/selinux 将SELINUX修改为disabled 重启电脑 reboot 2.安装nfs服务 yum ins

linux集群下 solr集群搭建

首先介绍一下系统架构: * 这个图中代表的是三个solr实例,每个实例包括两个core,组成一个solrcloud * 索引集合包括两个 shard(shard1和shard2),shard1和shard2分别由三个core组成,其中一个L eader两个Replication,Leader是由zookeeper选举产生,zookeeper控制每个shard上三个core的索引数据一致,解决高可用和高并发问题. * Collection在solrcloud集群中是一个索引结构,被划分为一个或多个

基于Vmare的虚拟Linux集群搭建-lvs+keepalived

基于Vmare的虚拟Linux集群搭建-lvs+keepalived 本文通过keepalived实现lvs服务器的的双机热备和真实服务器之间的负载均衡.这方面的blog挺多,但是每个人搭建集群的环境不同,遇到的问题也不同,本文简述配置的一些过程以及配置过程中遇到问题时的解决方案. 准本工作 1. 创建Linux虚拟机 本文是基于Vmare虚拟环境搭建集群的,所以首先在Vmare中创建一些虚拟机(安装一个Linux系统,其他的复制第一次安装的即可),本文创建4台虚拟机.网卡模式设置成桥接方式,这

Linux集群服务 LVS

linux虚拟服务器(LVS)项目在linux操作系统上提供了最常见的负载均衡软件. 集群定义: 集群(cluster)技术是一种较新的技术,通过集群技术,可以在付出较低成本的情况下获得在性能.可靠性.灵活性方面的相对较高的收益,其任务调度则是集群系统中 的核心技术.本文就集群系统的定义.发展趋势.任务调度等问题进行了简要论述.集群是一组相互独立的.通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理.一个客户与集群相互作用时,集群像是一个独立的服务器.集群配置是用于提高可用性

Linux集群系列之一——集群基础概念

PHP高级工程师之LInux集群(多态主机组合起来,完成一个任务) 在这里和大家分享一下多数网络黑客常用的攻击方式及预防措施. 如有不善,多提意见(QQ:1595068971-邮箱:[email protected]) 负载均衡集群LB(提高服务的病发处理能力为根本)增加处理能力 衡量标准: 病发处理能力(一次性能够处理多少个请求) 高可用集群HA(提升服务的始终在线能力为根本,不会因为宕机而导致服务不可用)增加服务可用性 衡量标准:在线时间 / (在线时间+故障处理时间) 99%,99.9%,

新书《Linux集群和自动化运维》目录

推荐序一 在全球"互联网+"的大背景下,互联网创业企业的数量如雨后春笋般大量产生并得到了快速发展!对"互联网+"最有力的支撑就是Linux运维架构师.云计算和大数据工程师,以及自动化开发工程师等! 但是,随着计算机技术的发展,企业对Linux运维人员的能力要求越来越高,这就使得很多想入门运维的新手不知所措,望而却步,甚至努力了很久却仍然徘徊在运维岗位的边缘:而有些已经工作了的运维人员也往往是疲于奔命,没有时间和精力去学习企业所需的新知识和新技能,从而使得个人的职业发