NFS储存服务器

NFS储存服务器
NFS服务介绍
NFS是Network File System的缩写,中文意思是网络共享文件系统,它的主要功能是通过网络(一般是局域网)
让不同的主机系统之间可以共享文件或目录
如果大型网站,那么有可能还会用到更复杂的分布式文件系统,例如:Moosefs(mfs)、GlusterFS、FastDFS
为什么用NFS网络文件存储系统?
1)实现数据信息统一一致
2)节省局域网数据同步传输的带宽
3)节省网站架构中服务器硬盘资源
共享存储方式
01:硬件实现共享存储
IBM Oracle EMC:====去IOE
02:软件实现共享存储
NFS FTP
NFS系统存储原理介绍
01:在NFS服务端创建共享目录:
02:通过mount网络挂载,将NFS客户端本地目录挂载到NFS服务端共享目录上
03:NFS客户端挂载目录上创建、删除、查看数据操作,等价于在服务端进行的创建、删除、查看操作
什么是RPC rpc
RPC服务(远程调用服务)相当于中介,NFS相当于房源,NFS客户端相当于租客
RPC服务(远程调用服务)相当于中介,NFS服务端与NFS客户端起到一个中介的作用,不便于客户端管理,因此需利用RPC 服务统一管理。
RPC服务用于管理端口,由于NFS服务启动的时候会产生多个端口
[root@nfs01 ~]# ps -ef |grep -E "nfs|rpc"
rpcuser 1239 1 0 08:32 ? 00:00:00 rpc.statd
rpc 2134 1 0 15:46 ? 00:00:00 rpcbind
root 2182 2 0 15:47 ? 00:00:00 [rpciod/0]
root 2191 1 0 15:47 ? 00:00:00 rpc.rquotad
root 2196 1 0 15:47 ? 00:00:00 rpc.mountd
root 2203 2 0 15:47 ? 00:00:00 [nfsd4]
root 2204 2 0 15:47 ? 00:00:00 [nfsd4_callbacks]
root 2205 2 0 15:47 ? 00:00:00 [nfsd]
root 2206 2 0 15:47 ? 00:00:00 [nfsd]
root 2207 2 0 15:47 ? 00:00:00 [nfsd]
root 2208 2 0 15:47 ? 00:00:00 [nfsd]
root 2209 2 0 15:47 ? 00:00:00 [nfsd]
root 2210 2 0 15:47 ? 00:00:00 [nfsd]
root 2211 2 0 15:47 ? 00:00:00 [nfsd]
root 2212 2 0 15:47 ? 00:00:00 [nfsd]
root 2243 1 0 15:47 ? 00:00:00 rpc.idmapd
root 2513 1312 0 19:18 pts/0 00:00:00 grep --color=auto -E nfs|rpc
[root@nfs01 ~]#
NFS服务部署过程
服务端部署
第一个里程碑:检查NFS rpcbind(portmap-centos5)有没安装
默认没有安装
[root@nfs01 scripts]# rpm -qa nfs-utils rpcbind
第二个里程碑:安装nfs-utils rpcbind
[root@nfs01 ~]# yum install -y nfs-utils rpcbind
[root@nfs01 scripts]# 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
[root@nfs01 scripts]#
第三个里程碑:进行NFS编写配置文件
vim /etc/exports ---NFS配置文件
/data/ 172.16.1.0/24(rw,sync)
存储目录信息 允许哪些主机进行数据存储 (权限参数) NFS编写配置文件格式
可以共享目录权限参数信息(ro rw )
1.1 影响NFS共享目录权限因素
01:和服务端的配合文件参数有关:
02 和共享目录本身权限有关
第四个里程碑:创建共享目录并授权权限
mkdir -p /data
chown -R nfsnobody.nfsnobody /data
第五个里程碑:启动程序服务
6启动 /etc/init.d/rpcbind start 7启动 service rpcbind restart
6启动 /etc/init.d/nfs start 7启动 service nfs restart
第六个里程碑:检查nfs服务端口是否已经进行注册
rpcinfo -p 10.0.0.31 检查房源信息是否向中介已经注册
客户端部署
第一个里程碑:检查NFS rpc
默认没有安装
[root@nfs01 ~]# rpm -qa |grep nfs
[root@nfs01 ~]# rpm -qa |grep rpc
xmlrpc-c-1.16.24-1210.1840.el6.x86_64
xmlrpc-c-client-1.16.24-1210.1840.el6.x86_64
[root@nfs01 ~]#
第二个里程碑:安装NFS rpc
[root@nfs01 ~]# yum install -y nfs-utils rpcbind
第三步里程碑;检查有没有可以共享的目录
showmount -e 10.0.0.31
showmount -e 172.16.1.31
[root@backup ~]# showmount -e 10.0.0.31
Export list for 10.0.0.31:
/data 172.16.1.0/24
[root@backup ~]#
客户端必须和服务端通的
第四个里程碑:进行远程共享目录挂载
检测是否存在共享目录,进行共享目录挂载
mount -t nfs 172.16.1.31:/data /mnt
df -h
[root@backup ~]# mount -t nfs 172.16.1.31:/data /mnt
root@backup ~]# # mount -t 指定挂载文件系统类型nfs 指定存储服务器地址信息:共享目录 本地挂载点路径信息
[root@backup ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 19G 1.9G 16G 11% /
tmpfs 238M 0 238M 0% /dev/shm
/dev/sda1 190M 40M 141M 22% /boot
172.16.1.31:/data 19G 1.8G 16G 11% /mnt
[root@backup ~]#
第四个里程碑:进行存储数据信息测试
 
NFS 和RPC服务软件都干了什么
/etc/rc.d/init.d/nfs 生成服务启动脚本命令文件
/usr/sbin/exportfs
/usr/sbin/showmount 生成查看共享目录列表信息
rpm -ql rpcbind
/etc/rc.d/init.d/rpcbind 生成服务器脚本文件 启动脚本命令
/usr/sbin/rpcinfo 生成查看房源信息命令文件 查看NFS注册信息
总结:nfs-utils和rpcbind软件必须也要安装在nfs客户端
01. 客户端不安装nfs软件无法识别nfs文件类型
02. 客户端不安装nfs和rpc软件,无法使用rpcinfo和showmount命令,进行查看服务端信息
NFS服务端详细讲解
配置文件编写说明
1. 配置文件编写说明
NFS 共享目录 NFS客户端地址(参数1,参数2,...)
/data 172.16.1.0/24(参数1)
/data 10.0.0.0/24(参数1)
 
共享目录影响权限的因素
01. nfs配置文件中权限参数会影响共享目录权限
02. nfs服务端共享目录本身权限也会影响目录目录权限
NFS配置的参数
共享文件系统用户压缩映射原理:rpc.idmapd
rw 表示可读可写权限
ro 表示只读权限
sync 同步 直接写到硬盘中 请求或写入数据时,数据同步写入到NFS Server的硬盘后才返回
优点:数据安全不会丢
缺点:性能比不启用该参数要差
async 异步 先把数据写到内存的缓冲区 磁盘有空间了在把数据放到硬盘中
说明:修改映射后的默认用户信息
 
root_squash <-- 将root用户映射为相应nfsnobody用户
no_root_squash <-- 将root用户不映射为相应nfsnobody用户
all_squash <-- 将所有用户映射为相应nfsnobody用户
no_all_squash <-- 将所有用户不映射为相应nfsnobody用户
 
第一种情况配置:all_squash
vim /etc/exports
/data/ 172.16.1.0/24(rw,sync,all_squash)
 
# 配置文件修改,重启nfs服务
/etc/init.d/nfs reload <-- 平滑重启
 
银行 9:00 - 17:00
一种人 在银行里面 16:50 17:00 17:30 业务办完再轰走
 
一种人 去银行 16:50 17:00 17:10 已经到了关门时间,我就不会让你进来
 
[root@backup mnt]# touch root.txt
[root@backup mnt]# ll
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 Mar 22 16:26 oldboy.txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Mar 22 17:46 root.txt
 
[oldboy@backup mnt]$ touch oldgirl.txt
[oldboy@backup mnt]$ ll
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 Mar 22 16:26 oldboy.txt
-rw-rw-r-- 1 nfsnobody nfsnobody 0 Mar 22 17:47 oldgirl.txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Mar 22 17:46 root.txt
 
第二种情况配置:no_all_squash,root_squash
vim /etc/exports
/data/ 172.16.1.0/24(rw,sync,no_all_squash,root_squash)
/etc/init.d/nfs reload
[oldboy@backup ~]$ cd /mnt
[oldboy@backup mnt]$ touch oldboy02.txt
touch: cannot touch `oldboy02.txt': Permission denied
[oldboy@backup mnt]$ touch oldboy02.txt
[oldboy@backup mnt]$ ll
total 0
-rw-rw-r-- 1 oldboy oldboy 0 Mar 22 17:54 oldboy02.txt
-rw-r--r-- 1 oldboy oldboy 0 Mar 22 16:26 oldboy.txt
-rw-rw-r-- 1 oldboy oldboy 0 Mar 22 17:47 oldgirl.txt
-rw-r--r-- 1 oldboy oldboy 0 Mar 22 17:51 root02.txt
-rw-r--r-- 1 oldboy oldboy 0 Mar 22 17:46 root.txt
 
第三种情况:no_root_squash
vim /etc/exports
/data/ 172.16.1.0/24(rw,sync,no_all_squash,no_root_squash)
[root@backup mnt]# touch root03.txt
[root@backup mnt]#
[root@backup mnt]# ll
total 0
-rw-rw-r-- 1 oldboy oldboy 0 Mar 22 17:54 oldboy02.txt
-rw-r--r-- 1 oldboy oldboy 0 Mar 22 16:26 oldboy.txt
-rw-rw-r-- 1 oldboy oldboy 0 Mar 22 17:47 oldgirl.txt
-rw-r--r-- 1 oldboy oldboy 0 Mar 22 17:58 root02.txt
-rw-r--r-- 1 root root 0 Mar 22 17:58 root03.txt
-rw-r--r-- 1 oldboy oldboy 0 Mar 22 17:46 root.txt
 
项目实践:修改nfs默认匿名用户信息oldboy
anonuid
annogid
项目实践:修改nfs默认匿名用户信息oldboy
nfs客户端操作流程:root 所有用户
客户端
第一个历程:创建出要映射的用户信息
 
nfs服务端操作流程:
第一个历程:创建默认匿名用户
useradd oldboy -s /sbin/nologin -M -u 500
 
第二个历程:编写配置文件
vim /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash,anonuid=500,anongid=500)
chown -R oldboy.oldboy /data/
 
第三个历程:重启nfs服务(平滑重启)
/etc/init.d/nfs reload
 
如果没有写参数就默认是anonuid=65534,anongid=65534
[root@nfs01 /]# cat /var/lib/nfs/etab
/data 172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,anonuid=65534,anongid=65534,sec=sys,rw,root_squash,all_squash)
[root@nfs01 /]# cat /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash)
[root@nfs01 /]# id nfsnobody
uid=65534(nfsnobody) gid=65534(nfsnobody) groups=65534(nfsnobody)
实践练习题
02. 实践练习题
服务端上面要求:
nfs服务器172.16.1.31,共享下面两个目录:
/data/w 要求的权限可读写,同步数据,所有用户都压缩为匿名用户
/data/r 要求的权限为只读,同步数据,所有用户都压缩为匿名用户
 
客户端上面要求:
backup服务器 把NFS服务器的/data/r 挂载到/data/r
web01服务器 把NFS服务器的/data/w 挂载到/data/w
 
nfs服务端:
第一个历程:编写配置文件
vim /etc/exports
/data/w 172.16.1.0/24(rw,sync,all_squash)
/data/r 172.16.1.0/24(ro,sync,all_squash)
 
第二个历程:创建存储目录,修改目录权限
mkdir /data/{w,r} -p
chown -R nfsnobody.nfsnobody /data/
 
第三个历程:平滑重启nfs服务
/etc/init.d/nfs reload
 
nfs客户端:
第一个历程:创建挂载点目录
mkdir /data/{w,r} -p
 
第二个历程:进行共享目录挂载
backup
mount -t nfs 172.16.1.31:/data/r /data/r
web01
mount -t nfs 172.16.1.31:/data/w /data/w
 
说明:在这是nfs共享目录时,会有子集目录继承父亲目录的权限问题
尽量在配置共享目录时,避免目录继承权限问题,不要上级目录和子集目录同时存在
NFS服务端知识总结
/usr/sbin/exportfs <-- nfs服务端管理命令
①. 管理nfs服务运行情况
/usr/sbin/exportfs -vr
②. 管理配置共享目录信息
exportfs -o rw,sync 172.16.1.0/24:/data <-- 命令配置知识临时生效
 
/var/lib/nfs/etab
说明:nfs服务端默认配置信息记录文件
/etc/exports
说明:nfs服务端配置文件
 
/proc/mounts????
说明:nfs客户端默认参数记录文件
04. NFS客户端详细知识点
umount -lf /data/r
-l Lazy unmount 懒惰卸载参数
-f Force unmount 强制卸载参数
 
问题
02. 共享目录挂载很卡
mount -t nfs 172.16.1.31:/data /mnt
cd /mnt
time touch test.txt
原因分析:
l NFS服务端重启之后。立刻进行挂载会出现此问题,因为NFS自身重启的时候,拥有无敌的时间,默认是90秒;在无敌时间内,是不能对共享目录进行更改的操作;
l 在系统配置中/etc/sysconfig/nfs中指定了无敌时间的配置参数
NFSD_V4_GRACE=90
NFSD_V4_LEASE=90
NLM_GRACE_PERI0D=90
 
 
 
NFS客户端自动挂载
05. NFS客户端自动挂载
①. 利用/etc/rc.local文件实现开机自动挂载
echo "mount -t nfs 172.16.1.31:/data /mnt" >>/etc/rc.local
②. 利用fstab文件实现开机自动挂载
tail -1 /etc/fstab
172.16.1.31:/data /mnt nfs defaults 0 0
chkconfig netfs on
企业真实案例:整个系统都是只读
01:文件系统出现问题了
mount -o remount,rw /
02:硬件磁盘出现问题了
尽量找数据恢复公司
 

原文地址:https://www.cnblogs.com/xy51/p/14445598.html