龙之介大人

如何优雅的使用NFS文件系统
NFS介绍及原理NFS是Network File System的缩写;这个文件系统是基于网路层面,通过网络层面实现...
扫描右侧二维码阅读全文
14
2020/01

如何优雅的使用NFS文件系统

NFS介绍及原理

NFS是Network File System的缩写;这个文件系统是基于网路层面,通过网络层面实现数据同步

NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netapp公司参与并主导开发,目前最新为4.1版本——>4.1版本是2010年出来还没更新过

同时也是一种网络协议,NFS依赖RPC才能工作。(RHEL5.0上是NFS V3而RHEL6.0上是NFS V4)

NFS 的基本原则是“容许不同的客户端及服务端通过一组RPC分享相同的文件系统”,它是独立于操作系统,容许不同硬件及操作系统的系统共同进行文件的分享。

NFS在文件传送或信息传送过程中依赖于RPC协议。RPC,远程过程调用 (Remote Procedure Call) 是能使客户端执行其他系统中程序的一种机制。NFS本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进行资料的分享,这是因为NFS使用了一些其它的传输协议。而这些传输协议用到这个RPC功能的。可以这么理解RPC和NFS的关系:NFS是一个文件系统,而RPC是负责负责信息的传输。

RPC协议介绍

RPC(Remote Procedure Call)远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。其工作在TCP/UDP的111端口。建立在Socket之上的,主要是简化编程的工作在底层提供网络之间的通信。

RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息的到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。

在Linux6中实现RPC协议的软件是RPCbind程序包,进程名称是portmapper。RPC并不提供任何具体的服务,要想提供具体的服务就必须在Linux上提供具体的软件。而网络文件系统(NFS)就是基于RPC协议工作的,如NFS客户端——-Portmap客户端——Portmap服务端——NFS服务端。如图是RPC的工作原理:

NFS原理

服务端需要启动一个NFS服务,服务端要想给客户端提供服务,需要借助RPC协议,RPC协议是由rpcbind服务所实现的;在centos 5或者之前的版本叫portmap服务,centos6及之后的版本叫rpcbind服务,这两个都是一个服务,最终实现了RPC协议的通信,NFS服务默认不会监听任何端口(启动服务,但不会监听端口),最终监听端口,实现RPC通信的过程是由rpcbind服务产生的RPC协议实现的,RPC协议 默认监听的端口是111 端口;
整个流程为:服务端的NFS服务监听一个端口通过RPC协议监听的端口,再去告诉客户端RPC协议,然后NFS客户端通过本机的RPC端口回传数据信息到服务端NFS监听的端口,最终实现通信

NIS:Network Information System 
NFS:基于ip认证
    NFS:2049/tcp, 2019/udp
NFS服务:
    rpcinfo: 查询RPC信息
    nfsd: 负责文件读写,工作在TCP/UDP的2049端口。
    mountd: 负责客户端来源认证的进程,认证成功后接受客户端的挂载请求,工作在随机端口,即时向RPC注册。
    idmapd: 负责用户ID映射。
    quotad:负责限定客户端在本地能使用多大磁盘空间,工作在随机端口,即时向RPC注册。
    nlockmgr: NFS的服务器端锁机制进程,当有一个客户端进程要访问服务器端处理文件之前就会先向NFS注册加锁,以免同时两个客户端进程同时处理一个文件导致文件崩溃;一个进程处理完成之后就会通知NFS释放锁。
  • NIS服务介绍

NIS(network information service)网络信息服务,也是SUN公司开发的统一认证服务器,并且SUN也有商业版的NIS+。NIS本身十分不安全,也无法完成安全用户认证,它只能够帮助用户认证并且能够把账号密码集中存放起来,类似于Windows的AD域。在使用中更多的是使用NIS结合kerberos来完成安全认证或只使用kerberos完成安全认证。而在大规模NFS环境中会用到LDAP协议,它能够实现大规模的安全统一认证,并且能够基于SSL,还能够实现多主模型,高可能集群等等。而Windows的AD域就是使用的LADP协议。

什么时候会需要统一认证服务器呢,就需要先了解NFS的权限问题?

