rsync端口 873
RPC端口 111
NFS端口 不确定
一 、 NFS 简介和架构图
NFS是Network File System的缩写,即网络文件系统。一种使用于分散式文件协定,功能是通过网络让不同的机器、不同的操作系统能够分享个人数据,让应用程序通过网络可以访问位于服务器磁盘中的数据。 NFS在文件传送或信息传送的过过程中,依赖于RPC协议。RPC,远程过程调用(Remote Procedure Call),是使客户端能够执行其他系统中程序的一种机制。NFS本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进行资料的分享,就是因为NFS使用了RPC提供的传输协议,可以说NFS就是使用PRC的一个程序。
NFS 存储 服务器主要用于用户上传的数据 ,图片 音频 、等信息
不知道什么是NFS!那就先看图
NFS服务端、RPC协议、客户端三者可以理解为房源、中介、租客之间的关系:
NFS服务原理图
二、准备环境
机器
web01
nfs01
软件
RPC 服务 :rpcbind(C 6 & C 7) portmap(C 5)
nfs服务: nfs-utils
1.安装软件:
yum install -y nfs-utils rpcbind
安装成功后检查安装包
nfs01:
[15:32 root@nfs01 ~]# rpm -qa nfs-utils rpcbind
rpcbind-0.2.0-47.el7.x86_64
nfs-utils-1.3.0-0.61.el7.x86_64
web01
[15:32 root@web01 ~]# rpm -qa nfs-utils rpcbind
nfs-utils-1.3.0-0.61.el7.x86_64
rpcbind-0.2.0-47.el7.x86_64
首先在nfs01服务端操作
2.启动rpc服务并查看注册信息
systemctl restart rpcbind
rpcinfo -p
[15:32 root@nfs01 ~]# systemctl start rpcbind.service
[15:36 root@nfs01 ~]# #查看rpc服务里面的注册信息
[15:37 root@nfs01 ~]# rpcinfo -p
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
3.启动nfs服务并查看注册信息
systemctl restart nfs
rpcinfo -p
[15:37 root@nfs01 ~]# systemctl restart nfs
[15:37 root@nfs01 ~]# #查看rpc服务里面的注册信息
[15:38 root@nfs01 ~]# rpcinfo -p
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
100024 1 udp 34623 status
100024 1 tcp 40441 status
100005 1 udp 20048 mountd
100005 1 tcp 20048 mountd
100005 2 udp 20048 mountd
100005 2 tcp 20048 mountd
100005 3 udp 20048 mountd
100005 3 tcp 20048 mountd
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 3 tcp 2049 nfs_acl
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100227 3 udp 2049 nfs_acl
100021 1 udp 39890 nlockmgr
100021 3 udp 39890 nlockmgr
100021 4 udp 39890 nlockmgr
100021 1 tcp 43375 nlockmgr
100021 3 tcp 43375 nlockmgr
100021 4 tcp 43375 nlockmgr
4.用户映射 rpc.idmapd
名字映射后台进程
不管哪个用户进入nfs,都属于nfsnobody,在安装nfs时默认创建了这个用户
[15:45 root@nfs01 ~]# id nfsnobody
uid=65534(nfsnobody) gid=65534(nfsnobody) groups=65534(nfsnobody)
5.nfs配置文件/etc/exports
1.nfs配置文件/etc/exports
2.reload平滑重启,优雅重启
不中断当前正在处理的请求 影响新的请求
注意:nfs尽量不要使用restart重启 使用之后会卡住90s
3.检查放在具体信息 可以挂载什么
showmount -e
-e:显示NFS服务器上所有的共享目录
[5:50 root@nfs01 ~]# vim /etc/exports
#share /upload
/upload 172.16.1.0/24(rw)
[15:55 root@nfs01 ~]# cat /etc/exports
#share /upload
/upload 172.16.1.0/24(rw)
[15:55 root@nfs01 ~]# mkdir -p /upload
[15:56 root@nfs01 ~]# chown nfsnobody.nfsnobody /upload/
[15:56 root@nfs01 ~]# systemctl reload nfs
[15:56 root@nfs01 ~]# #检查 挂载信息
[15:56 root@nfs01 ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/upload 172.16.1.0/24
6.在nfs01服务端进行挂载测试
[16:07 root@nfs01 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 19G 1.7G 18G 9% /
devtmpfs 980M 0 980M 0% /dev
tmpfs 991M 0 991M 0% /dev/shm
tmpfs 991M 9.6M 981M 1% /run
tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/sda1 197M 105M 93M 54% /boot
tmpfs 199M 0 199M 0% /run/user/0
[16:07 root@nfs01 ~]# mount -t nfs 172.16.1.31:/upload/ /mnt/
[16:07 root@nfs01 ~]# # 查看一下是否挂载成功
[16:07 root@nfs01 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 19G 1.7G 18G 9% /
devtmpfs 980M 0 980M 0% /dev
tmpfs 991M 0 991M 0% /dev/shm
tmpfs 991M 9.6M 981M 1% /run
tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/sda1 197M 105M 93M 54% /boot
tmpfs 199M 0 199M 0% /run/user/0
172.16.1.31:/upload 19G 1.7G 18G 9% /mnt
[16:07 root@nfs01 ~]# touch /mnt/oldboy.txt
[16:07 root@nfs01 ~]# ll /upload/
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 May 22 16:07 oldboy.txt
#目录可以理解为/upload/目录就等于/mnt/目录了,都有相同的内容
7.接着按上面的步骤给web01客户端进行挂载测试
把nfs upload目录挂载到/video目录
1.启动rpc服务
在客户端可以不启动rpc服务和NFS服务,在NFS服务端启动就可以了
[16:16 root@web01 ~]# systemctl restart rpcbind.service
[16:17 root@web01 ~]# rpcinfo -p
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
2.启动nfs
[16:18 root@web01 ~]# systemctl restart nfs
[16:18 root@web01 ~]# rpcinfo -p
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
省略....
3.检查放在具体信息 可以挂载什么
[16:23 root@web01 ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/upload 172.16.1.7/24
4.把nfs upload目录挂载到/video目录
[16:24 root@web01 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 19G 1.7G 18G 9% /
devtmpfs 980M 0 980M 0% /dev
tmpfs 991M 0 991M 0% /dev/shm
tmpfs 991M 9.6M 981M 1% /run
tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/sda1 197M 105M 93M 54% /boot
tmpfs 199M 0 199M 0% /run/user/0
[16:24 root@web01 ~]# mkdir /video \\创建video目录
[16:25 root@web01 ~]# mount -t nfs 172.16.1.31:/upload/ /video/
[16:25 root@web01 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 19G 1.7G 18G 9% /
devtmpfs 980M 0 980M 0% /dev
tmpfs 991M 0 991M 0% /dev/shm
tmpfs 991M 9.6M 981M 1% /run
tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/sda1 197M 105M 93M 54% /boot
tmpfs 199M 0 199M 0% /run/user/0
172.16.1.31:/upload 19G 1.7G 18G 9% /video
三、NFS权限控制
配置文件中权限 /etc/exports
Linxu服务端 共享目录权限 755 nfsnobody
四、nfs配置文件详解
1.测试一下nfs配置文件
在nfs01和web01创建指定的www虚拟用户
[17:44 root@nfs01 ~]# groupadd -g 888 www
[17:44 root@nfs01 ~]# useradd -u 888 -g www -s /sbin/nologin -M www
[17:45 root@nfs01 ~]# id www
uid=888(www) gid=888(www) groups=888(www)
[17:44 root@web01 ~]# groupadd -g 888 www
[17:44 root@web01 ~]# useradd -u 888 -g www -s /sbin/nologin -M www
[17:45 root@web01 ~]# id www
uid=888(www) gid=888(www) groups=888(www)
2.修改配置文件中的权限/etc/exports
[17:45 root@nfs01 ~]# vim /etc/exports
#share /upload
/upload 172.16.1.0/24(rw)
/nfs 172.16.1.0/24(rw,all_squash,anonuid=888,anongid=888)
#/upload 172.16.1.7(rw) 10.0.0.7(rw)
[17:47 root@nfs01 ~]# systemctl reload nfs
3.创建一个/nfs目录并授权为www用户
[17:50 root@nfs01 ~]# mkdir -p /nfs
[17:50 root@nfs01 ~]# chown www.www /nfs
[17:50 root@nfs01 ~]# ll /nfs/
total 0
4.接着我们去web01客户端
创建/nfs目录,并检查放在具体信息 可以挂载什么
[17:47 root@web01 ~]# mkdir -p /nfs
[17:50 root@web01 ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/nfs 172.16.1.0/24
/upload 172.16.1.0/24
5.在web01客户端进行挂载测试
挂载完成后查看一下是否挂载成功
[17:53 root@web01 ~]# mount -t nfs 172.16.1.31:/nfs/ /mnt/
[17:54 root@web01 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 19G 1.7G 18G 9% /
devtmpfs 980M 0 980M 0% /dev
tmpfs 991M 0 991M 0% /dev/shm
tmpfs 991M 9.6M 981M 1% /run
tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/sda1 197M 105M 93M 54% /boot
172.16.1.31:/upload 19G 1.7G 18G 9% /video
tmpfs 199M 0 199M 0% /run/user/0
172.16.1.31:/nfs 19G 1.7G 18G 9% /mnt
6.接着我们在挂载的目录/mnt/下创建文件测试一下
[17:54 root@web01 ~]# touch /mnt/{01..10}.txt
[17:54 root@web01 ~]# ll /mnt/
total 0
-rw-r--r-- 1 www www 0 May 22 17:54 01.txt
-rw-r--r-- 1 www www 0 May 22 17:54 02.txt
-rw-r--r-- 1 www www 0 May 22 17:54 03.txt
-rw-r--r-- 1 www www 0 May 22 17:54 04.txt
-rw-r--r-- 1 www www 0 May 22 17:54 05.txt
-rw-r--r-- 1 www www 0 May 22 17:54 06.txt
-rw-r--r-- 1 www www 0 May 22 17:54 07.txt
-rw-r--r-- 1 www www 0 May 22 17:54 08.txt
-rw-r--r-- 1 www www 0 May 22 17:54 09.txt
-rw-r--r-- 1 www www 0 May 22 17:54 10.txt
7.我们可以去nfs01服务端查看/nfs/共享目录看一下有没有
[17:56 root@nfs01 ~]# ll /nfs/
total 0
-rw-r--r-- 1 www www 0 May 22 17:55 01.txt
-rw-r--r-- 1 www www 0 May 22 17:55 02.txt
-rw-r--r-- 1 www www 0 May 22 17:55 03.txt
-rw-r--r-- 1 www www 0 May 22 17:55 04.txt
-rw-r--r-- 1 www www 0 May 22 17:55 05.txt
-rw-r--r-- 1 www www 0 May 22 17:55 06.txt
-rw-r--r-- 1 www www 0 May 22 17:55 07.txt
-rw-r--r-- 1 www www 0 May 22 17:55 08.txt
-rw-r--r-- 1 www www 0 May 22 17:55 09.txt
-rw-r--r-- 1 www www 0 May 22 17:55 10.txt
ro | 只读访问 |
---|---|
rw | 读写访问 |
sync | 所有数据在请求时写入共享 |
async | NFS在写入数据前可以相应请求 |
all_squash | 共享文件的UID和GID映射匿名用户anonymous,适合公用目录。 |
no_all_squash | 保留共享文件的UID和GID(默认) |
root_squash | root用户的所有请求映射成如anonymous用户一样的权限(默认) |
no_root_squash | root用户具有根目录的完全管理访问权限 |
五.客户端挂载信息与服务端配置共享的参数
1.客户端挂载信息 /proc/mounts
实例:
[17:55 root@web01 ~]# egrep '/nfs|/video' /proc/mounts
sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw,relatime 0 0
nfsd /proc/fs/nfsd nfsd rw,relatime 0 0
172.16.1.31:/upload /video nfs4 rw,relatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=172.16.1.7,local_lock=none,addr=172.16.1.31 0 0
172.16.1.31:/nfs /mnt nfs4 rw,relatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=172.16.1.7,local_lock=none,addr=172.16.1.31 0 0
2.服务端配置共享的参数/var/lib/nfs/etab
exports tables nfs 服务端共享信息
实例:
[17:56 root@nfs01 ~]# cat /var/lib/nfs/etab
/nfs 172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=888,anongid=888,sec=sys,rw,secure,root_squash,all_squash)
/upload 172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,secure,root_squash,all_squash)
找工作必备的技能
未完待续....