NFS(Network File System)网络文件系统
服务可以将远程 Linux 系统上的文件共享资源挂载到本地主机的目录上,从而使得本地主机(Linux 客户端)基于 TCP/IP 协议,像使用本地主机上的资源那样读写远程 Linux 系统上的共享文件。

1. NFS 服务的安装

在 NFS 客户端,服务端都进行安装

  1. [root@server ~]# yum install nfs-utils.x86_64
  2. # nfs 服务安装
  3. [root@server ~]# systemctl start nfs-server
  4. # nfs 服务启动
  5. [root@server ~]# systemctl enable nfs-server
  6. # nfs 服务开机自启

注意关闭服务端与客户端的防火墙

NFS 服务程序的配置文件为 /etc/exports,默认情况下里面没有任何内容。我们可以按照“共享目录的路径 允许访问的 NFS 客户端(共享权限参数)”的格式,定义要共享的目录与相应的权限。
**

NFS 服务程序配置文件的参数如下

参数 作用
ro 只读
rw 读写
root_squash 当 NFS 客户端以 root 管理员访问时,映射为 NFS 服务器的匿名用户
no_root_squash 当 NFS 客户端以 root 管理员访问时,映射为 NFS 服务器的 root 管理员
all_squash 无论 NFS 客户端使用什么账户访问,均映射为 NFS 服务器的匿名用户
sync 同时将数据写入到内存与硬盘中,保证不丢失数据
async 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据

2.1 建立 nfs 共享目录

  1. [root@server ~]# mkdir /nfsshare
  2. # 建立共享目录
  3. [root@server ~]# chmod 777 /nfsshare/
  4. # 修改目录权限,让所有人可以访问

在服务端编辑主配置文件 /etc/exports

  1. [root@server ~]# vim /etc/exports #编辑配置文件
  2. 内容如下:
  3. 1 /mnt *(sync,rw,anonuid=1001,anongid=1001)
  4. #共享目录 对所有用户共享(同步数据,读写权限,指定用户ID,组ID'如建立的文件属于此用户')
  5. 2 /nfsshare 172.25.151.0/24(sync) 172.25.151.50(sync,rw)
  6. #共享目录 对此网段的共享(数据同步)对此 IP 进行共享(数据同步,读写)
  7. 编辑完成后执行:exportfs -rv 进行刷新
  8. exportfs #维护导出的NFS文件系统的表
  9. -r #重新导出所有目录
  10. -v #示导出选项列表

执行如下:
编辑配置文件

image.png

进行列表刷新

image.png

在客户端进行使用
**

  1. [root@client ~]# showmount
  2. #显示NFS服务器的挂载信息
  3. -e #显示 NFS 服务器的共享列表
  4. -a #显示本机挂载的文件资源的情况
  5. -v #显示版本号
  6. #查看 10.6.206.184 主机的 NFS 共享目录列表
  7. [root@tlzhghfilet ~]# showmount -e 10.6.206.184
  8. Export list for 10.6.206.184:
  9. /nfs/share/upFiles *
  10. /data/share 10.6.206.0/24
  11. [root@client ~]# mount 172.25.151.150:/nfsshare /mnt
  12. #执行此命令进行挂载使用
  13. 172.25.151.150 下的共享目录 /nfsshare 挂载到客户端的 /mnt 下使用

执行如下:
执行 showmount -e IP 查看对应主机的共享目录信息

image.png

