ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

NFS网络文件系统

2020-10-13 09:03:26  阅读:232  来源: 互联网

标签:upload 文件系统 网络 NFS nfs root vm3 客户端


目录

1. NFS网络文件系统

它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件,PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统中来看,那个远程主机的目录就好像是自己的一个磁盘分区一样.
nfs是运行在应用层的协议,其监听于2049/tcp和2049/udp套接字上
nfs是基于rpc来实现网络文件系统共享的.

1.1 NFS通讯过程

  • 1.服务器端启动RPC服务,并开启111端口
  • 2.服务器端启动NFS-server服务,并向RPC注册端口信息
  • 3.客户端启动RPC服务,并向服务端的RPC服务请求服务端NFS端口
  • 4.服务端的RPC服务反馈NFS端口信息给客户端
  • 5.客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据传输

1.2 NFS相关文件

/etc/exports文件

NFS主要配置文件
<共享目录> [客户端1(选项1,选项2,...)] [客户端2(选项1,选项2,...)]

## 选项参数
ro	//只读
rw	//读写
root_squash	//当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户
no_root_squash	//当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员
all_squash	//无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户
sync	//同时将数据写入到内存与硬盘中,保证不丢失数据
async	//优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据
anonuid  //将远程访问的所有用户都映射为匿名用户,并指定该匿名用户为本地用户帐户(UID=xxx)
anongid  //将远程访问的所有用户组都映射为匿名用户组,并指定该匿名用户组为本地用户组(GID=xxx)
secure	//限制客户端只能从小于1024的TCP/IP端口连接NFS服务器(默认设置)
insecure  //允许客户端从大于1024的TCP/IP端口连接NFS服务器
wdelay	//检查是否有相关的写操作,如果有则这些写操作一起执行,可提高效率(默认设置)
no_wdelay	//若有写操作则立即执行,应与sync配置使用
subtree_check	//若输出目录是一个子目录,则NFS服务器将检查其父目录的权限(默认设置)
no_subtree_check  //即使输出目录是一个子目录,NFS服务亦不检查其父目录的权限,可提高效率
nohide	//若将一个目录挂载到另一个目录之上,则原来的目录通常就被隐藏起来或看起来像空的一样。要禁用这种行为,需启用hide选项

/usr/bin/exportfs

用于服务端维护NFS分享资源,可以重新加载/etc/exports文件的配置

exportfs
    -a      //输出在/etc/exports文件中所设置的所有目录
    -r      //重新读取/etc/exports文件中的设置,并使其立即生效,无需重启服务
    -u      //停止输出某一目录
    -v      //在输出目录时将目录显示到屏幕上

/var/lib/nfs/etab

主要记录了 NFS 所分享出来的目录的完整权限设定值

##例子
/nfs/upload     172.16.104.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,secure,root_squash,no_all_squash)

/usr/sbin/showmount

用于客户端查看服务端共享的NFS目录资源

//语法:showmount [选项] [NFS服务器名称或地址]
//常用的选项有:
    -a  //显示指定NFS服务器的所有客户端主机及其所连接的目录
    -d  //显示指定的NFS服务器中已被客户端连接的所有输出目录
    -e  //显示指定的NFS服务器上所有输出的共享目录

2. RPC远程过程调用协议

RPC(Remote Procedure Call Protocol),远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务
RPC就是用来统一管理NFS端口的服务,并且统一对外的端口是111,RPC会记录NFS端口的信息,如此我们就能够通过RPC实现服务端和客户端沟通端口信息。

2.1 NFS服务端相关进程

idmapd  //实现用户帐号的集中映射,把所有的帐号都映射为NFSNOBODY,但是在访问时却能以本地用户的身份去访问

mountd  //用于验证客户端是否在允许访问此NFS文件系统的客户端列表中,在则允许访问,否则拒绝访问
        //mountd的服务端口是随机的,由rpc服务(portmapper)提供随机端口号

nfsd    //nfs的守护进程,监听在2049/tcp和2049/udp端口上
        //不负责文件存储(由NFS服务器本地内核负责调度存储),用于理解客户端发起的rpc请求,并将其转交给本地内核,而后存储在指定的文件系统上

portmapper  //NFS服务器的rpc服务,其监听于111/TCP和111/UDP套接字上,用于管理远程过程调用(RPC)

3.搭建NFS服务

3.1 安装nfs-util,rpcbind

  • nfs-utils

提供 rpc.nfsd 及 rpc.mountd 这两个 NFS daemons 与其他相关 documents 与说明文件、执行文件等的软件!这个就是 NFS 服务所需要的主要软件。

  • rpcbind

RPC主程序,提供port的映射(mapping)

## 客户端与服务端都需要下载这两个软件
yum -y install rpcbind nfs-utils

3.2 启动服务

  • 服务端

在启动NFS SERVER之前,首先要启动RPC服务(即portmap服务,下同)否则NFS SERVER就无法向RPC服务区注册,另外,如果RPC服务重新启动,原来已经注册好的NFS端口数据就会全部丢失。因此此时RPC服务管理的NFS程序也要重新启动以重新向RPC注册。特别注意:一般修改NFS配置文档后,是不需要重启NFS的,直接在命令执行systemctl reload nfs或exportfs –rv即可使修改的/etc/exports生效

