您的位置:首页 > 其它

实战项目-NFS存储共享服务

2020-06-07 04:49 127 查看

目录

 

一、什么是NFS?

二、NFS存储服务的作用

三、NFS服务部署流程

1)服务端部署

第一步:下载安装软件   

第二步:编写nfs服务配置文件    

第三步:创建一个存储目录

第四步:启动服务程序

2)部署客户端

第一步:安装nfs服务软件      --用于挂载识别nfs文件系统

第二步:实现远程挂载共享目录  

四、NFS服务工作原理

1)NFS服务端

2)客户端

五、nfs服务端详细配置说明

 1)实现多个网段主机可以进行挂载

 2)NFS配置参数权限

 3)企业互联网公司如何配置NFS 各种squash参数

1.保证网站存储服务器用户数据安全性:

2.如何查看nfs默认配置

3.如何让root用户可以操作管理www用户管理的data目录

4.企业中如何编辑nfs配置文件

5.nfs服务问题

六、nfs客户端详细配置说明

1)如何实现自动挂载

2)centos6:无法实现网路存储服务自动挂载原因

3)centos7:无法实现网路存储服务自动挂载原因

4)客户端mount命令参数

5)客户端如何卸载

 

一、什么是NFS?

        NFS是Network File System的缩写,中文意思是网络文件系统,它的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录。NFS客户端(一般为应用服务器,例如web)可以通过挂载(mount)的方式将NFS服务器端共享的数据目录挂载到NFS客户端本地系统中(就是某一个挂载点下)。从客户端本地看,NFS服务器端共享的目录就好像是客户端自己的磁盘分区或者目录一样,而实际上却是远端的NFS服务器的目录。

        NFS网络文件系统很像Windows系统的网络共享,安全功能,网络驱动器映射,这也和Linux系统里的samba服务类似。只不过一般情况下,Windows网络共享服务或samba服务用于办公室局域网共享,而互联网中小型网站集群机构后端常用NFS进行数据共享,如果大型网站,那么有可能还会用到更复杂的分布式文件系统,例如:Moosefs(mfs)、GlusterFS、FastDFS等。

中小型公司:

    samba                    windows--linux之间数据传输  Linux部署samba
    NFS                        linux--linux之间数据传输

门户网站:

    一个用户                   -- 存储服务器
    上万个用户                -- 存储服务器
    利用分布式存储   
    Moosefs(mfs)      比较落伍,初学学习比较简单
    GlusterFS      
    FastDFS                  企业应用较多

二、NFS存储服务的作用

    1) 实现数据的共享存储
    2) 编写数据操作管理
    3) 节省购买服务器磁盘开销 淘宝--上万 用电开销    

三、NFS服务部署流程

RPC: 远程过程调用服务程序--- 相当于租房的中介(网络编程支持)

1)服务端部署

    第一步:下载安装软件
   

[code]rpm -qa|grep -E "nfs|rpc"
yum install -y nfs-utils rpcbind

   第二步:编写nfs服务配置文件    

[code]vim /etc/exports (man exports)

    01     02(03)
    01: 设置数据存储的目录 /data
    02: 设置网络一个白名单 (允许哪些主机连接到存储服务器进行数据存储)
    03: 配置存储目录的权限信息 存储目录一些功能
    /data   172.16.1.0/24(rw,sync)

   第三步:创建一个存储目录

   

[code]mkdir /data
chown nfsnobody.nfsnobody /data       --nfsnobody用户在安装nfs-utils软件后自动创建

  第四步:启动服务程序

    先启动 rpc服务
    

[code]systemctl start rpcbind.service
systemctl enable rpcbind.service


    再启动 nfs服务
    

[code]systemctl start nfs
systemctl enable nfs

2)部署客户端

  第一步:安装nfs服务软件      --用于挂载识别nfs文件系统

[code]yum install -y nfs-utils

  第二步:实现远程挂载共享目录
  

[code]mount -t nfs 172.16.1.31:/data  /mnt

 

四、NFS服务工作原理

1)NFS服务端

    1. 启动rpc服务,开启111端口
    2. 启动nfs服务
    3. 实现nfs服务进程和端口号的注册
    
    补充: 检查nfs服务进程与端口注册信息
    没有注册时候:
    

