NFS存储服务

NFS存储服务笔记
======================================================================
NFS共享存储是什么:
英文名-Network File System的缩写,中文意思是网络文件系统,主要功能是通过网络让不同的主机系统之间可以共享文件和目录

NFS共享存储的应用:
1、将数据存储到一台服务器,实现数据统一性,共享访问
2、NFS存储服务器中主要存储哪些信息:用户上传的图片 音频 视频 附件等信息

NFS共享存储的原理:
①. nfs服务端创建共享存储目录
②. nfs客户端创建远程挂载点目录
③. nfs客户端进行远程挂载
④. 实现客户端数据信息统一一致
实现共享存储的好处:
01. 实现数据统一
02. 节省网站磁盘资源
03. 节省网站访问带宽
NFS工作流程:
服务端:
1. 启动rpcbind服务,创建中介
2. 启动nfs服务,创建房源信息
3. 将房源信息向中介进行注册,在nfs服务稳定运行过程中,房源信息只注册一次
客户端:
1. 启动rpcbind服务(可选)
2. 确保客户端和服务端网络连接建立成功
3. 执行mount命令进行网络存储挂载

NFS部署流程:
服务端部署:
1、检查软件是否安装
[root@NFS01 ~]# rpm -qa|grep nfs-utils
[root@NFS01 ~]# rpm -qa|grep rpcbind
2、服务软件安装
[root@NFS01 ~]# yum install nfs-utils rpcbind -y
[root@NFS01 ~]# rpm -qa|grep nfs-utils
nfs-utils-1.2.3-78.el6_10.1.x86_64
nfs-utils-lib-1.1.5-13.el6.x86_64
[root@NFS01 ~]# rpm -qa|grep rpcbind
rpcbind-0.2.0-16.el6.x86_64
补充说明:查看安装的软件内容
[root@NFS01 ~]# rpm -ql nfs-utils
/etc/rc.d/init.d/nfs 服务器启动方法
/usr/sbin/showmount 检查nfs服务共享目录信息爱

[root@NFS01 ~]# rpm -ql rpcbind
/etc/rc.d/init.d/rpcbind 启动脚本
/usr/sbin/rpcinfo 检查nfs服务想向rpc注册的信息

3、编写nfs服务配置文件(文件默认存在)
[root@NFS01 ~]# ll /etc/exports
-rw-r--r--. 1 root root 0 Jan 12 2010 /etc/exports
[root@NFS01 ~]# vim /etc/exports
/data 172.16.1.0/24(rw,sync)
~说明:文件格式如下
指定共享目录 指定共享目录访问控制网段或主机信息 (参数信息,也就是权限)
例: /data 172.16.1.0/24(rw,sync)
4、创建服务共享文件并授权
[root@NFS01 ~]# mkdir /data
[root@NFS01 ~]# chown -R nfsnobody.nfsnobody /data
5、启动nfs和rpc服务
先启动rpcbind再启动nfs
[root@NFS01 ~]# /etc/init.d/rpcbind start
Starting rpcbind: [ OK ]
[root@NFS01 ~]# /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 ]
6、服务配置检查
先检查房源(nfs)信息是否进行注册
[root@NFS01 ~]# rpcinfo -p 172.16.1.31
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 36801 mountd
100005 1 tcp 38864 mountd
100005 2 udp 46577 mountd
100005 2 tcp 63877 mountd
100005 3 udp 19847 mountd
100005 3 tcp 5988 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 37579 nlockmgr
100021 3 udp 37579 nlockmgr
100021 4 udp 37579 nlockmgr
100021 1 tcp 31145 nlockmgr
100021 3 tcp 31145 nlockmgr
100021 4 tcp 31145 nlockmgr
检查是有共享目录
[root@NFS01 ~]# showmount -e localhost
Export list for localhost:
/data 172.16.1.0/24

