系统的存储分离之----nfs文件管理系统

关于nfs:

cifs与nfs相同点:

           nfs和cifs的功能一样,都是用来解决数据的安全问题。

cifs与nfs不同点:

            cifs可以用于windows和linux之间的目录共享,也可以用于linux与linux之间。

            nfs只适用于linux与linux之间的文件共享。

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

一、NFS的配置

关闭时,先关客户端,原因,sync属于硬访问,当服务端先关闭,客户端就会一直访问,可能出现,关闭不了的现象。

前提知道:

async :  时实同步到服务器。
sync:时实同步到内存与硬盘里,完了之后,再传输到服务器。

实验准备:客户端IP:172.25.254.123,存储服务器端IP:172.25.254.223

步骤如下:

  • 服务端的配置:
  • yum install nfs-utils                 安装
  • systemctl start nfs-server       打开
  • 创建共享目录     mkdir /westos
  • vim /etc/exports                      编辑文件,将目录同步到内存与硬盘里
  • exportfs -rv                             刷新文件,可以看到共享目录 
  • showmount -e 172.25.254.223        显示服务端/etc/exports 所共享的目录文件(没有刷新服务之前是看不到的)
  • 添加防火墙服务
  • firewall-cmd --permanent --add-service=mountd     
    firewall-cmd --permanent --add-service=nfs            
    firewall-cmd --permanent --add-service=rpc-bind   
    firewall-cmd --reload
    firewall-cmd --list-all

防火墙添加的作用如下:

            showmount问rpc-bind(存储服务端)是否有共享,然后找mount,知道了是否有共享目录,允许后告诉客户端
然后去找nfs,nfs决定了是否给可客户端共享。

  • 客户端
  • mount 172.25.254.223:/westos /mnt    
  • df               挂载显示
  • umount /mnt卸载挂载

二、客户端对目录的自动挂载,与自动卸载时间的修改

1、自动挂载:系统自动挂载到客户端的/net下。

实验步骤如下:

  • 客户端:
  • yum install autofs.x86_64 -y        安装autofs软件
  • systemcl start autofs                   重启服务
  • ls -ld /net                                      此时会自动生成/net目录,并且自动挂载到该目录下(重启服务之前不显示)

验证是否可以自动挂载:

       用ls命令看到这个/net目录中什么也没有,但是可以直接进172.25.254.223

      看到我们共享的目录/westos,进入共享目录后,df查看已经自动挂载

也可以直接进入,/net/172.25.254.223/westos下,进行查看挂载。

2、自动卸载时间修改

  • 退出共享目录后,默认经过300s秒后自动卸载
  • 可以进入文件/etc/sysconfig/autofs,对卸载时间进行修改。
  • systemctl restart autofs.service      重启服务
  • 再次进入共享目录,/net/172.25.254.223/westos,此时自动挂载
  • 推出目录cd /   3s后,df查看挂载,此时自动卸载

三、户端指定目录自动挂载

1、指定目录的自动挂载

步骤如下:

  • 客户端操作:
  • 编辑主配置文件/etc/auto.master,添加挂载点的上层目录,以及添加子配置文件。内容如下:/pub表示挂载点的上层目录,/etc/auto.pub 为子配置文件
  • 编辑子配置文件:vim /etc/auto.pub  ,内容如下: 挂载的最终目录       服务端共享IP:共享目录
  • 重启服务

测试:进入挂载点:cd /pub/mount_catalog/   ,df显示,是否挂载上。

2、挂载参数的修改

  • 客户端进入挂载点,mount命令显示其挂载模式的权限,刚开始都是ro只读的权限。
  • vim /etc/auto.pub       修改挂载目录的权限,为只读挂载,版本为3     内容如下:westos -ro,vers=3 172.25.254.223:/westos
  • 重启服务
  • 再次进入挂载点,mount显示其挂载权限,已经修改。

四、指定用户端可写:

     总的来说,就三个操作。

步骤如下:  

  • 客户端:1、给挂载目录rw权限。
  • 存储服务器:2、给共享目录权限,3、给sync rw权限。

下面对相应步骤,作出分析。

1、在客户端给挂载目录rw权限

给了之后,还是不可以对在共享目录下创建文件。显示只读权限。

westos -rw,vers=3 172.25.254.223:/westos

2、存储服务器端给共享目录权限

  • chmod 777 /westos  便于测试,就直接给了777权限

