NFS搭建
2021-02-25 本文已影响0人
chenxuyuan123
一:什么是NFS
NFS既网络文件系统,它允许网络中的计算机之间通过TCP/IP网络共享资源.在NFS的应用中,本地NFS的客户端应该可以透明的读写位于远端NFS服务器上的文件,就向访问本地文件一样
没有使用NFS
image.png使用NFS之后
image.png
二:工作原理
NFS在文件传送或者信息传送过程中依赖于RPC协议.RPC是能使客户端执行其他系统中程序的一种机制.NFS本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进行资料的分享,这是因为NFS使用了一些其它的传输协议,而这些传输协议用到这个RPC功能的。可以说NFS本身就是使用RPC的一个程序。或者说NFS也是一个RPC SERVER。所以只要用到NFS的地方都要启动RPC服务,不论是NFS SERVER或者NFS CLIENT。这样SERVER和CLIENT才能通过RPC来实现PROGRAM PORT的对应。可以这么理解RPC和NFS的关系:NFS是一个文件系统,而RPC是负责负责信息的传输
三:部署NFS服务端
3.1 安装NFS
搜索安装包
[root@nfs-31 cxy_shell]# yum search nfs
nfs-utils.x86_64 : NFS utilities and supporting clients and daemons for the kernel NFS server
安装NFS服务
[root@nfs-31 cxy_shell]# yum install nfs-utils.x86_64 -y
当安装这个服务之后,系统会默认增加一个nfsnobody用户和组
3.2 创建www用户
[root@nfs-31 ~]# groupadd -g 666 www
[root@nfs-31 ~]# useradd -M -s /sbin/nologin -u 666 -g 666 www
3.3 配置NFS
修改配置文件
[root@nfs-31 cxy_shell]# vim /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
NFS配置文件参数说明
rw 读写权限
ro 只读权限
root_squash:当 NFS 客户端以 root 管理员访问时,映射为 NFS 服务器的匿名用户(不常用)
no_root_squash:当 NFS 客户端以 root 管理员访问时,映射为 NFS 服务器的 root 管理员(不常用)
all_squash:无论 NFS 客户端使用什么账户访问,均映射为 NFS 服务器的匿名用户(常用)
no_all_squash:无论 NFS 客户端使用什么账户访问,都不进行压缩
sync:同时将数据写入到内存与硬盘中,保证不丢失数据
async:优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据
anonuid:配置 all_squash 使用,指定 NFS 的用户 UID,必须存在系统
anongid:配置 all_squash 使用,指定 NFS 的用户 UID,必须存在系统
3.4 创建/data/目录并且修改权限
[root@nfs-31 ~]#mkdir /data
[root@nfs-31 ~]# chown www:www /data
注意:如果配置文件没有指定uid,gid,会使用软件默认的账户nfsnobody
例如这种配置文件: /data 172.16.1.0/24(rw,sync,all_squash)
就需要修改/data目录的所属用户为nfsnobody
[root@nfs-31 ~]# chown nfsnobody:nfsnobody /data
3.5 启动服务
rpc要优于nfs先启动
[root@nfs-31 ~]#systemctl start rpcbind nfs-server.service
[root@nfs-31 ~]#systemctl enable rpcbind nfs-server.service
查看服务是否运行正常
[root@nfs-31 ~]# showmount -e
Export list for nfs-31:
/data 172.16.1.0/24
四:NFS客户端
4.1 安装NFS
[root@backup-41 ~]# yum install nfs-utils.x86_64 -y
4.2 启动rpc服务
客户端只需要启动rpc服务就可以了
[root@backup-41 ~]# systemctl start rpcbind.service
[root@backup-41 ~]# systemctl enable rpcbind.service
4.3 查看nfs是否正常
[root@backup-41 ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24
4.4 将nfs服务器上的data目录挂载到本地的data目录上
[root@backup-41 /]# mount -t nfs 172.16.1.31:/data /data
注意:如果没有创建www用户,在backup这个主机上看到的文件所属用户和组都是666,所以建议在客户端也创建www用户
[root@backup-41 ~]# groupadd -g 666 www
[root@backup-41 ~]# useradd -M -s /sbin/nologin -u 666 -g 666 www
查看是否挂载成功
[root@backup-41 /]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 17G 1.6G 16G 10% /
devtmpfs 476M 0 476M 0% /dev
tmpfs 488M 0 488M 0% /dev/shm
tmpfs 488M 7.7M 480M 2% /run
tmpfs 488M 0 488M 0% /sys/fs/cgroup
/dev/sda1 1014M 130M 885M 13% /boot
tmpfs 98M 0 98M 0% /run/user/0
172.16.1.31:/data 17G 1.6G 16G 10% /data
4.5 开机自动挂载
[root@backup-41 data]# cat /etc/fstab
172.16.1.31:/data /data nfs defaults 0 0