[root@vm3 upload]# systemctl start rpcbind
[root@vm3 upload]# systemctl enable rpcbind
[root@vm3 upload]# systemctl status rpcbind
● rpcbind.service - RPC Bind
   Loaded: loaded (/usr/lib/systemd/system/rpcbind.service; enabled; vendor preset:>
   Active: active (running) since Sat 2020-10-10 09:59:14 CST; 1h 28min ago
     Docs: man:rpcbind(8)
 Main PID: 38185 (rpcbind)
[root@vm3 upload]# systemctl start nfs-server
[root@vm3 upload]# systemctl enable nfs-server
[root@vm3 upload]# systemctl status nfs-server
● nfs-server.service - NFS server and services
   Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; enabled; vendor pres>
  Drop-In: /run/systemd/generator/nfs-server.service.d
           └─order-with-mounts.conf
   Active: active (exited) since Sat 2020-10-10 09:59:16 CST; 1h 30min ago
 Main PID: 38215 (code=exited, status=0/SUCCESS)
    Tasks: 0 (limit: 12322)
   Memory: 0B
   CGroup: /system.slice/nfs-server.service
  • 客户端
[root@vm2 upload]# systemctl start rpcbind
[root@vm2 upload]# systemctl enable rpcbind
[root@vm2 upload]# systemctl status rpcbind
● rpcbind.service - RPC bind service
   Loaded: loaded (/usr/lib/systemd/system/rpcbind.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2020-10-12 16:09:26 CST; 1h 34min ago
 Main PID: 1439 (rpcbind)
   CGroup: /system.slice/rpcbind.service
           └─1439 /sbin/rpcbind -w

3.3 服务端编辑配置文件,加载配置

  • 创建nfs共目录
[root@vm3 /]# mkdir -p nfs/{shared,upload}
[root@vm3 nfs]# chmod 777 shared upload
[root@vm3 /]# tree .
.
└── nfs
    ├── shared
    └── upload
  • /etc/exports
[root@vm3 upload]# vim /etc/exports
/nfs/shared *(rw,no_root_squash,all_squash)
/nfs/upload 172.16.104.0/24(rw,anonuid=1001,anongid=1001,all_squash)
  • 加载配置文件
[root@vm3 upload]# systemctl reload nfs-server
### 或者
[root@vm3 upload]# exportfs -rv
exporting 172.16.104.0/24:/nfs/upload
exporting *:/nfs/shared

3.4 客户端挂载配置

  • showmount 查看服务器共享文件
[root@vm2 upload]# showmount -e 172.16.104.132
Export list for 172.16.104.132:
/nfs/shared *
/nfs/upload 172.16.104.0/24
  • 挂载共享目录
[root@vm2 mnt]# mkdir shared upload
[root@vm2 mnt]# vi /etc/fstab 
172.16.104.132:/nfs/shared /mnt/shared nfs defaults,_netdev 0 0
172.16.104.132:/nfs/upload /mnt/upload nfs defaults,_netdev 0 0
[root@vm2 mnt]# mount -a
  • 查看挂载状态
[root@vm2 mnt]# df -hT
Filesystem                 Type      Size  Used Avail Use% Mounted on
devtmpfs                   devtmpfs  979M     0  979M   0% /dev
tmpfs                      tmpfs     991M     0  991M   0% /dev/shm
tmpfs                      tmpfs     991M  9.5M  981M   1% /run
tmpfs                      tmpfs     991M     0  991M   0% /sys/fs/cgroup
/dev/mapper/centos-root    xfs        17G  1.4G   16G   9% /
/dev/sda1                  xfs      1014M  137M  878M  14% /boot
tmpfs                      tmpfs     199M     0  199M   0% /run/user/0
172.16.104.132:/nfs/shared nfs4       17G  2.0G   16G  12% /mnt/shared
172.16.104.132:/nfs/upload nfs4       17G  2.0G   16G  12% /mnt/upload

3.5 测试效果

  • 1
##服务端共享目录下创建文件
[root@vm3 nfs]# cd shared/
[root@vm3 shared]# touch abc
[root@vm3 shared]# ll
total 0
-rw-r--r--. 1 root root 0 Oct 10 11:53 abc
[root@vm3 shared]# cd ..
[root@vm3 nfs]# cd upload/
[root@vm3 upload]# 
[root@vm3 upload]# touch abc
[root@vm3 upload]# ll
total 0
-rw-r--r--. 1 root root 0 Oct 10 11:54 abc
[root@vm3 nfs]# tree .
.
├── shared
│   └── abc
└── upload
    └── abc
##查看客户端共享目录
[root@vm2 mnt]# cd shared/
[root@vm2 shared]# ll
total 0
-rw-r--r--. 1 root root 0 Oct 10 11:53 abc
[root@vm2 shared]# cd ../upload/
[root@vm2 upload]# ll
total 0
-rw-r--r--. 1 root root 0 Oct 10 11:54 abc

  • 2
## 客户端上传文件到共享目录
[root@vm2 upload]# ll
total 0
-rw-r--r--. 1 root root 0 Oct 10 11:54 abc
[root@vm2 upload]# touch vm2
[root@vm2 upload]# ll
total 0
-rw-r--r--. 1 root root 0 Oct 10 11:54 abc
-rw-r--r--. 1 1001 1001 0 Oct 10 11:58 vm2
##客户端用户映射为anonuid=1001,anongid=1001
##查看服务端共享目录
[root@vm3 upload]# ll
total 0
-rw-r--r--. 1 root  root  0 Oct 10 11:54 abc
-rw-r--r--. 1 wisan wisan 0 Oct 10 11:58 vm2
[root@vm3 upload]# id wisan
uid=1001(wisan) gid=1001(wisan) groups=1001(wisan)

标签:upload,文件系统,网络,NFS,nfs,root,vm3,客户端
来源: https://www.cnblogs.com/fyjpeng/p/13806772.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有