NFS(NetworkFileSystem)网络操作系统
原创NFS介绍 #
NFS(Network File System)
也就是说,网络文件系统,其最大的功能就是打通。 TCP/IP
网络资源共享。在……里面 NFS
在当地的应用中 NFS
客户端应用程序可以在远端透明地读写。 NFS
服务器上的文件就像访问本地文件一样。
NFS
客户端通常是应用服务器(例如 web
、负载平衡等),可以挂载。 NFS
服务器端共享目录已挂载。 NFS
在客户端的本地目录下。
因为 NFS
支持的功能相当多,不同的功能会使用不同的程序来启动。每个功能都将使一些端口能够传输数据。所以呢, NFS
与的功能对应的端口 1024
用于传输的端口。然而,当客户端想要连接到服务器时,这就带来了麻烦,因为客户端需要知道服务器上的相关端口才能连接。
因此,需要远程过程调用。 (RPC)
的服务, RPC
其主要功能是指定每个 NFS
该函数对应 port number
,并返回到客户端,以便客户端可以连接到正确的端口。那 RPC
你是怎么认识每个人的? NFS
那港口呢?这是因为当服务器启动时 NFS
当随机使用多个端口时,并且主动希望 RPC
注册,因此 RPC
您可以知道每个端口都对应。 NFS
函数,然后 RPC
这也是一种固定用途。 port 111
来听取客户的需求,并将它们返回到客户的正确端口,所以你当然可以做到。 NFS
创业更轻松、更愉快。
NFS
文件传输过程中的依赖关系 RPC
(远程过程调用)协议。 NFS
它不提供信息传输的协议和功能,但可以利用网络共享图片、视频、配件等功能。只要它被使用NFS所有地方都需要开始 RPC
服务,无论是 NFS
服务器或客户端。
NFS
和 RPC
关系:可以理解 NFS
是一个网络文件系统(与租房的房主相比),以及 RPC
负责信息的传递(中介)、客户(相当于租客的出租)。
NFS网络文件系统存在的意义。 #
实现数据共享和数据一致性。如图所示:
NFS网络文件系统的工作原理 #
1、在 nfs
服务器端创建一个共享目录。
2、通过 mount
网络挂载,将 NFS
服务器端共享目录装载到 NFS
客户端本地目录
3、 NFS
客户端在装载的目录上创建、删除和查看数据,这相当于在服务器上创建、删除和查看数据。
如上图所示,在 NFS
服务器端建立一个共享目录。 /web
在此之后,其他用户有权访问 NFS
服务器端的客户端可以共享此目录。 /web
挂载到客户端本地的挂载点(实际上,它是一个目录,可以随意指定此挂载点)。不同客户端的装载点可以不同。
在正确挂载客户端之后,它可以通过 NFS
客户端的装载点 /opt/www
目录视图。 NFS
服务端 /web
共享目录中的所有数据。当被客户端查看时, NFS
服务端的 /web
目录相当于客户端的本地磁盘分区或目录,几乎感觉不到使用上的区别。 NFS
服务器端授权 NFS
共享目录的共享权限和本地系统权限,只要在指定 NFS
已装载客户端操作 /opt/www
目录中,您可以轻松地访问数据。 NFS
在服务器端 /web
在目录里。
NFS工作流程 #
RPC服务如何工作 #
NFS部署示例 #
操作系统
角色
IP
HOST
CentOS release 7.4
NFS Server
192.168.1.31
nfs-server.com
CentOS release 7.4
NFS Client1 (web server1)
192.168.1.32
nfs-client1.com
CentOS release 7.4
NFS Client2 (web server2)
192.168.1.33
nfs-client2.com
说明:
这里 NFS
客户端是 web
服务器,站点目录装载 NFS
服务端。
实验环境关闭了防火墙,selinux、时间同步等。
具体操作步骤 #
服务器安装配置
1)检查是否已安装 NFS、RPC
服务
[root@nfs-server ~]# rpm -aq |egrep "nfs-utils|rpcbind" rpcbind-0.2.0-42.el7.x86_64 nfs-utils-1.3.0-0.48.el7.x86_64
如果没有安装,请安装
yum -y install nfs-utils rpcbind
2)启动 rpc
和 nfs
服务
[root@nfs-server ~]# systemctl start rpcbind [root@nfs-server ~]# systemctl enable rpcbind [root@nfs-server ~]# systemctl start nfs
3)可以通过 rpcinfo -p localhost
您可以查看绑定。 nfs
[root@nfs-server ~]# 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 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 100024 1 udp 60358 status 100024 1 tcp 34912 status 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 38577 nlockmgr 100021 3 udp 38577 nlockmgr 100021 4 udp 38577 nlockmgr 100021 1 tcp 42193 nlockmgr 100021 3 tcp 42193 nlockmgr 100021 4 tcp 42193 nlockmgr
4)配置共享目录并重新启动 nfs
[root@nfs-server ~]# mkdir /web [root@nfs-server ~]# vim /etc/exports /web 192.168.1.0/24(rw,sync,no_root_squash) #不压制root(当client端使用root挂载后,还有root权限) [root@nfs-server ~]# systemctl restart nfs [root@nfs-server ~]# exportfs -v /web 192.168.1.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)
客户端装载测试
1创建装载目录并装载它。
[root@nfs-client1 ~]# mkdir /opt/www 如果没有showmount命令: yum -y install showmount [root@nfs-client1 ~]# showmount -e 192.168.1.31 #查看服务器共享目录 Export list for 192.168.1.31: /web 192.168.1.0/24 [root@nfs-client1 ~]# mount -t nfs 192.168.1.31:/web /opt/www/ [root@nfs-client1 ~]# df -h 文件系统 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root 20G 3.6G 16G 19% / devtmpfs 473M 0 473M 0% /dev tmpfs 489M 0 489M 0% /dev/shm tmpfs 489M 14M 475M 3% /run tmpfs 489M 0 489M 0% /sys/fs/cgroup /dev/sda1 497M 154M 344M 31% /boot tmpfs 98M 0 98M 0% /run/user/0 192.168.1.31:/web 20G 3.6G 16G 19% /opt/www [root@nfs-client1 ~]# [root@nfs-client1 ~]# vim /etc/fstab #启动自动装载 192.168.1.31:/web /opt/www nfs defaults 0 0
2)在 client1
上的 /opt/www
创建测试文件
[root@nfs-client1 ~]# echo "client1 create test file" >> /opt/www/client1.txt
3)回到 nfs
查看日期
[root@nfs-server ~]# ll /web/ 总用量 4 -rw-r--r-- 1 root root 25 8月 9 14:41 client1.txt
4)安装 nginx
并配置站点目录 /opt/www
[root@nfs-client1 ~]# yum -y install nginx [root@nfs-client1 ~]# vim /etc/nginx/nginx.conf server { listen 80 default_server; listen [::]:80 default_server; server_name _; root /opt/www; ... [root@nfs-client1 ~]# systemctl start nginx
上述步骤也在 client2
以上操作。
在nfs服务器创建站点的主页并访问它。client客户端测试
[root@nfs-server ~]# ll /web/ 总用量 8 -rw-r--r-- 1 root root 25 8月 9 14:41 client1.txt -rw-r--r-- 1 root root 25 8月 9 15:37 client2.txt
[root@nfs-server ~]# echo "
NFS server
" >> /web/index.html #nfs服务器端共享目录以创建主页文件。 [root@nfs-server ~]# curl 192.168.1.32NFS server
[root@nfs-server ~]# [root@nfs-server ~]# curl 192.168.1.33
NFS server
[root@nfs-client1 ~]# ll /opt/www/ #nfs客户端1上查看 总用量 12 -rw-r--r-- 1 root root 25 8月 9 14:41 client1.txt -rw-r--r-- 1 root root 25 8月 9 15:37 client2.txt -rw-r--r-- 1 root root 20 8月 9 15:41 index.html
[root@nfs-client2 ~]# ll /opt/www/ #nfs客户端2上查看 总用量 12 -rw-r--r-- 1 root root 25 8月 9 14:41 client1.txt -rw-r--r-- 1 root root 25 8月 9 15:37 client2.txt -rw-r--r-- 1 root root 20 8月 9 15:41 index.html
从测试中可以看出,客户端挂载后,完全相当于它自己的一个目录或文件。在负载均衡架构中,一般以这种方式用于共享存储。
NFS配置参数说明 #
nfs共享参数和函数 #
通过 man exports
您可以查看帮助手册。
共享参数
作用
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的用户GID,一定要有一个系统
配置示例说明 #
[root@nfs-server ~]# cat /etc/exports
/web 192.168.1.0/24(rw,sync,no_root_squash) #不压制root(当client端使用root挂载后,还有root权限)
/web 192.168.1.32(rw,sync,no_root_squash) 192.168.1.33(rw,sync,all_squash,anonuid=2000,anongid=2000)
[共享目录] [客户端地址1(权限)] [客户端地址2(权限)]
1,共享目录:每行前面是共享目录,例如,我想在上面共享/web目录,则可以直接写入该选项。/web目录,可以根据不同的权限共享到不同的目录。 2客户端地址:客户端地址可以设置一个网络或一台主机。参数:读写权限如上rw,同步更新sync等待。
1,客户端地址可以使用完整的IP或网络号,例如192.168.1.33或192.168.1.0/24
2也可以使用主机名,但此主机名必须在/etc/hosts存在于中,或可以传递。DNS除非你找到它。
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除