其他分享
首页 > 其他分享> > NFS网络文件系统

NFS网络文件系统

作者:互联网

目录

1. NFS网络文件系统

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

1.1 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

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

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 服务端编辑配置文件,加载配置

[root@vm3 /]# mkdir -p nfs/{shared,upload}
[root@vm3 nfs]# chmod 777 shared upload
[root@vm3 /]# tree .
.
└── nfs
    ├── shared
    └── upload
[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 客户端挂载配置

[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 测试效果

##服务端共享目录下创建文件
[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

## 客户端上传文件到共享目录
[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