NFS服务器详解

简介

什么是nfs服务器?

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

nfs优点

  1. 节省本地存储空间,将常用的数据存放在一台NFS服务器上且可以通过网络访问,那么本地终端将可以减少自身存储空间的使用。
  2. 用户不需要在网络中的每个机器上都建有Home目录,Home目录可以放在NFS服务器上且可以在网络上被访问使用。
  3. 一些存储设备如软驱、CDROM和Zip(一种高储存密度的磁盘驱动器与磁盘)等都可以在网络上被别的机器使用。这可以减少整个网络上可移动介质设备的数量。

如何配置nfs服务器

服务端

在配置服务端环境之前,我们首先对服务端虚拟机进行网络、主机名、yum源的基本配置,这里不再赘述。

  • 第一步:.在服务端安装nfs服务,并开启服务
yum install nfs-utils.x86_64 -y
  • 第二步:修改nfs配置文件vim /etc/exports
写入:
/mnt    172.25.254.0/24(ro,async)
共享的目录  将共享的目录/westos共享给172.25.254.0网段的主机  ( 只读挂载,不实时更新)
不实时更新,速度快
	sync  内存中的数据和硬盘中的数据是同步的,比较可靠
	aysnc 不实时同步 ,相应速率高,但危险

在这里插入图片描述
注意:man 5 exports查看这个文件里面的书写格式

  • 第三步:刷新,使文件生效(注意:不能重启服务)
exportfs -rv
  • 第四步:查看服务是否开启:若没开启则开启,并刷新服务。
systemctl status nfs-server
systemctl start nfs-server
exportfs -rv

在这里插入图片描述

  • 第五步:关闭火墙,否则客户端访问不到IP。
  • 第六步:在服务端/mnt目录下创建文件file(测试用)

客户端

我们在服务端进行测试:

  • 第一步: yum install nfs-utils
  • 第二步:用showmount -e 172.25.254.102查看是否开启
    在这里插入图片描述
  • 第三步: 挂载到本机目录 mount 172.25.254.125:/mnt/ /mnt/
  • 第四步: df查看并进入对应目录进行测试:可以查看但是创建文件(写操作)被拒。
    在这里插入图片描述

测试

我们回到服务端:修改配置文件为可写

vim /etc/exports
写入:
/mnt    172.25.254.0/24(rw,async)
刷新:
exportfs -rv

再次回到客户端,测试:

[root@client mnt]# rm -fr file 
rm: cannot remove ‘file’: Permission denied

发现被拒,说明是权限不够,那回到服务端就修改权限。

[root@server mnt]# chmod 777 /mnt/

客户端删除成功!同时注意建立文件的所属:

[root@client mnt]# touch file
[root@client mnt]# ll
total 0
-rw-r--r--. 1 nfsnobody nfsnobody 0 5月  26 09:28 file

可以发现属于nfsnobody

nsf服务器用户身份设置

指定身份

指定客户端的用户身份为服务端已经存在的用户身份。

  • 第一步:在服务端创建一个用户,并将此id写入nfs配置文件中
[root@server mnt]# useradd westos
[root@server mnt]# id westos
uid=1001(westos) gid=1001(westos) groups=1001(westos)
[root@server mnt]# vim /etc/exports
[root@server mnt]# exportfs -rv
exporting 172.25.254.0/24:/mnt

在这里插入图片描述

  • 第二步:在客户端,先卸载掉之前的挂载,重新挂载,然后进入挂载目录创建文件,发现其文件的用户和用户组为指定的westos的id,如果id重复则会以客户端用户表现出来。
[root@client mnt]# touch file1
[root@client mnt]# ll
total 0
-rw-r--r--. 1 nfsnobody nfsnobody 0 5月  26 09:28 file
-rw-r--r--. 1      1001      1001 0 5月  26 09:38 file1

沿用客户端用户身份