在IP为 172.25.151.50 客户端进行挂载使用,在配置文件中赋予的权限为 rw
在IP为 172.25.151.250 客户端进行挂载使用,在配置文件中赋予的权限为 ro
注:将172.25.151.150 ,即 nfs 服务器下的 /mnt 目录进行挂载使用,在配置文件中所指定的‘anonuid=1001,anongid=1001’意味着,在客户端进行操作后的用户 id 为1001
示例如下:
将挂载信息填入/etc/fstab 文件后,系统在每次开机时都自动将其挂载,
而 autofs 服务程序则是在用户需要使用该文件系统时才去动态挂载,从而节约了网络资源和
服务器的硬件资源。

  1. autofs 自动挂载服务
    无论是 Samba 服务还是 NFS 服务,都要把挂载信息写入到/etc/fstab 中,这样远程共享资源就会自动随服务器开机而进行挂载。虽然这很方便,但是如果挂载的远程资源太多,则会给网络带宽和服务器的硬件资源带来很大负载。如果在资源挂载后长期不使用,也会造成服务器硬件资源的浪费
    autofs 服务程序是一种 Linux 系统守护进程,当检测到用户视图访问一个尚未挂载的文件系统时,将自动挂载该文件系统。autofs 服务程序则是在用户需要使用该文件系统时才去动态挂载,从而节约了网络资源和服务器的硬件资源。

进行服务的安装及使用

[root@client ~]# yum install autofs.x86_64 -y #进行安装
[root@client ~]# systemctl start autofs #开启服务
[root@client ~]# systemctl enable autofs #开机自启

启动完毕后,会生成 /net 目录,此目录下没有任何东西。
#进入 /net/加NFS主机的IP 然后可以看到默认共享的目录,
#进入目录后,将会自动进行挂载操 作并将其作为挂载点
[root@client ~]# cd /net/172.25.151.150/nfsshare/

当挂载设备闲置后,默认是在300s后将其卸载,可以通过编辑配置文件对此时间进行修改
#编辑 /etc/sysconfig/autofs 对第 13 行进行修改
[root@client ~]# vim /etc/sysconfig/autofs
编辑第 13 行:
13 TIMEOUT=5 规定了默认卸载时间,单位为 s (秒)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
执行如下:
直接进入对应目录,自动挂载
编辑配置文件,修改自动卸载时间
未执行卸载操作,只要系统不再以任何方式访问共享目录 5 秒后自动卸载

使用 autofs 进行挂载目录以及挂载类型的指定
/etc/auto.master 此处定义最终挂载点的上层目录
/etc/auso.test 此处定义最终挂载点(此文件自己创建)

编辑 /etc/auto.master
[root@client ~]# vim /etc/auto.master
在第 7 行后添加
9 /nfs /etc/auto.test
其中/nfs #最终挂载点的上层目录
/etc/auto.test 子配置目录
建立并编辑 /etc/auto.test 对最终挂载点,挂载方式以及挂载设备进行确认
[root@client ~]# vim /etc/auto.test
内容如下:
1 test -ro 172.25.151.150:/nfsshare
其中 test 最终挂载点
-ro 只读挂载
172.25.254.239:/nfsshare 设备
重启服务后 进入 /nfs/test
[root@client ~]# cd /nfs/test
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
执行如下:
编辑配置文件:
/etc/auto.master
/etc/auto.test
进入目录(/nfs/test)进行查看

df -h无响应问题解决

、问题描述

1、linux下执行df -h 查看已挂在各分区的空间和目录情况,但执行后无反馈

二、影响

1、由于脚本程序调用df -h 判断磁盘空间情况进行日志等清理,故障导致磁盘空间占满不能清理,服务器不能访问。

三、问题分析

1、df -h和分区挂载有关,命令 mount 查看挂载情况发现以下问题

11.10.127.83:/www/repo/uploads on /etc/yum.repos.d type nfs4 (rw,relatime,vers=4.0,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=11.10.127.82,local_lock=none,addr=11.10.127.83)
因为上午刚对11.10.127.83做了防火墙策略阻止了该服务器nfs服务远程挂载的访问,df -h 读取不到挂在点的信息。

四、问题就解决

1、

umount -f 11.10.127.83:/www/repo/uploads 立即解决

否则用umount -l 看看是否可以解决

干脆 umount -fl 11.10.127.83:/www/repo/uploads

-f 强制卸载(在无响应的NFS系统的情况下)
-l 隔离文件系统后,全部清除

2、

对11.10.127.83 调整防火墙策略允许该服务器访问

3、

脚本程序可写成 df -hl