文件共享——NFS

NFS(NetworkFileSystem)即网络文件系统,是Linux/Unix支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。

RPC(Remote Procedure Call Protocol远程过程调用协议):
简单的说是函数调用(远程主机上的函数) 一部分功能由本地程序完成 另一部分功能由远程主机上的函数完成。客户端挂载了nfs服务器的文件系统时,进行一些操作,但是这些操作服务端如何知道呢??这可是在内核级别上实现协议。RPC就解决了这个问题,它会将客户端的操作的函数调用发送到服务器端,由服务器端执行这些函数调用。

下面进行一个实例来完成nfs共享的完成

需求

在虚拟机 server0 上配置NFS服务,完成以下任务:
1.只读的方式共享目录 /public,只能被 example.com 域中的系统访问
2.可读写共享目录/protected,能被 example.com 域中的系统访问
然后在虚拟机 desktop0 上访问NFS共享目录
1.将 server0 的 /public 挂到本地 /mnt/nfsmount
2.这些文件系统在系统启动时自动挂载

解决方案

1.服务端需要运行系统服务 nfs-server.service
2.客户端不需要运行特定的系统服务
3.配置NFS共享目录的记录格式:
文件夹绝对路径 客户地址1(ro或rw等控制参数) 客户地址2(ro或rw等控制参数) … …

步骤

步骤一:在server0上发布NFS共享目录

1)准备需要共享的文件夹

[root@server0 桌面]# mkdir /public
[root@server0 桌面]# mkdir /protected

2)建立NFS共享配置

[root@server0 桌面]# vim /etc/exports
/public         192.168.82.0/24(ro)
/protected     192.168.82.0/24(rw)

3)启动系统服务nfs-server,并设置开机自启

[root@server0 桌面]# systemctl restart nfs-server
[root@server0 桌面]# systemctl enable nfs-server

步骤二:在desktop0上挂载NFS共享目录/public

1)创建挂载点

[root@desktop0 桌面]# mkdir /mnt/nfsmount

2)列出server0上提供的NFS共享资源

[root@desktop0 桌面]# showmount -e 192.168.82.76
Export list for 192.168.82.76:
/protected 192.168.82.0/24
/public    192.168.82.0/24

3)配置开机挂载server0的NFS共享目录/public

192.168.82.76:/public   /mnt/nfsmount   nfs    _netdev  0   0

4)测试挂载配置

[root@desktop0 桌面]# mount -a
[root@desktop0 桌面]# df  -hT  /mnt/nfsmount/
文件系统              类型  容量  已用  可用 已用% 挂载点
192.168.82.76:/public nfs4   18G  4.5G   14G   26% /mnt/nfsmount





[root@server0 桌面]# ps -ef |egrep "rpc|nfs"         #查看nfs的相进程
root        740      2  0 07:56 ?        00:00:00 [rpciod]
rpcuser    6011      1  0 09:48 ?        00:00:00 /usr/sbin/rpc.statd --no-notify
rpc        6013      1  0 09:48 ?        00:00:00 /sbin/rpcbind -w
root       6014      1  0 09:48 ?        00:00:00 /usr/sbin/rpc.mountd
root       6023      1  0 09:48 ?        00:00:00 /usr/sbin/rpc.idmapd
root       6028      2  0 09:48 ?        00:00:00 [nfsd4]
root       6029      2  0 09:48 ?        00:00:00 [nfsd4_callbacks]
root       6033      2  0 09:48 ?        00:00:00 [nfsd]
root       6034      2  0 09:48 ?        00:00:00 [nfsd]
root       6035      2  0 09:48 ?        00:00:00 [nfsd]
root       6036      2  0 09:48 ?        00:00:00 [nfsd]
root       6037      2  0 09:48 ?        00:00:00 [nfsd]
root       6038      2  0 09:48 ?        00:00:00 [nfsd]
root       6039      2  0 09:48 ?        00:00:00 [nfsd]
root       6040      2  0 09:48 ?        00:00:00 [nfsd]
root       6161   5747  0 09:54 pts/0    00:00:00 grep -E --color=auto rpc|nfs

nfs的端口映射

  [root@server0 桌面]# 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
        100024    1   udp  53698  status
        100024    1   tcp  50475  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  45742  nlockmgr
        100021    3   udp  45742  nlockmgr
        100021    4   udp  45742  nlockmgr
        100021    1   tcp  37199  nlockmgr
        100021    3   tcp  37199  nlockmgr
        100021    4   tcp  37199  nlockmgr

猜你喜欢

转载自blog.csdn.net/qq_43237999/article/details/88855347
今日推荐