实战解读NFS共享存储 这些你知道吗?

实战解读NFS共享存储 这些你知道吗?·无NFS文件共享存储·当用户user-A通过互联网上传文件时,经过负载均衡,随机或者定向分配到某个节点。

欢迎大家来到IT世界,在知识的湖畔探索吧!

把照片上传到服务器,有时候会看不到,刷新下浏览器又可以看到了?要解决这个疑问,先学习NFS共享存储吧。

实战解读NFS共享存储 这些你知道吗?

— 为什么要NFS共享存储 —

我们通过架构分析为什么需要NFS共享存储?

·无NFS文件共享存储·

当用户user-A通过互联网上传文件时,经过负载均衡,随机或者定向分配到某个节点。但是当用户user-B去下载这个文件的时候,并不确定会向哪个节点发送请求,这样会导致用户存在一定几率下载不到的情况,如下图所示。

实战解读NFS共享存储 这些你知道吗?

·有NFS文件共享存储·

当用户user-A通过互联网上传文件时,经过负载均衡,无论发送到哪个节点都会被存储到NFS文件服务器。但是当用户user-B去下载这个文件的时候,任何节点都可以读取NFS文件服务器的文件,如下图所示。

实战解读NFS共享存储 这些你知道吗?

综上,如果WEB服务器后端没有共享存储,一个比较明显的问题是:用户第一次可能会访问不到自己刚上传的图片,这对于用户来说是不可以接受的,会影响体验。

— 快速了解NFS —

·NFS基础知识·

NFS简称网络文件系统,基于内核的文件系统,通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件。其主要功能是通过局域网让不同的主机之间可以共享文件或目录。

·NFS工作原理·

用户进程访问NFS客户端使用不同的函数对数据进行处理。NFS客户端通过TCP/IP的方式传递给NFS服务端。NFS服务端接收到请求后,会先调用portmap进程进行端口映射。nfsd进程用于判断NFS客户端是否拥有连接NFS服务端。rpc.mount进程判断客户端是否有对应的权限进行验证。idmap进程实现用户映射和压缩。最后NFS服务端会将对应请求的函数转换为本地能识别的命令,传递至内核,由内核驱动硬件。

实战解读NFS共享存储 这些你知道吗?

— 多台客户端统一用户NFS —

·案例需求·

多台NFS客户机挂载同一台NFS服务器时,每台客户机都能对共享文件进行读写操作需求,要求NFS客户端用户写入的文件所有者和所属组保持一致。

·解决思路·

让所有NFS客户端写入到NFS Server的目录或文件在NFS Server上的用户和组都是同一个名称(hanmingze),并保持UID和GID一致。

·服务器信息·

使用一台服务器(bj-nfs-m-164)和两台客户机(bj-web-2-166和bj-web-2-167)进行测试,服务器基本环境描述信息如下图所示。

实战解读NFS共享存储 这些你知道吗?

确认NFS服务器和客户端防火墙和SEILNUX都已经关闭,如下代码所示。

[root@nfs_m_164 ~]#sestatus 
SELinux status: disabled
[root@nfs_m_164 ~]#/etc/init.d/iptables status
iptables: Firewall is not running.
[root@nfs_s_165 ~]#sestatus 
SELinux status: disabled
[root@nfs_s_165 ~]#/etc/init.d/iptables status
iptables: Firewall is not running.
[root@apache_166 ~]#sestatus 
SELinux status: disabled
[root@apache_166 ~]#/etc/init.d/iptables status
iptables: Firewall is not running.
[root@apache_167 ~]#sestatus 
SELinux status: disabled
[root@apache_167 ~]#/etc/init.d/iptables status
iptables: Firewall is not running.

欢迎大家来到IT世界,在知识的湖畔探索吧!

上述代码返回结果中可以看到,iptables防火墙和SELINUX都已经处于关闭状态。

·实施和测试·

1.创建NFS共享用户

创建一个NFS共享用户(hanmingze),并且所有机器的UID和GID都一样。

(1)在nfs-server上:useradd -u 666 hanmingze。

欢迎大家来到IT世界,在知识的湖畔探索吧!
useradd -u 666 hanmingze

创建后用id hanmingze查看,可用groupmod -g指令更改用户的gid,如下代码所示。