客户端部署
1、检查是否安装nfs服务
[root@web01 ~]# rpm -qa |egrep "rpcbind|nfs-utils"
rpcbind-0.2.0-16.el6.x86_64
nfs-utils-1.2.3-78.el6_10.1.x86_64
nfs-utils-lib-1.1.5-13.el6.x86_64
2、进行安装
yum install rpcbind nfs-utils -y
3、进行挂载目录共享
[root@web01 ~]# mount -t nfs 172.16.1.31:/data /mnt
[root@web01 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 19G 1.5G 17G 9% /
tmpfs 931M 0 931M 0% /dev/shm
/dev/sda1 190M 40M 141M 22% /boot
172.16.1.31:/data 19G 1.5G 17G 9% /mnt
[root@web01 mnt]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24
4、nfs服务应用检查
[root@web01 mnt]# touch {1..4}
[root@NFS01 ~]# ll /data/
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 Jan 10 21:35 1
-rw-r--r-- 1 nfsnobody nfsnobody 0 Jan 10 21:35 2
-rw-r--r-- 1 nfsnobody nfsnobody 0 Jan 10 21:35 3
-rw-r--r-- 1 nfsnobody nfsnobody 0 Jan 10 21:35 4
[root@web02 ~]# ll /mnt/
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 Jan 10 21:35 1
-rw-r--r-- 1 nfsnobody nfsnobody 0 Jan 10 21:35 2
-rw-r--r-- 1 nfsnobody nfsnobody 0 Jan 10 21:35 3
-rw-r--r-- 1 nfsnobody nfsnobody 0 Jan 10 21:35 4

NFS服务部署进程信息:
[root@oldboy ~]# ps -ef|egrep "rpc|nfs"
rpc 1564 1 0 09:32 ? 00:00:00 rpcbind
rpc 1065 1 0 09:32 ? 00:00:00 rpc statd <- 检查数据存储一致性
root 4736 2 0 21:31 ? 00:00:00 [rpciod/0]
root 5363 1 0 21:47 ? 00:00:00 rpc.rquotad <- 磁盘配额进程(remote quote server)
root 5368 1 0 21:47 ? 00:00:00 rpc.mountd <- 权限管理验证等(NFS mount daemon)
root 5375 2 0 21:47 ? 00:00:00 [nfsd4]
root 5376 2 0 21:47 ? 00:00:00 [nfsd4_callbacks]
root 5377 2 0 21:47 ? 00:00:00 [nfsd] <- NFS主进程
root 5378 2 0 21:47 ? 00:00:00 [nfsd] <- NFS主进程
root 5379 2 0 21:47 ? 00:00:00 [nfsd] <- NFS主进程,管理登入,ID身份判别等。
root 5380 2 0 21:47 ? 00:00:00 [nfsd]
root 5381 2 0 21:47 ? 00:00:00 [nfsd]
root 5382 2 0 21:47 ? 00:00:00 [nfsd]
root 5383 2 0 21:47 ? 00:00:00 [nfsd]
root 5384 2 0 21:47 ? 00:00:00 [nfsd] <- NFS主进程
root 5415 1 0 21:47 ? 00:00:00 rpc.idmapd <- name mapping daemon
用户压缩/用户映射(记录)
root 5512 4670 0 22:02 pts/0 00:00:00 egrep rpc|nfs

NFS启动方式:
/etc/init.d/nfs reload ---平滑重启
/etc/init.d/nfs restart ---重启

NFS服务配置参数:
rw--可读可写

ro--只读

sync--数据同步写入内存缓冲区与磁盘中,虽然这样做效率较低,但可以保证数据的一致性(适合于小文件传输)

async--数据先暂时放于内存,而非直接写入硬盘,等到必要时才写入磁盘(适合于大文件传输)

no_root_squash--使用nfs时,如果用户是root,不进行权限压缩,即root用户在nfs上创建的文件 属组和属主仍然是root(不安全,不建议使用)

root_squash--使用nfs时,如果用户是root,则进行权限压缩,即把root用户在nfs上创建的文件 属组和属主修改为nfsnobody

all_squash--所有的普通用户使用nfs都将使用权限压缩,即:将远程访问的所有普通用户及所属用户组都映射为匿名用户或者用户组(一般均为nfsnobody)

no_all_squash--所有的普通用户使用nfs都不使用权限压缩,即:不将远程访问的所有普通用户及所属用户组都映射为匿名用户或者用户组(默认设置)

anonuid=XXX--anon即anonymous(匿名者),前面关于*_squash提到的匿名用户的uid的设置值,通常为nobody或者nfsnobody,使用这个参数可以自行设定这个uid值,这个uid必须存在 于/etc/passwd

anongid=XXX--将远程访问的所有用户组都映身为匿名用户组账户,并指定该匿名用户组账户为本地用户组账户(GID=XXX)

insecure--允许客户端从大于1024的TCP/IP端口连NFS服务器

secure--限制客户端只能从小于1024的TCP/IP端口连接NFS服务器(默认设置)

wdelay--检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可提高效率(默认设置)

no_wdelay--有写操作则立即执行(应与sync配置)

subtree_check--若输出目录是一个子目录,则NFSW:务器将检查其父目录的权限(默认设置)

no_subtree_check--即使输出目录是一个子目录,NFS服务器也不检查其父目录的权限,这样做可提高效率

使用实例:
/home/linux *.linux.org(rw,all_squash,anonuid=40,anongid=40)
当*.linux.org(加入域linux.org的所有主机) 登陆此NFS主机,并且在/home/linux下面写入档案时,该档案的所有人与所有组,就会变成NFS服务器上的/etc/passwd文件里面对应的UID为40的那个身份的使用者了(因为指定了参数:all_squash,anonuid=40,anongid=40)

NFS服务用户映射原理:(可以画图)

NFS服务相关重要文件:

/etc/exports nfs服务主配置文件
/usr/sbin/showmount 查看nfs服务共享目录信息
/usr/sbin/rpcinfo 查看rpc服务中是否有房源注册信息
/var/lib/nfs/etab 用于查看nfs服务默认配置信息

/proc/mounts nfs客户端mount挂载参数(可以查看默认挂载参数信息)

上一篇:PCB设计规则考量之初识


下一篇:vtigerCRM5.4的安装和汉化 ubuntu