[code][root@nfs01 ~]# rpcinfo -p 172.16.1.31           --查看nfs服务注册信息


    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
    nfs服务注册之后信息:
    

[code][root@nfs01 ~]# rpcinfo -p 172.16.1.31


    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  53997  status
     100024    1   tcp  49863  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

    2)客户端

    1. 建立TCP网络连接
    2. 客户端执行挂载命令,进行远程挂载
    3. 可以实现数据远程传输存储

五、nfs服务端详细配置说明

 1)实现多个网段主机可以进行挂载

    第一种方法:

[code]vim /etc/exports


    /data   172.16.1.0/24(rw,sync) 10.0.0.0/24(rw,sync)
    第二种方法:
    /data   172.16.1.0/24(rw,sync) 
    /data   10.0.0.0/24(rw,sync)
    
    总结:共享目录的权限和哪些因素有关:
    1)和存储目录的本身权限有关 (755 属主:nfsnobody)
    2)和配置文件中的权限配置有关 rw/ro  xxx_squash  anonuid/anongid
    3)和客户端挂载命令的参数有关  ro

 

 2)NFS配置参数权限

rw 存储目录是否有读写权限
ro 存储目录是否时只读权限
sync 同步方式存储数据 直接将数据保存到磁盘(数据存储安全)
async 异步方式存储数据 直接将数据保存到内存(提高数据存储效率)
no_root_squash 不要将root用户身份进行转换
root_squash 将root用户身份进行转换
all_squash 将所有用户身份都进行转换 
no_all_squash 不要将普通用户身份进行转换

操作演示all_squash参数功能:
  

[code][yaobin@backup mnt]$vim /etc/exports
/data   172.16.1.0/24(ro,sync,all_squash)
[yaobin@backup mnt]$ touch yaobin_data.txt
[yaobin@backup mnt]$ ll
total 4
-rw-rw-r-- 1 nfsnobody nfsnobody 0 May  9 12:11 yaobin_data.txt

 

 操作演示no_all_squash参数功能:
   

[code][root@nfs01 ~]# vim /etc/exports
/data   172.16.1.0/24(rw,sync,no_all_squash)
[yaobin@backup mnt]$ touch yaobin_data02.txt
touch: cannot touch ‘yaobin_data02.txt’: Permission denied
解决权限问题:
[root@nfs01 ~]# chmod o+w /data/
[root@nfs01 ~]# ll /data/ -d
drwxr-xrwx. 2 nfsnobody nfsnobody 52 May  9 12:11 /data/
[yaobin@backup mnt]$ touch yaobin_data02.txt
[yaobin@backup mnt]$ ll
total 4
-rw-r--r-- 1 nfsnobody nfsnobody 7 May  9 10:57 backup_data.txt
-rw-rw-r-- 1 yaobin   yaobin    0 May  9 12:17 yaobin_data02.txt
-rw-rw-r-- 1 nfsnobody nfsnobody 0 May  9 12:11 yaobin_data.txt

 

操作演示root_squash参数功能:
  

[code][root@backup mnt]# vim /etc/exports
/data   172.16.1.0/24(rw,sync,root_squash)
[root@backup mnt]# touch root_data.txt
[root@backup mnt]# ll
-rw-r--r-- 1 nfsnobody nfsnobody 0 May  9 12:20 root_data.txt


 操作演示no_root_squash参数功能
   

[code][root@backup mnt]# ll
total 4    -rw-r--r-- 1 root      root      0 May  9 12:23 root_data02.txt

 3)企业互联网公司如何配置NFS 各种squash参数

 1.保证网站存储服务器用户数据安全性:

    no_all_squash  需要进行配置   共享目录权限为www(确保客户端用户 服务端用户 uid数值一致)
    root_squash    需要进行配置   root---nfsnobody    data目录---www
    以上默认配置(很多服务默认配置都是从安全角度出发)


 2.如何查看nfs默认配置

   

[code]cat /var/lib/nfs/etab    --- 记录nfs服务的默认配置记录信息
/data   172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,n    o_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,secure,root_squash,no_all_squash)

 