NFS服务器端目前只能基于主机认证客户端的来源,而不能基于用户名进行验证。那么在安全性上就大大减弱了。如果NFS客户端挂载服务器端之后以tom的用户创建一个文件而在NFS服务器端没有tom用户那么这个文件就会显示tom的ID号,恰好此ID号正好是NFS服务器端的Jerry用户那么此文件的属主就会是jerry了。因此由于root用户的UID都是0,所以默认NFS客户端Root都被映射为来宾账号,不然客户端都可以以本地Root的权限来操作NFS服务器了。

为了解决这个问题,就可以使用NIS集中式认证。也就是说另外再找一台服务器做NIS认证,那么当NFS客户端登陆时必须要先到认证服务器确认用户名和密码。登陆成功后创建文件时就会以当前用户为准,而NFS服务器端解析此文件的用户ID时就会到认证服务器去请求解析。这样一来就不会出现文件权限的诡异了。

NIS:基于单点认证,认证服务器挂了就无法正常工作!

NFS的安装部署

#安装rpcbind和nfs
[root@server-node3 ~]# yum install -y rpcbind nfs-utils
#注意:NFS的RPC服务器,Centos5下名字为portmap,CentOS6和CentOS7下名称为rcpbind

#NFS软件包
#nfs-utils:NFS主程序,包含rpc.nfsd  rpc.mount两个deamons
#rpcbind:RPC主程序

[root@server-node3 ~]# rpm -ql nfs-utils 
#--配置文件--
/etc/exports.d
/etc/gssproxy/24-nfs-server.conf
/etc/modprobe.d/lockd.conf
/etc/nfs.conf
/etc/nfsmount.conf
/etc/request-key.d/id_resolver.conf
/etc/sysconfig/nfs
#--程序--
/sbin/mount.nfs
/sbin/mount.nfs4
/sbin/osd_login
/sbin/rpc.statd
/sbin/umount.nfs
/sbin/umount.nfs4
#--服务启动文件--
/usr/lib/systemd/system/auth-rpcgss-module.service
/usr/lib/systemd/system/nfs-blkmap.service
/usr/lib/systemd/system/nfs-client.target
/usr/lib/systemd/system/nfs-config.service
/usr/lib/systemd/system/nfs-idmap.service
/usr/lib/systemd/system/nfs-idmapd.service
/usr/lib/systemd/system/nfs-lock.service
/usr/lib/systemd/system/nfs-mountd.service
/usr/lib/systemd/system/nfs-secure.service
/usr/lib/systemd/system/nfs-server.service
/usr/lib/systemd/system/nfs-utils.service
/usr/lib/systemd/system/nfs.service 
/usr/lib/systemd/system/nfslock.service
/usr/lib/systemd/system/proc-fs-nfsd.mount
/usr/lib/systemd/system/rpc-gssd.service
/usr/lib/systemd/system/rpc-statd-notify.service
/usr/lib/systemd/system/rpc-statd.service
/usr/lib/systemd/system/rpc_pipefs.target
/usr/lib/systemd/system/rpcgssd.service
/usr/lib/systemd/system/rpcidmapd.service
/usr/lib/systemd/system/var-lib-nfs-rpc_pipefs.mount

#启动nfs
[root@master ~]# systemctl start nfs.service 

#查看rpc信息
[root@master ~]# rpcinfo

#查看nfs相关服务之间的联系
[root@master ~]# ps aux | egrep 'nfs|rpc'
rpc       3938  0.0  0.0  69276  1540 ?        Ss   14:20   0:00 /sbin/rpcbind -w
rpcuser   3939  0.0  0.0  42436  1748 ?        Ss   14:20   0:00 /usr/sbin/rpc.statd
root      3940  0.0  0.0      0     0 ?        S<   14:20   0:00 [rpciod]
root      3952  0.0  0.0  21464   540 ?        Ss   14:20   0:00 /usr/sbin/rpc.idmapd
root      3957  0.0  0.0  42628   932 ?        Ss   14:20   0:00 /usr/sbin/rpc.mountd
root      3963  0.0  0.0      0     0 ?        S<   14:20   0:00 [nfsd4_callbacks]
root      3969  0.0  0.0      0     0 ?        S    14:20   0:00 [nfsd]
root      3970  0.0  0.0      0     0 ?        S    14:20   0:00 [nfsd]
root      3971  0.0  0.0      0     0 ?        S    14:20   0:00 [nfsd]
root      3972  0.0  0.0      0     0 ?        S    14:20   0:00 [nfsd]
root      3973  0.0  0.0      0     0 ?        S    14:20   0:00 [nfsd]
root      3974  0.0  0.0      0     0 ?        S    14:20   0:00 [nfsd]
root      3975  0.0  0.0      0     0 ?        S    14:20   0:00 [nfsd]
root      3976  0.0  0.0      0     0 ?        S    14:20   0:00 [nfsd]
root      4022  0.0  0.0 112728   968 pts/2    S+   14:26   0:00 grep -E --color=auto nfs|rpc

