NFS网络文件系统(网络共享文件服务)
01. 什么是NFS
NFS是Network File System的缩写,中文意思是网络文件系统,
它的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录
互联网中小型网站集群机构后端常用NFS进行数据共享,
如果大型网站,那么有可能还会用到更复杂的分布式文件系统,例如:Moosefs(mfs)、GlusterFS、FastDFS
后面会发不关于分布式存储的文章(从0基础学习分布式存储)
说明:NFS服务只能应用在linux系统上,FTP samba服务均都支持linux和windows
02. NFS服务应用
NFS是一个共享存储服务,为什么要有共享存储?
-
实现数据信息的共享(数据库内容)
- 实现数据信息的一致 (网站代码、展示内容)
03. 共享存储方式
硬件实现共享存储
IBM oracle EMC == 去除IOE
软件实现共享存储
NFS FTP samba
04. NFS共享系统原理
- 在NFS服务端创建共享目录
- 通过mount网络挂载,将NFS客户端本地目录挂载到NFS服务端共享目录上
- NFS客户端挂载目录上创建、删除、查看数据操作,等价于在服务端进行的创建 删除 查看操作
05. 什么是RPC(Remote Procedure Call)
RPC服务相当于中介,NFS相当于房源,NFS客户端相当于租客
06. NFS的工作流程原理
客户端 3步操作
服务端 3步操作
07. NFS服务部署过程
服务端部署
第一个历程碑:检查NFS RPC服务软件有没有安装
rpm -qa|grep nfs
rpm -qa|grep rpc
说明:默认centos系统没有安装nfs与rpc服务软件
第二个历程碑:进行yum安装nfs与rpc服务软件
yum install -y nfs-utils rpcbind
rpm -ql nfs-utils -ql 参数表示查看安装好的软件,都安装了哪些信息
/etc/rc.d/init.d/nfs -- 启动脚本命令
/usr/sbin/exportfs -- NFS共享服务的管理命令
/usr/sbin/showmount -- 查看NFS共享列表信息
rpm -ql rpcbind
/etc/rc.d/init.d/rpcbind -- 启动脚本命令
/usr/sbin/rpcinfo -- 查看NFS注册信息的
rpm -qf `which ssh` -- 查看某个命令或文件属于那个大礼包
第三个里程碑:进行NFS配置文件编写
#NFS服务配置文件
cat >>/etc/exports<
第四个历程碑:创建共享目录
mkdir -p /data
chown -R nfsnobody.nfsnobody /data
说明:nfsnobody用户是在进行nfs软件yum安装时,自动创建的
第五个历程碑:启动服务
启动服务
[root@nfs01 data]# /etc/init.d/rpcbind start
Starting rpcbind: [ OK ]
查看rpc注册信息
[root@nfs01 data]# 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
[root@nfs01 data]#
在启动nfs服务
[root@nfs01 data]# /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 ]
[root@nfs01 data]# 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 42079 mountd
100005 1 tcp 32847 mountd
100005 2 udp 41905 mountd
100005 2 tcp 54575 mountd
100005 3 udp 34390 mountd
100005 3 tcp 51479 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 63443 nlockmgr
100021 3 udp 63443 nlockmgr
100021 4 udp 63443 nlockmgr
100021 1 tcp 29131 nlockmgr
100021 3 tcp 29131 nlockmgr
100021 4 tcp 29131 nlockmgr
[root@nfs01 data]#
将服务设置为开机自启动
# chkconfig rpcbind on
# chkconfig nfs on
rpc和nfs的配置文件
[root@nfs01 data]# chkconfig rpcbind on
[root@nfs01 data]# chkconfig nfs on
[root@nfs01 data]# vim /etc/init.d/rpcbind
[root@nfs01 data]# vim /etc/init.d/nfs
第六个历程碑:检查NFS服务配置,以及本地测试挂载
[root@nfs01 data]# showmount -e localhost
Export list for localhost:
/data 172.16.1.0/24
[root@nfs01 data]#
#本地挂载
[root@nfs01 ~]# mount -t nfs 172.16.1.31:/data/ /mnt/
[root@nfs01 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 19G 1.5G 16G 9% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 190M 35M 146M 19% /boot
172.16.1.31:/data/ 19G 1.5G 16G 9% /mnt
[root@nfs01 ~]#
#NFS客户端配置
第一个里程碑:安装相应nfs客户端软件
yum install -y rpcbind nfs-utils
如果不安装rpcbind软件:rpcinfo命令无法使用
如果不安装nfs-utils软件:showmount命令无法使用;客户端挂载的时候无法识别nfs文件系统类型
第二个里程碑:rpcbind服务可以启动(也可以不启动)
/etc/init.d/rpcbind start
第三个里程碑:进行挂载前测试
[root@backup ~]# rpcinfo -p 172.16.1.31
[root@backup ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24
[root@backup ~]#
第四个里程碑:进行共享目录挂载
[root@backup ~]# mount -t nfs 172.16.1.31:/data /root/date/
[root@backup ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 19G 1.5G 16G 9% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 190M 35M 146M 19% /boot
172.16.1.31:/data 19G 1.5G 16G 9% /root/date
[root@backup ~]#
08、exports配置文件格式
NFS共享目录 NFS客户端地址1(参数1,参数2,...) 客户端地址2(参数1,参数2,...)
或
NFS共享目录 NFS客户端地址(参数1,参数2,...)
exports配置文件重要参数说明
no_root_squash --- root用户不进行映射压缩
root_squash --- root用户进行映射压缩
all_squash --- 所有用户都进行压缩
no_all_squash --- 所有用户都不进行压缩