NFS存储服务部署(上)

1.1 NFS服务介绍

1.1.1 什么是NFS?

1. NFS——Network File Systemt网络文件系统,叫称为网络共享文件系统

2. 作用:通过网络(一般为局域网)让不同主机系统之间可以共享文件

3. NFS服务和winodws系统的网络共享很相似,但NFS无法部署在windows

4. windowslinux网络共享使用FTPsamba,它们都支持windowslinux之间共享

5. 如大型网站,还可能用到分布式文件系统,如:moosefsmfs )、gfsfastdfs

1.1.2 什么是文件系统?

1. 在磁盘或分区中组织管理文件的一种方式

2. 企业中:磁盘先做raid——分区——格式化(创建文件系统)——挂载使用

1.1.3 NFS在企业中的应用场景

1. 为什么要用NFS软件?

  可以实现web集群中服务器数据一致性。

1. 因负载均衡服务器会将访问流量分流处理,这样不会便于用户相互之间访问

2. 服务器之间的数据同步虽然实现用户互访,但实现过程相对复杂

3. NFS服务器可以统一管理存储用户访问数据,实现用户互访

NFS存储服务部署(上)_存储 

1.1.4 共享存储服务分类:

硬件存储IBM oracle(收购了sunEMC  (去IOE,用BAT

软件存储NFS  mfs  FTP  samba

1.2 NFS系统原理

1.2.1 简单描述NFS工作原理:

1. 部署好NFS服务,在NFS服务端创建一个video共享目录

2. web服务器(NFS客户端),创建一个本地video目录,作为一个挂载点

3. web服务器通过mount命令实现网络挂载(mount -nfs 172.16.1.41:/video),将NFS服务器上的

video目录挂载到本地video挂载点上

4. web服务器(NFS客户端)上在video目录中,增删改查的操作,都等价于在NFS服务器端video 目录中的操作

1.2.2 NFS系统挂载结构

 NFS存储服务部署(上)_存储_02

 

1.2.3 什么是RPC

remote procedure call 远程过程调用:端口号111

是一种通过网络向远程计算机上请求服务的一种协议。

1.2.4 NFS的工作流程

1. 启动RPC服务,建立中介服务

2. 启动NFS服务,开启房源信息,向RPC服务进行注册

3. RPC服务接收到NFS服务进程信息和对应端口号

4. NFS客户端向RPC服务111端口发出请求(访问共享目录)

5. RPC服务响应NFS客户端请求

6. NFS客户端与NFS服务端共享目录建立网络连接,实现数据网络存储

下图:用房东、中介、客户举例

NFS存储服务部署(上)_存储_03 

下图:没有RPC的情况是这样的,因每个服务进程对应的端口号不同,并且是随机的,所有对于客户端开说不知道该访问哪个端口。

 NFS存储服务部署(上)_NFS_04

下图:RPC服务的作用,NFS服务端的每个服务进程都会向RPC服务进程注册,客户端也只需访问RPC服务的111端口即可,由RPC服务来告诉客户端对于的服务与端口号。

NFS存储服务部署(上)_NFS_05 

1.2.5 当用户通过挂载访问NFS共享目录时的工作流程

NFS存储服务部署(上)_NFS_06 

 

1.3 NFS网络共享文件系统服务部署流程

1.3.1 NFS服务端部署流程

1. 检查NFS服务相关软件是否安装

    rpm -qa |egrep 'rpcbind|nfs-utils'

    如没有,则yum install rpcbind nfs-utils -y 安装一下。

2. 编写NFS服务配置文件

vim /etc/exports

1)定义共享目录,如下面的/data/目录就是要共享的目录

2)定义允许使用共享目录的主机或网络地址信息“24和(”之间没有空格3)(定义共享目录权限信息)

    /data 172.16.1.0/24(rw,sync,all_squash)

    保存退出

3)创建共享目录

    mkdir /data

4)授权共享目录

    系统默认有一个nfsnobody用户

    chown -R nfsnobody.nfsnobody /data

5)启动rpcbind、nfs-utils服务

    /etc/init.d/rpcbind start

    /etc/init.d/rfs start

    注:如果须重启服务,使用relod重新加载配置文件

6)本地检查测试

    rpcinfo -p localhost 查看RPC服务中是否有注册的进程服务和对应端口号

    showmount -e 172.16.1.31 检查是否有可以共享的目录