#nfsd: 最主要的NFS服务提供程序,这个daemon主要的功能就是管理客户端是否能够使用服务器文件系统挂载信息,其中还包含判断这个登录用户的ID。
#rpc.mountd: 这个daemon主要功能则是管理NFS的文件系统。当client端顺利通过rpc.nfsd登入主机后,在它可以使用NFS服务器提供规定文件之前,
#            还会经过文件使用权限的认证程序。它会去读取NFS的配置文件/etc/exports来对比客户端的权限,当通过这一关之后,client端也就取得使用NFS文件的权限。
#rpc.lockd: 这个daemon用于管理文件的锁定方面,当多个客户端同时尝试写入某个文件时就可以对该文件造成一些问题。rpc.lockd则可以用来克服这此问题。但rpc.lockd必须要同时在客户端和服务器端都开启才行。
#rpc.statd: 这个daemon可以用来检查文件的一致性,若发生因为客户端同时使用同一个文件造成文件损坏时,rpc.statd可以用来检测并尝试恢复该文件

NFS的基本配置与使用

创建共享目录

NFS软件很简单,主要配置文件:/etc/exports,默认这个里面内容是空的,如果没有这个文件,可以使用vim主动建立这个文件。至于NFS服务器的搭建也很简单,只要编辑好主要配置文件/etc/exports之后,先启动rpcbind(若已经启动了,就不要重新启动),然后再启动nfs,NFS就成功了。

#创建nfs的共享目录
[root@master ~]# mkdir -pv /mountf/data1

添加共享

/etc/exports 文件中的项的格式相当简单。要共享一个文件系统,只需要编辑 /etc/exports 并使用下面的格式给出这个文件系统(和选项)即可:
#添加共享
[root@master ~]# vim /etc/exports
/mountf/data1    10.10.1.50/24(no_root_squash,rw)        10.10.1.1(ro)
#[共享目录]     [客户端地址1(权限)]     [客户端地址2(权限)]

#共享目录:存在于我们本机上的目录,我们想共享给网络上的其他主机使用。如我要共享/tmp/data目录,那么此选项可以就直接写/tmp/data目录,
#这个目录可以依照不同的权限共享给不同的主机。

#客户端地址1(参数1,参数2):客户端地址能够设置一个网络,也可以设置单个主机, 或者是FQDN IP等。
#   参数:如读写权限rw,同步更新sync,压缩来访账号all_squash,压缩后的匿名账号anonuid=uid,anongid=gid等等;
  • 常用的选项:
参数参数用途
secure这个选项是缺省选项,它使用了 1024 以下的 TCP/IP 端口实现 NFS 的连接。指定 insecure 可以禁用这个选项。
rw这个选项允许 NFS 客户机进行读/写访问。缺省选项是只读的。
roRead-only表示只能读权限
async这个选项可以改进性能,但是如果没有完全关闭 NFS 守护进程就重新启动了 NFS 服务器,这也可能会造成数据丢失。
sync同步写入,与async相反
no_wdelay这个选项关闭写延时。如果设置了 async,那么 NFS 就会忽略这个选项。
nohide如果将一个目录挂载到另外一个目录之上,那么原来的目录通常就被隐藏起来或看起来像空的一样。要禁用这种行为,需启用 h选项。
no_subtree_check这个选项关闭子树检查,子树检查会执行一些不想忽略的安全性检查。缺省选项是启用子树检查。
no_auth_nlm这个选项也可以作为 insecure_locks 指定,它告诉 NFS 守护进程不要对加锁请求进行认证。如果关心安全性问题,使用这个选项。缺省选项是auth_nlm 或 secure_locks。
mp (mountpoint=path)通过显式地声明这个选项,NFS 要求挂载所导出的目录。
fsid=num这个选项通常都在 NFS 故障恢复的情况中使用。如果希望实现 NFS 的故障恢复,请参考 NFS 文档。
  • 用户映射:
通过 NFS 中的用户映射,可以将伪或实际用户和组的标识赋给一个正在对 NFS 卷进行操作的用户。这个 NFS 用户具有映射所允许的用户和组的限。对 NFS 卷使用一个通用的用户/组可以提供一定的安全性和灵活性,而不会带来很多管理负荷。

在使用 NFS 挂载的文件系统上的文件时,用户的访问通常都会受到限制,这就是说用户都是以匿名用户的身份来对文件进行访问的,这些用户缺情对这些文件只有只读权限。这种行为对于 root 用户来说尤其重要。然而,实际上的确存在这种情况:希望用户以 root 用户或所定义的其用户的身问远程文件系统上的文件。NFS 允许指定访问远程文件的用户——通过用户标识号(UID)和组标识号(GID),可以禁用正常的 squash行为。

  • 用户映射的选项包括:
参数参数用途
root_squash这个选项不允许 root 用户访问挂载上来的 NFS 卷。
no_root_squash这个选项允许 root 用户访问挂载上来的 NFS 卷。
all_squash不管访问者是什么身份,包括root,全部压缩至匿名用户。
no_all_squash保留访问用户的身份uid以及gid,一般只能查看,不能修改,权限问题,但是可以强制保存。
anonuidanonuid就是匿名的uid和gid。说明客户端以什么权限来访问服务端,在默认情况下是nfsnobody。Uid65534.
anongid同anongid,就是把uid换成gid而已
需要注意的是:10.10.1.1/24(rw,sync,all_squash,anonuid=2000,anongid=2000)括号之间不能有空格,生产环境中常用的一种配置,适合多客户端共享一个NFS目录。All_squash 也就是说不管客户端是以什么样的身份来进行访问的,都会被压缩成为all_squash后面所接的用户和群组身份。这边用anonuid、anongid编号来标示。=
  • 查看本机nfs开放的端口
[root@master ~]# 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  41789  status
    100024    1   tcp  51380  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  34186  nlockmgr
    100021    3   udp  34186  nlockmgr
    100021    4   udp  34186  nlockmgr
    100021    1   tcp  34200  nlockmgr
    100021    3   tcp  34200  nlockmgr
    100021    4   tcp  34200  nlockmgr

文件共享导出命令(exportfs)

exportfs:维护exports文件导出的文件系统表的专用工具:
#常用选项
# export -ar: 重新导出所有的文件系统
# export -au: 关闭导出的所有文件系统
# export -u FS: 关闭指定的导出的文件系统

# -a 全部挂载或者全部卸载
# -r 重新挂载
# -u 卸载某一个目录
# -v 显示共享目录

#例如:在/etc/exports中添加一个共享目录然后是用exportfs导出
[root@master ~]# vim /etc/exports
/mountf/data1    10.10.1.119(no_root_squash,rw)
/var/    10.10.1.119(no_root_squash,rw)
[root@master ~]# exportfs -arv 
exporting 10.10.1.119:/var
exporting 10.10.1.119:/mountf/data1

#客户端查看文件共享服务器
[root@develop-vscode data]# showmount -e 10.10.1.109
Export list for 10.10.1.109:
/var          10.10.1.119
/mountf/data1 10.10.1.119

#挂载测试
[root@develop-vscode data]# mount -t nfs 10.10.1.109:/var /data2
[root@develop-vscode data]# df -h /data2/
文件系统          容量  已用  可用 已用% 挂载点
10.10.1.109:/var   48G   13G   36G   27% /data2
[root@develop-vscode data]# ll /data2/
总用量 8
drwxr-xr-x  2 root root    6 4月  11 2018 adm
drwxr-xr-x  5 root root   41 4月  11 2018 cache
drwxr-xr-x  2 root root    6 8月   8 19:41 crash
....

自动挂载NFS

  • 客户端挂载时可以使用的特殊选项:
#Client
#    Mounting remote directories
#    Before mounting remote directories 2 daemons should be be started first:
#        rpcbind
#        rpc.statd
#
#rsize 的值是从服务器读取的字节数。wsize 是写入到服务器的字节数。默认都是1024, 如果使用比较高的值,如8192,可以提高传输速度。 
#
# The timeo value is the amount of time, in tenths of a second, to wait before resending a transmission after an RPC timeout. After the first timeout, the timeout value is doubled for each retry for a maximum of 60 seconds or until a major timeout occurs. If connecting to a slow server or over a busy network, better performance can be achieved by increasing this timeout value.
# The intr option allows signals to interrupt the file operation if a major timeout occurs for a hard-mounted share.
#
#总结:
#    1、客户端表示方式
#    2、导出选项:
#        rw, async, sync, root_squash, no_root_squash, all_squash, anonuid, anongid
#    3、exportfs和showmount

#开机自动挂载NFS格式:编辑/etc/fstab
#SERVER:/PATH/TO/EXPORTED_FS /mount_point     nfs     defaults,_netdev     0 0

#例如:开机自动挂载共享服务器的/var目录
[root@develop-vscode ~]# cat /etc/fstab 
10.10.1.109:/var    /data            nfs    defaults,_netdev 0 0  #添加开机自动挂载    
[root@develop-vscode ~]# reboot
[root@develop-vscode ~]# mount
10.10.1.109:/var on /data type nfs4 (rw,relatime,vers=4.1,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=10.10.1.119,local_lock=none,addr=10.10.1.109,_netdev)
[root@develop-vscode ~]# df -h /data
文件系统          容量  已用  可用 已用% 挂载点
10.10.1.109:/var   48G   13G   36G   27% /data

常见的目录共享设置

# sample /etc/exports file
/               master(rw)trusty(rw,no_root_squash)
把根目录分享给master主机(可读写)和trusty主机(可读写,不转换root)
 
/projects       proj*.local.domain(rw)
/usr            *.local.domain(ro) @trusted(rw)
通配符例子
 
/home/joe       pc001(rw,all_squash,anonuid=150,anongid=100)
可读写,转换所有来访者,uid改为150,gid改为100
 
/pub           *(ro,insecure,all_squash)
只读,允许客户端的端口大于等于1024,全部转换角色
 
/srv/www        -sync,rw server @trusted @external(ro)
sync、rw配到后面三个主机,但第三个@external只读覆盖rw
 
/foo            2001:db8:9:e54::/64(rw) 192.0.2.0/24(rw)
Ipv6于4的写法
 
/build          buildhost[0-9].local.domain(rw)
另一种通配符的写法

共享目录的基本使用

  • 查看共享目录
#查看NFS服务器端共享的文件系统:
#   showmount -e NFSSERVER_IP

#客户端安装
[root@develop-vscode ~]# yum install nfs-utils.x86_64 

#查看共享服务器共享的目录
[root@develop-vscode ~]# showmount -e 10.10.1.109
Export list for 10.10.1.109:
/mountf/data1 10.10.1.1/24
  • 挂载与卸载共享的目录
#挂载NFS文件系统:
#    mount -t nfs SERVER:/path/to/sharedfs  /path/to/mount_point

#挂载nfs目录
[root@develop-vscode ~]# mkdir /data
[root@develop-vscode ~]# mount -t nfs 10.10.1.109:/mountf/data1 /data
[root@develop-vscode ~]# df -h /data/
文件系统                   容量  已用  可用 已用% 挂载点
10.10.1.109:/mountf/data1   48G   13G   36G   27% /data

#卸载nfs目录
[root@develop-vscode ~]# umount /data
  • 测试共享的目录
#共享服务器copy一个文件到/mountf/data1目录下,然后客户端查看是否有文件
#1. 共享服务器复制文件
[root@master ~]# cp /etc/issue /mountf/data1/
[root@master ~]# ll /mountf/data1/
总用量 4
-rw-r--r-- 1 root root 23 1月  14 18:02 issue
#2. 客户端查看
[root@develop-vscode ~]# ll /data/
总用量 4
-rw-r--r-- 1 root root 23 1月  14 18:02 issue


#客户端测试是否可以写入文件
[root@develop-vscode ~]# mount -t nfs 10.10.1.109:mountf/data1 /data
[root@develop-vscode ~]# df -h /data/
文件系统                   容量  已用  可用 已用% 挂载点
10.10.1.109:/mountf/data1   48G   13G   36G   27% /data
[root@develop-vscode ~]# cd /data/
[root@develop-vscode data]# dd if=/dev/zero of=test bs=1M count=50
记录了50+0 的读入
记录了50+0 的写出
52428800字节(52 MB)已复制,0.273806 秒,191 MB/秒
[root@develop-vscode data]# ll -h
总用量 51M
-rw-r--r-- 1 root root  23 1月  14 18:02 issue
-rw-r--r-- 1 root root 50M 1月  14 18:18 test
#注意:nfs服务器默认是不允许root权限读写共享目录,需要手动在共享服务器的`/etc/exports`文件中的共享目录配置中
#     手动添加`no_root_squash`参数.
  • 添加共享目录要求不重启服务进行导出:
#例如:在/etc/exports中添加一个共享目录然后是用exportfs更新导出表
[root@master ~]# vim /etc/exports
/mountf/data1    10.10.1.119(no_root_squash,rw)
/var/    10.10.1.119(no_root_squash,rw)
[root@master ~]# exportfs -arv   #重新导出所有文件系统
exporting 10.10.1.119:/var
exporting 10.10.1.119:/mountf/data1
#客户端查看文件共享服务器
[root@develop-vscode data]# showmount -e 10.10.1.109
Export list for 10.10.1.109:
/var          10.10.1.119
/mountf/data1 10.10.1.119
#挂载测试
[root@develop-vscode data]# mount -t nfs 10.10.1.109:/var /data2
[root@develop-vscode data]# df -h /data2/
文件系统          容量  已用  可用 已用% 挂载点
10.10.1.109:/var   48G   13G   36G   27% /data2
[root@develop-vscode data]# ll /data2/
总用量 8
drwxr-xr-x  2 root root    6 4月  11 2018 adm
drwxr-xr-x  5 root root   41 4月  11 2018 cache
drwxr-xr-x  2 root root    6 8月   8 19:41 crash

#例如把/etc目录共享出去
[root@master ~]# vim /etc/exports
/mountf/data1    10.10.1.119(no_root_squash,rw)
/var/    10.10.1.119(no_root_squash,rw)
/etc/   10.10.1.119(no_root_squash,rw)
[root@master ~]# exportfs -arv 
exporting 10.10.1.119:/etc
exporting 10.10.1.119:/var
exporting 10.10.1.119:/mountf/data1
#客户端挂载
[root@develop-vscode ~]# showmount -e 10.10.1.109
Export list for 10.10.1.109:
/etc          10.10.1.119
/var          10.10.1.119
/mountf/data1 10.10.1.119
[root@develop-vscode ~]# mount -t nfs 10.10.1.109:/etc /data
[root@develop-vscode ~]# df -h /data
文件系统          容量  已用  可用 已用% 挂载点
10.10.1.109:/etc   48G   13G   36G   27% /data
[root@develop-vscode ~]# ll /data | wc -l
217
#卸载挂载的文件系统
[root@develop-vscode ~]# umount /data
[root@develop-vscode ~]# df
文件系统                   1K-块    已用     可用 已用% 挂载点
/dev/mapper/centos-root 81437848 2726080 78711768    4% /
devtmpfs                 4077636       0  4077636    0% /dev
tmpfs                    4088040       0  4088040    0% /dev/shm
tmpfs                    4088040    8768  4079272    1% /run
tmpfs                    4088040       0  4088040    0% /sys/fs/cgroup
/dev/sda2                 303788   99528   204260   33% /boot
tmpfs                     817608       0   817608    0% /run/user/0
  • 开机自动挂载共享服务的目录测试:
#添加挂载目录
[root@master ~]# vim /etc/exports
/mountf/data1    10.10.1.119(no_root_squash,rw)
/var/    10.10.1.119(no_root_squash,rw)
/etc/   10.10.1.119(no_root_squash,rw)
#导入挂载目录
[root@master ~]# exportfs -arv 
exporting 10.10.1.119:/etc
exporting 10.10.1.119:/var
exporting 10.10.1.119:/mountf/data1
#添加自动挂载
[root@develop-vscode ~]# vim /etc/fstab 
10.10.1.109:/var    /data            nfs    defaults,_netdev 0 0  #添加开机自动挂载    
[root@develop-vscode ~]# reboot #重启测试
[root@develop-vscode ~]# mount
10.10.1.109:/var on /data type nfs4 (rw,relatime,vers=4.1,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=10.10.1.119,local_lock=none,addr=10.10.1.109,_netdev)
[root@develop-vscode ~]# df -h /data
文件系统          容量  已用  可用 已用% 挂载点
10.10.1.109:/var   48G   13G   36G   27% /data
最后修改:2020 年 01 月 14 日 11 : 39 PM

发表评论