3.如何让root用户可以操作管理www用户管理的data目录

    root  --- root_squash --- www  ---操作--- data目录
    anonuid=65534,anongid=65534    --- 可以指定映射的用户信息

    修改映射用户:www=1002
    /data   172.16.1.0/24(rw,sync,anonuid=1002,anongid=1002)
    

4.企业中如何编辑nfs配置文件

    01. 通用方法
    /data   172.16.1.0/24(rw,sync)
    02. 特殊情况 (让部分人员不能操作存储目录 可以看目录中的数据)
    /data   10.0.0.0/24(ro,sync)
    03. 修改默认的匿名用户   --映射用户
    /data   10.0.0.0/24(ro,sync,anonuid=xxx,anongid=xxx)
    

5.nfs服务问题

    01. nfs服务重启,挂载后创建数据比较慢
    服务器重启方式不正确
    服务重启:
    01. restart 重启服务                 强制断开所有连接            用户感受不好
    02. reload  重启服务(平滑重启)     强制断开没有数据传输的连接  提升用户感受

六、nfs客户端详细配置说明

     mount -t nfs 172.16.1.31:/data  /mnt    

1)如何实现自动挂载

    01. 利用rc.local
  

[code] echo "mount -t nfs 172.16.1.31:/data /mnt" >>/etc/rc.local


    02. 利用fstab文件
    

[code]vim /etc/fstab
172.16.1.31:/data      /mnt         nfs     defaults        0 0


    特殊的服务已经开启了

2)centos6:无法实现网路存储服务自动挂载原因

   根据系统服务启动顺序
    按照顺序依次启动  network服务--- sshd服务--- crond服务--- rsync服务--- rpcbind服务---  nfs服务
    先加载/etc/fstab  ---  network服务  --- autofs服务
    
    autofs服务程序:开机自动启动
    服务启动好之后,重新加载fstab  
    

 3)centos7:无法实现网路存储服务自动挂载原因

  根据系统服务启动顺序
    network服务
    sshd服务
    crond服务
    rsync服务
    先加载/etc/fstab  network服务
    autofs==centos7??

实现开机自动挂载
       /etc/rc.local   文件要有执行权限
       /etc/fstab      实现fstab文件挂载自动加载nfs存储目录 必须让remote-fs.target服务开机自启  
                       centos7  必须启动   remote-fs.target 
                       centos6  必须启动   netfs                      

需求问题:如何找到一台服务器开机运行了哪些服务

[code]ll /etc/systemd/system/multi-user.target.wants/

NFS服务挂载不上排查方法:
       服务端进行排查:
       1. 检查nfs进程信息是否注册
        

[code]rpcinfo -p localhost/172.16.1.31


          问题原因:
          服务启动顺序不对,没有启动nfs服务
       2. 检查有没有可用存储目录
        

[code]showmount -e 172.16.1.31


          问题原因: 
          配置文件编写有问题,重启nfs服务
       3. 在服务端进行挂载测试
          是否能够在存储目录中创建或删除数据
       客户端测试:
       1. 检查nfs进程信息是否注册
        

[code]rpcinfo -p localhost/172.16.1.31


          问题原因:
          服务启动顺序不对,没有启动nfs服务
       2. 检查有没有可用存储目录
          

[code]showmount -e 172.16.1.31


          问题原因: 
          配置文件编写有问题,重启nfs服务
          网络问题
          

[code]ping 172.16.1.31
telnet 172.16.1.31 111

 

4)客户端mount命令参数

rw 实现挂载后挂载点目录可读可写  (默认)
ro 实现挂载后挂载点目录可读可写
suid 在共享目录中可以让setuid权限位生效  (默认)
nosuid 在共享目录中可以让setuid权限位失效   提高共享目录的安全性
exec 共享目录中的执行文件可以直接执行
noexec 共享目录中的执行文件可以无法直接执行 提供共享目录的安全性
auto 可以实现自动挂载     mount -a 实现加载fstab文件自动挂载
noauto 不可以实现自动挂载
nouser 禁止普通用户可以卸载挂载点
user 允许普通用户可以卸载挂载点

5)客户端如何卸载

[code]umount -lf /mnt    --- 强制卸载挂载点


    -l  不退出挂载点目录进行卸载  
    -f  强制进行卸载操作

 

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: