传统两种不同的存储解决方案:NFS和SAN
新型的解决方案:云存储
NFS(Network File System)网络文件系统。是一种用于在计算机网络上共享文件的协议。它允许在不同的计算机之间共享文件和目录,就好像它们在本地系统上一样
NFS服务器可以保障数据一致性
SAN(Storage Area Network)存储区域网络,采用网状通道FC(Fibre Channel)技术,通过FC交换机连接存储阵列和服务器主机,建立用于数据存储的区域网络
设备:
1、专业的存储服务器,有很大块磁盘,总容量非常大
2、专业的光纤交换机
3、业务服务器
SAN和NFS的区别:
SAN使用光纤,速度快。NFS使用传统的网络来传输数据,速度有线,性能一般,但成本低
1、在NFS服务器(192.168.232.164)和web服务器上下载,开启NFS服务
yum install nfs-utils -y
service nfs restart
2、编辑共享文件的配置文件
vim /etc/exports
/web 192.168.232.0/24(rw,all_squash,sync)
/web
是共享的文件夹的路径,不会自动产生,需要新建
192.168.232.0
是允许来访问的客户机的IP地址段
(rw,all_squash,sync)
表示权限的限制
rw
:表示允许客户端具有读写权限
ro
:表示客户机只读
all_squash
:表示将所有客户端用户映射到匿名用户,即客户端的文件访问权限将被限制为匿名用户的权限,以提高安全性。任何客户机上的用户访问过来的时候,都把他当做普通用户
root_squash
:当NFS客户端以root管理员访问时,映射为NFS服务器匿名用户
no)root_squash
:当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员
sync
:同步。表示在写入文件时进行同步,确保数据同步写入磁盘。
async
:异步。优先将数据保存到内存,然后再写入磁盘,效率更高,但可能丢失数据
修改完配置文件之后要刷新服务
service nfs resart 或 exportfs -rv
3、在/web文件夹下新建一个html文件
[root@nfs web]# cat index.html
welcome to index!
4、在其他的web服务器上挂载使用共享目录
mount 192.168.232.164:/web /usr/local/scnginx99/html/
源路径文件(NFS) 本机的挂载点
[root@web-1 scnginx99]# pwd
/usr/local/scnginx99
[root@web-1 scnginx99]# df
文件系统 1K-块 已用 可用 已用% 挂载点
devtmpfs 919456 0 919456 0% /dev
tmpfs 931516 0 931516 0% /dev/shm
tmpfs 931516 9772 921744 2% /run
tmpfs 931516 0 931516 0% /sys/fs/cgroup
/dev/mapper/centos-root 17811456 2067620 15743836 12% /
/dev/sda1 1038336 153868 884468 15% /boot
tmpfs 186304 0 186304 0% /run/user/0
192.168.232.164:/web 17811456 2067968 15743488 12% /usr/local/scnginx99/html
这个时候再去访问,就会显示NFS服务器中的index.html
页面
卸载,再访问就会访问backend server的index.html文件
umount /usr/local/scnginx99/html
将这个命令写在/etc/rc.local
目录下,授予执行权限,实现开机挂载
vim /etc/rc.local
mount 192.168.232.164:/web /usr/local/scnginx99/html/
chmod +x /etc/rc.local
修改/etc/fstab
文件,也可以实现自动挂载
vim /etc/fstab
192.168.232.164:/web /usr/local/scnginx99/html nfs defaults 0 0
在backend server服务器上查看NFS机器共享了哪些目录出来,可以使用
[root@web-1 conf]# showmount -e 192.168.232.164
Export list for 192.168.232.164:
/web 192.168.232.0/24
NFS工作原理:
NFS实际上不提供对外服务,他通过RPC(Remote Procedure Call)远程调用来实现,RPC最主要的功能就是在指定每个NFS功能所对应的port number,并回报给客户端,让客户端可以连接到正确的端口上去。
那RPC是如何知道每个NFS的端口呢?
这是因为当服务器在启动NFS时会随机取用数个端口,并主动向RPC注册,因此RPC可以知道每个端口对应的NFS功能
NFS自己没有对外监听某个端口号,而是外包给了RPC服务,RPC帮助NFS去监听端口,然后告诉客户机和本机的那个进程对应的端口连续