3、给sync rw权限

  • vim /etc/exports     内容如下:  /westos   *(sync,rw)
  • exportfs -rv   刷新文件

测试:在客户端,进入该共享目录,可以最该目录进行操作。

ls -l   可以看到,客户端新建的文件身份是nfsnobody匿名用户

 

指定客户端uid的身份

步骤如下:

存储服务器:

  •      vim /etc/exports    内容如下:/westos     *(sync,rw,anonuid=1001)

 

客户端进入挂载点:

             重新建立一个文件,可见身份是uid为1001(客户端没有id为1001的用户时,用id查看)

假如客户端,1001对应的用户时student那么,ls -l现实的文件对应的uid就是student

 

总结:其实就是在那个端看文件的身份,uid就对应的是哪个端的用户,该端没有uid对应的用户,则直接显示uid。

  

指定客户端gid身份      

存储服务端操作:

使创建文件的所有人和所有组具有身份,而不是匿名用户
在服务端创建用户并修改文件
useradd westos
id westos
1001 1001 1001
vim /etc/exports
/westos_nfs *(sync,rw)  172.25.254.123  (rw,anonuid=1001,anongid1001)
exportfs -rv 刷新

中间加上的IP表示,只有该主机才可以使用223的共享目录

在客户端测试

指定客户端新建文件是root身份

   步骤如下:

  存储服务器:

  •      vim /etc/exports    内容如下:/westos     *(sync,rw,no_root_squash)

即加上no_root_squash

     含义:当客户端是root时,不做用户身份转换,沿用服务器端的root用户。

测试:在客户端进入共享目录,重新创建文件,ls -l显示,其用户身份为root,此时参数起作用,不进行root的身份转换。

当客户端用其它用户对共享目录进行操作时:

客户端创建用户:
useradd student      id是1001

cd /pub/mount_catalog
touch

只允许指定主机对共享目录可写,具有相应的用户身份,其他用

/westos_nfs  *(sync,rw) 172.25.254.64(rw,anonuid=1001,anongid1001)

all_squash表示所有的用户都转换成匿名匿名用户,

 

如果什么都不加,没有squash,不进行转换,只有root用户转换成匿名用户。

实验准备:客户端创建student用户,id是1000

服务端创建kiosk用户,id也是1000

exports里,只添加noneuid=1001,noneuid=1002,

步骤:客户端:切换到student用户,创建文件,在客户端显示

           服务端:ls -l  显示文件的uid。

 

NFS服务的主配置文件:

/etc/exports:
     格式:[共享的目录]   [主机名或IP(参数,参数)]
 

 当将同一目录共享给多个客户机,但对每个客户机提供的权限不同时,可以这样:

     [共享的目录]  [主机名1或IP1(参数1,参数2)]  [主机名2或IP2(参数3,参数4)]
第一列:欲共享出去的目录,

    也就是想共享到网络中的文件系统;
第二列:可访问主机

192.168.152.13 指定IP地址的主机
nfsclient.test.com 指定域名的主机
192.168.1.0/24 指定网段中的所有主机
*.test.com        指定域下的所有主机

*                       所有主机
第三列:共享参数

下面是一些NFS共享的常用参数:
 ro                    只读访问
 rw                   读写访问
 sync                所有数据在请求时写入共享
 async              NFS在写入数据前可以相应请求
 secure             NFS通过1024以下的安全TCP/IP端口发送
 insecure          NFS通过1024以上的端口发送
 wdelay            如果多个用户要写入NFS目录,则归组写入(默认)
 no_wdelay      如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。
 Hide                在NFS共享目录中不共享其子目录
 no_hide           共享NFS目录的子目录
 subtree_check   如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)
 no_subtree_check   和上面相对,不检查父目录权限
 all_squash               共享文件的UID和GID映射匿名用户anonymous,适合公用目录。
 no_all_squash         保留共享文件的UID和GID(默认)
 root_squash             root用户的所有请求映射成如anonymous用户一样的权限(默认)
 no_root_squas         root用户具有根目录的完全管理访问权限
 anonuid=xxx            指定NFS服务器/etc/passwd文件中匿名用户的UID

例如可以编辑/etc/exports为:

/tmp *(rw,no_root_squash)
/home/public 192.168.0.*(rw) *(ro)
/home/test 192.168.0.100(rw)

/home/linux *.the9.com(rw,all_squash,anonuid=40,anongid=40)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值