NFS 文件系统搭建+对接openstack

NFS 文件系统搭建

NFS是Network File System的缩写,中文称为网络文件系统,它的主要功能是通过网络(一个局域网)让不同的主机系统之间可以共享文件或目录,NFS的客户端(一般为应用服务器,例如web)可以通过挂载(mount)的方式将NFS服务器共享的数据目录挂载到NFS客户端本地系统中(就是某一个关在点下),从客户端本地看,NFS服务器端共享目录就好像是客户端自己的磁盘分区或者目录一样,而实际上却是远端的NFS服务器的目录。
NFS网络文件系统很像Windows系统的网络共享、安全功能、网络驱动器映射,这也和linux的samba服务类似,只不过一般情况下,Windows网络共享服务或samba服务用户办公局域网共享,而互联网中小型网站集群架构后端常用NFS进行数据共享,若是大型网站,那么有可能还会用到更复杂的分布式文件系统Moosefs(mfs)、GlusterFS。

在企业集群架构的工作场景中,NFS网络文件系统一般被用来存储共享视频、图片、附件等静态资源文件,通常网站用户上传的文件都会放到NFS共享中,例如BBS产品的图片、附件、头像(网站BBS的程序不要放在NFS共享中),然后前端所有节点在访问这些静态资源时都会读取NFS存储上的资源。
NFS是当前互联网系统架构中最常用的数据存储服务之一,特别是中小型网站应用频率更高。

实验环境:

CentOS7.2 NFS server 服务器(IP: 10.0.0.30)
CentOS7.2 NFS 客户端1(IP: 192.168.200.4)
windows 10 NFS 客户端2(IP:192.168.10.56)

1、安装NFS 服务器

nfs-utils:nfs服务的主程序,包括rpc.nfsd、rpc.mountd两个daemons和相关的文档说明及执行命令文件等
rpcbind:centos6下面的rpc主程序(centos5下的是portmap)

[[email protected] ~]# yum install nfs-utils rpcbind -y

[[email protected] ~]# systemctl start rpcbind

[[email protected] ~]# systemctl start nfs


[[email protected] ~]# vi /etc/exports

/data 192.168.100.10(rw,sync,all_squash)
/data 192.168.10.0/24(rw,sync,all_squash)

[[email protected] ~]# systemctl restart rpcbind
[[email protected] ~]# systemctl restart nfs
[[email protected] ~]# systemctl enable nfs-server
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
[[email protected] mnt]# systemctl enable rpcbind
到此 NFS  搭建完成

2、nfs配置文件的格式
NFS共享的目录 NFS客户端地址(参1,参2,……) NFS客户端地址2(参1,参2,……)

/data 10.0.0.30(rw,sync)   /data  192.168.10.0/24(rw,sync)

常用格式说明 实例
配置案例1 /data 172.16.1.0/24(rw,sync) 允许客户端读写,并且数据同步写到服务器的磁盘里
配置案例2 /data 172.16.1.0/24(rw,sync,all_squash,anonuid=888,anongid=888) 允许客户端读写,并且数据同步写到服务器的磁盘里,并且指定客户端的uid和gid,早期生产环境中的一种配置,适合多客户端共享一个NFS单目录,如果所有服务器的nfsnodoby账户的UID相同,则本案例就没什么意义了
配置案例3 /data 172.16.1.0/24(ro) 只读共享,用途:例如在生产环境中开发人员有查看服务器日志的需求,但是又不希望给开发服务器的权限,那么就可以给开发提供从某个测试服务器NFS客户端上查看某个生产服务器日志目录(NFS共享目录)的权限,但是,这不是唯一的方法.
客户端地址 具体地址 说明
授权单一客户端访问NFS 172.16.1.41 一般情况下,生产环境中此配置不多
授权整个网段访问NFS 172.16.1.0/24 指定网段为生产环境中最常见的配置,配置简单、维护方便
授权整个网段可访问NFS 172.0.0.* 指定网段的另外写法(不推荐使用)
授权某个域名客户端访问 nfs.lzhnb.com 生产环境中一般不使用
授权整个域名客户端访问 *.lzhnb.com 生产环境中一般不使用

NFS配置参数权限,具体如下表

参数名称 参数用途
rw(熟记) 表示可读写权限
sync(熟记) 请求或写入数据时,数据同步写入到NFS Server的硬盘后才返回,优点:数据安全不会丢,缺点:性能比不启用该参数要差
async(熟记) 写入数据时会先写到内存缓冲区,直到硬盘有空档才会在写入磁盘,这样可以提升写入效率。风险是若服务器宕机或不正常关机,会损失缓冲区中未写入硬盘的数据(解决办法:服务器主板电池或UPS不间断电源)
all_squash(熟记) 不管访问NFS Server共享目录的用户身份如何,它的权限都将被压缩为匿名用户,同时它的UID和GID都会变成nfsnobody账号身份,在早期多个NFS客户端同时读写NFS Server数据时,这个参数很有用,在生产环境中配置NFS的重要技巧:1)确保所有客户端服务器对NFS共享目录具备相同的用户访问权限,all_squash把所有客户端都压缩成匿名用户(UID相同),就是anonuid,anongid指定的UID和GID相同,2)所有的客户端和服务器端都需要有一个相同的UID和GID的用户,nfsnodoby(UID必须相同)
anonuid(熟记) 参数以anon*开头即值anonymous匿名用户,这个用户的UID设置值通常为nfsnobody的UID值,当然我们也可以自行设置这个UID值。但是,UID必须存在于/etc/passwd中。在多个NFS Clients时,如多台web server共享一个NFS目录时,通过这个参数可以使得不同的NFS Clients写入的数据对所有NFS Clients保持同样的用户权限,即为配置的匿名UID对应用户权限,这个参数很有用。一般默认就好
anongid(熟记) 同anonuid,区别是把uid(用户id)换成gid(组id)

 

ro 表示只读权限

 2、分别使用centos 7.2,windows10对NFS进行测试。

centos7.2:

[[email protected] ~]# mount -t nfs 192.168.200.4:/mnt /opt/
    
[[email protected] ~]# mount -t nfs 192.168.200.4:/mnt /mnt/

[[email protected] ~]# cd /mnt/
[[email protected] mnt]# ls
volume-8487f7db-f628-42ab-b9c4-2ebf2693166b

[[email protected] mnt]# df -Th
Filesystem         Type      Size  Used Avail Use% Mounted on
/dev/vda1          xfs        20G  1.2G   19G   6% /
devtmpfs           devtmpfs  984M     0  984M   0% /dev
tmpfs              tmpfs    1001M     0 1001M   0% /dev/shm
tmpfs              tmpfs    1001M   17M  985M   2% /run
tmpfs              tmpfs    1001M     0 1001M   0% /sys/fs/cgroup
/dev/vdb1          xfs        50G  7.2G   43G  15% /opt/osd1
192.168.200.4:/mnt nfs4       50G   33M   50G   1% /mnt

windows 10:

 

NFS 文件系统搭建+对接openstack

NFS 文件系统搭建+对接openstack

NFS 文件系统搭建+对接openstack

 

 

然后等待安装完成,安装完成后打开cmd:

NFS 文件系统搭建+对接openstack

 

 NFS 文件系统搭建+对接openstack