groupmod -g 666 hanmingze
[root@nfs_m_164 ~]#useradd -u 666 hanmingze
[root@nfs_m_164 ~]#groupadd -g 666 hanmingze
groupadd: group 'hanmingze' already exists
[root@nfs_m_164 ~]#grep hanmingze /etc/passwd
hanmingze:x:666:666::/home/hanmingze:/bin/bash
[root@nfs_m_164 ~]#id hanmingze
uid=666(hanmingze) gid=666(hanmingze) groups=666(hanmingze)

上述代码中可以看到,hanmingze用户的用户ID和组ID均为666。

(2)在nfs-client新建用户

欢迎大家来到IT世界,在知识的湖畔探索吧!
[root@apache_166 ~]#useradd -u 666 hanmingze
[root@apache_166 ~]#id hanmingze
uid=666(hanmingze) gid=666(hanmingze) groups=666(hanmingze)
[root@apache_167 ~]#useradd -u 666 hanmingze
[root@apache_167 ~]#id hanmingze
uid=666(hanmingze) gid=666(hanmingze) groups=666(hanmingze)

上述代码中可以看到,hanmingze用户的用户ID和组ID均为666。

2.配置/etc/exports文件

配置内容如下:


[root@nfs_m_164 ~]#cat /etc/exports 
/data/bak/ 192.168.2.165(rw,sync,root_squash,all_squash,anonuid=65534,anongid=65534)
/data/web/ 192.168.2.166(rw,no_root_squash,sync)
/data/web/ 192.168.2.167(rw,sync,insecure,all_squash)
#2019/06-02
/data/bj_web_share 192.168.2.166(rw,sync,all_squash,anonuid=666,anongid=666)
/data/bj_web_share 192.168.2.167(rw,sync,all_squash,anonuid=666,anongid=666)
/etc/exports核心配置内容解释:
all_squash:保证所有用户都能压缩成一个用户。
anonuid=666和anongid=666:指定每个用户下都有并且存在的。

创建共享目录

[root@nfs_m_164 ~]#mkdir -pv /data/bj_web_share
mkdir: created directory `/data/bj_web_share'

上述代码创建共享目录/data/bj_web_share。

3.平滑重启NFS服务生效

[root@nfs_m_164 ~]#exportfs -avr
exporting 192.168.2.166:/data/bj_web_share
exporting 192.168.2.167:/data/bj_web_share
exporting 192.168.2.166:/data/web
exporting 192.168.2.167:/data/web
exporting 192.168.2.165:/data/bak

上述代码不重启rpcbind和NFS服务,让内核读取/etc/exports配置文件。

4.在客户端挂载


[root@apache_166 ~]#showmount -e 192.168.2.164
Export list for 192.168.2.164:
/data/bj_web_share 192.168.2.167,192.168.2.166
/data/web 192.168.2.167,192.168.2.166
/data/bak 192.168.2.165
[root@apache_166 ~]#
[root@apache_166 ~]#
[root@apache_166 ~]#mount -t nfs 192.168.2.164:/data/bj_web_share /mnt
[root@apache_166 ~]#df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg_www-lv_root
 ext4 8.3G 1.1G 6.9G 14% /
tmpfs tmpfs 931M 0 931M 0% /dev/shm
/dev/sda1 ext4 477M 28M 425M 7% /boot
192.168.2.164:/data/web/
 nfs 8.3G 807M 7.1G 11% /usr/local/apache/htdocs
192.168.2.164:/data/bj_web_share
 nfs 8.3G 807M 7.1G 11% /mnt
[root@apache_167 ~]#mount -t nfs 192.168.2.164:/data/bj_web_share /mnt
[root@apache_167 ~]#df -TH
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg_www-lv_root
 ext4 8.9G 1.1G 7.4G 13% /
tmpfs tmpfs 977M 0 977M 0% /dev/shm
/dev/sda1 ext4 500M 29M 445M 7% /boot
192.168.2.164:/data/web/
 nfs 8.9G 846M 7.6G 11% /usr/local/apache/htdocs
192.168.2.164:/data/bj_web_share
 nfs 8.9G 846M 7.6G 11% /mnt

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/37618.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信