NFS服务器详解

    xiaoxiao2023-11-16  146

    NFS文件服务器

    简介什么是nfs服务器?nfs优点 如何配置nfs服务器服务端客户端测试 nsf服务器用户身份设置指定身份沿用客户端用户身份使用服务端的用户身份nfs服务器自动挂载与卸载自动挂载到指定目录客户端挂载到与服务器匹配目录

    简介

    什么是nfs服务器?

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

    nfs优点

    节省本地存储空间,将常用的数据存放在一台NFS服务器上且可以通过网络访问,那么本地终端将可以减少自身存储空间的使用。用户不需要在网络中的每个机器上都建有Home目录,Home目录可以放在NFS服务器上且可以在网络上被访问使用。一些存储设备如软驱、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
    最新回复(0)