客户端以哪个身份建立文件,创建的文件就属于客户端那个用户。

  • 第一步:在服务端修改配置文件,并刷新
[root@server mnt]# vim /etc/exports
写入:
/mnt    172.25.254.0/24(rw,async,anonuid=1001,anongid=1001,no_root_squash)

[root@server mnt]# exportfs -rv
exporting 172.25.254.0/24:/mnt

在这里插入图片描述

  • 第二步:在客户端,为了效果更明显,可以切换到客户端student用户,进入/mnt,创建文件,发现属于student用户。说明成功沿用客户端用户身份去创建nfs共享目录文件。
[student@client mnt]$ touch file3
[student@client mnt]$ ll
total 0
-rw-r--r--. 1 nfsnobody nfsnobody 0 May 26 09:28 file
-rw-r--r--. 1      1001      1001 0 May 26 09:38 file1
-rw-r--r--. 1 root      root      0 May 26 09:47 file2
-rw-rw-r--. 1 student   student   0 May 26 09:48 file3

使用服务端的用户身份

不管客户端以哪个身份建立文件,所有的用户身份都要做转换,所有客户端的用户都会映射到服务器的用户——即指定的anonuid用户。
注意:参数没有顺序,all优先级更高。也就是说,参数中all_squash和no_root_squash同时出现,只有all_squash生效。

  • 第一步:在服务端修改配置文件,并刷新。
[root@server mnt]# vim /etc/exports
写入:
/mnt    172.25.254.0/24(rw,async,anonuid=1001,anongid=1001,all_squash)

[root@server mnt]# exportfs -rv
exporting 172.25.254.0/24:/mnt
  • 第二步:在客户端,创建文件file4,进行查看,发现为1001的id的用户所有,而此时服务端指定了是1001即以westos这个用户身份创建,所以成功使用了服务的配置文件中指定的身份。
[root@client mnt]# touch file4
[root@client mnt]# ll
total 0
-rw-r--r--. 1 nfsnobody nfsnobody 0 5月  26 09:28 file
-rw-r--r--. 1      1001      1001 0 5月  26 09:38 file1
-rw-r--r--. 1 root      root      0 5月  26 09:47 file2
-rw-rw-r--. 1 student   student   0 5月  26 09:48 file3
-rw-r--r--. 1      1001      1001 0 5月  26 10:01 file4

nfs服务器自动挂载与卸载

实际在企业当中,主机和存储是分离的,客户通过主机登录系统,然后将数据放到存储当中,但是当主机没有存储需求的时候,没有必要和存储系统连接,浪费系统资源,所以我们希望:实现客户端用的时候自动挂载,不用的时候自动卸载。

  • 在客户端:
  • 第一步:卸载刚刚挂载的nfs共享目录
  • 第二步:安装可以实现自动挂载文件系统的服务yum install autofs -y
  • 第三步:开启服务:
在服务开启前:
ls -l /net			###没有这个目录
systemctl start autofs.setvice				##开启这个服务
ls -l /net			##有这个目录
cd /net 			##进入
ls					##查看什么都没有
cd  172.25.254.125				##但是进入服务器
cd /mnt			##进入共享目录
df					##此时查看有没有自动挂载
但是退出此目录后:
df 依然挂载,没有自动卸载,因为默认停留时间是300s

在这里插入图片描述- 第四步:修改配置文件vim /etc/sysconfig/autofs,修改自动挂载时间。
注意:7.3版本以上的是/etc/autofs.conf,7.0版本的是/etc/sysconfig/autofs

rpm -qc autofs			##查看autofs的所有配置文件,版本不一样,配置文件不一样
rpm -qa | grep autofs					##查看rpm版本
autofs-5.0.7-56.el7.x86_64

vim /etc/sysconfig/autofs
改等待时间为3s,为了实验效果更明显,当不用时直接卸载

在这里插入图片描述

  • 重启服务,重复第三步步骤进行测试!