1.3.2 NFS客户端部署流程

1. 确认是否安装NFS服务相关软件

    rpm -qa |egrep 'rpc|nfs'

2. 检查局域网中是否存在共享存储服务(目录)

    rpcinfo -p 172.16.1.31 查看RPC服务中是否有注册的进程服务和对应端口号

    showmount -e 172.16.1.31 检查是否有可以共享的目录

3. 实现共享目录应用(局域网挂载)

    mount -t nfs 172.16.1.31:/data/ /mnt

    df -h

1.3.3 NFS服务常见进程

rpc.statd主要作用:检查数据存储的一致性

rpc.rquotad主要作用:控制磁盘配额

rpc.mountd主要作用:核对/etc/exports配置文件中的权限,和NFS服务器端本地文件系统权限

rpc.idpamd主要作用:实现用户压缩/映射(经用户压缩后,身份转换为nfsnobody)


ps -ef |grep "nfs|rpc"   #查看与NFS相关的进程

NFS存储服务部署(上)_存储_07 

 

1.3.4 NFS服务配置文件格式说明

1. man exports 查看格式

NFS存储服务部署(上)_存储_08 

第一段:要共享的目录(每个目录独占一行)

第二段:用于哪个网段或某个主机访问(主机:10.0.0.30,网络:10.0.0.0/24),后面没有空格接着写(权限)

1.3.5 影响访问NFS服务器的权限

1. NFS配置文件权限,中小括号内的rw权限

2. 本地文件系统权限,为了安全一般更改其属主

 

1.3.6 企业生产环境常见NFS案例

NFS存储服务部署(上)_NFS_09 

1.3.7 NFS配置参数权限 

1. rw参数:可读写

2. ro参数:只读

/data 172.16.1.0(ro,sync,all_squash) ro权限给开发人员用于读取配置文件,而不能修改

3. sync参数的作用:同步,保证数据的可靠性

同步异步对比:

异步:传输数据快、不可靠,容易丢(先存到内存中处理完后,最后在写到硬盘)

同步:安全可靠、传输数据慢(先经过内存,在写入到硬盘,在处理)

 

4. async参数:ups  AB双路电源

5. no_all_squash参数:所有用户都不映射(什么身份过来就是什么身份)

6. all_squash参数:所有用户都映射(成指定nfsnobody

7. root_squash参数:root用户映射(成指定nfsnobody

8. no _root_squash参数:不对root用户映射(进来NFS服务器后是root身份,权限 很大)

下图根据不同的用户是否进行身份压缩的一个说明:

NFS存储服务部署(上)_NFS_10                     NFS存储服务部署(上)_存储_11

 

 

 

 

1.3.8 企业实战需求:

问题 1. /data/共享目录权限固定为www用户管理

    2. NFS配置文件中,设置了all_squash参数(全部用户都压缩/映射)

    3. NFS客户端可以向共享目录存储数据

实现过程:

1. 设置/data/目录权限信息

    chown www.www /data/

    先保证有 www 用户

2. 编写NFS配置文件

1)先查看www用户的uid,gid信息

    id www

2)配置文件中小括号内加入www对应的uid,gid(anonuid=502,anongid=502)

    /data 172.16.1.0/24(rw,sync,all_squash,anonuid=502,anongid=502)

注:anonuid和anongid参数作用:将所有访问的用户进来NFS服务器后映射为www用户

1. 客户端要有NFS配置文件anonuid和anongid指定用户(如没有对应的用户,只有对应的uid也可以 访问,但ls -l /mnt查看目录信息时属主会显示为uid)

2. 所以客户端和服务端创建的映射用户,uid和gid信息需要保持一致(否则会权限不足)

3)重新加载nfs

    /etc/init.d/nfs reload

3. 客户端重新挂载共享目录

1)先卸载

    umount /mnt

2)再挂载

    mount -t nfs 172.16.1.31:/data /mnt

4.  进程数据输出测试

    touch /mnt/kai.txt 创建测试文件查看属主信息是否为www

    ls -l /mnt/kai.txt 查看用户属组信息


小伙伴们可以关注我的微信公众号:linux运维菜鸟之旅

NFS存储服务部署(上)_存储_12

关注“中国电信天津网厅”公众号,首次绑定可免费领2G流量,为你的学习提供流量! 

NFS存储服务部署(上)_存储_13