ls -l /net			##有这个目录
cd /net 			##进入
ls					##查看什么都没有
cd  172.25.254.125				##但是可以进入服务器
cd /mnt			##进入共享目录
df					##此时查看发现自动挂载
但是退出此目录后:等待3s,不要直接查看,否则会以为使用
df 自动卸载,因为默认停留时间是3s

在这里插入图片描述

自动挂载到指定目录

目的:我们的目的是将nfs共享目录挂载到我们客户端指定的目录上,例如,我们想在/mnt/westos的目录下(不用创建,自动创建,隐藏目录),将nfs共享目录自动挂载到这里。
在客户端:

  • 第一步:在主策略文件/etc/auto.master, 写入最终挂载点的上层目录/mnt
    在这里插入图片描述
  • 第二步:在子策略文件/etc/auto.nfs(名字任意,最好规范写,易读) 写入最终de挂载点,并指定参数。
vim /etc/auto.nfs
写入:
westos          -ro,vers=3               172.25.254.125:/mnt
精确挂载点		参数:只读,版本3				挂载的源设备
  • 第三步:重启服务后测试
    在这里插入图片描述使用mount查看挂载详情,法系挂载参数与设定一致:
    在这里插入图片描述

客户端挂载到与服务器匹配目录

这样方便服务端管理,比如,当客户端登录到对应服务器的子目录中就实现了自动挂载。
在服务端:

  • 创建对应的目录
mkdir westos{1..3}

在客户端:

  • 第一步:修改主配置文件/etc/auto.master,写入最终挂载点的上层目录/mnt
    在这里插入图片描述

  • 第二步:修改子配置文件vim /etc/auto.nfs

写入:
*       -ro,vers=3              172.25.254.125:/mnt/&
*代表你输入任意的目录名(如果存在)					&代表当与*一一对应
  • 第三步:重启服务

  • 第四步:测试:

[root@client ~]# cd /mnt/			
[root@client mnt]# ls					##查看没有目录
[root@client mnt]# cd westos1
[root@client westos1]# df			##进入到westos1就自动挂载nfs的westos1目录
Filesystem                  1K-blocks    Used Available Use% Mounted on
/dev/vda1                    10473900 3163804   7310096  31% /
devtmpfs                       927060       0    927060   0% /dev
tmpfs                          942648      84    942564   1% /dev/shm
tmpfs                          942648   17036    925612   2% /run
tmpfs                          942648       0    942648   0% /sys/fs/cgroup
/dev/sr0                      3704296 3704296         0 100% /run/media/root/RHEL-7.3 Server.x86_64
172.25.254.125:/mnt/westos1  10473984 3148288   7325696  31% /mnt/westos1
[root@client westos1]# cd	
[root@client ~]# df						##退出后自动卸载
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/vda1       10473900 3163804   7310096  31% /
devtmpfs          927060       0    927060   0% /dev
tmpfs             942648      84    942564   1% /dev/shm
tmpfs             942648   17036    925612   2% /run
tmpfs             942648       0    942648   0% /sys/fs/cgroup
/dev/sr0         3704296 3704296         0 100% /run/media/root/RHEL-7.3 Server.x86_64
[root@client ~]# cd /mnt/westos2
[root@client westos2]# df				##进入westos2就实现自动挂载westos2
Filesystem                  1K-blocks    Used Available Use% Mounted on
/dev/vda1                    10473900 3163784   7310116  31% /
devtmpfs                       927060       0    927060   0% /dev
tmpfs                          942648      84    942564   1% /dev/shm
tmpfs                          942648   17036    925612   2% /run
tmpfs                          942648       0    942648   0% /sys/fs/cgroup
/dev/sr0                      3704296 3704296         0 100% /run/media/root/RHEL-7.3 Server.x86_64
172.25.254.125:/mnt/westos2  10473984 3148288   7325696  31% /mnt/westos2
  • 2
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值