【分布式存储】分布式存储初步理解

1. NFS系统是什么?有哪些产品?

NFS(Network File System)即网络文件系统,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样

目前流行的分布式文件系统有许多,如MooseFS、FastDFS、GlusterFS、Ceph、MogileFS等,常见的分布式存储对比如下:

  • FastDFS:一个开源的轻量级分布式文件系统,是纯C语言开发的。它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。FastDFS 针对大量小文件存储有优势
  • GlusterFS:主要应用在集群系统中,具有很好的可扩展性。软件的结构设计良好,易于扩展和配置,通过各个模块的灵活搭配以得到针对性的解决方案。GlusterFS适合大文件,小文件性能相对较差。
  • MooseFS:比较接近GoogleFS的c++实现,通过fuse支持了标准的posix,支持FUSE,相对比较轻量级,对master服务器有单点依赖,用perl编写,算是通用的文件系统,可惜社区不是太活跃,性能相对其他几个来说较差,国内用的人比较多。
  • Ceph:C++编写,性能很高,支持Fuse,并且没有单点故障依赖;Ceph 是一种全新的存储方法,对应于 Swift 对象存储。在对象存储中,应用程序不会写入文件系统,而是使用存储中的直接 API 访问写入存储。因此,应用程序能够绕过操作系统的功能和限制。在openstack社区比较火,做虚机块存储用的很多!
  • GoogleFS:性能十分好,可扩展性强,可靠性强。用于大型的、分布式的、对大数据进行访问的应用。运用在廉价的硬件上。

2.分布式存储能解决单点故障吗?

能,至少ceph没有单点故障 另外,ClusterFS每个节点都是自己管理所有节点信息。应该也没有单点故障,但显然,节点多了,它的效率就下降了。

3. linux NFS系统(自带安装包)

这是个工具。能安装。在不同硬件下,不同操作系统之间,文件共享。 他是RPC服务器。不负责传输,传输交给RPC。所以不论客户端还是服务端,都必须启动RPC服务。 事实上任何一台计算机都可以是NFS服务器或NFS客户机,甚至同时为NFS 服务器和NFS客户机。 当用户想使用远程文件时只要用“mount”命令就可把远程文件系统挂接在自己的文件系统之下,使远程的文件与使用本地计算机上的文件一样。

用户需要自己mount,不就是创建一个共享目录吗!操作的是同一份数据,数据没有冗余

启动NFS服务器,只需要nfs-utils和rpcbind。安装时一个命令即可yum install -y nfs-utils

  • nfs-uitls就是NFS服务器
  • rpcbind就是RPC服务器

https://www.jianshu.com/p/f85c4371a43d 这篇文章的介绍还是不错的。

结论:

linux NFS 系统 等于 windows共享目录。 文件只有一份。意义不大

4. Ceph安装困难吗?据说有很多坑

5. 有人说raid比分布式存储更好的解决可用性。你认为呢?

参考:https://zhuanlan.zhihu.com/p/108636766

5.1 raid 磁盘冗余阵列,有多种使用方式

| raid方式| 说明| 优点|缺点| |—|—|—|—| |Raid0 方式|一个文件拆分成多块,没别写入多个磁盘。|写的速度变快了|一个磁盘坏了,数据无法恢复| |Raid1 方式|一个文件,每个磁盘写入相同内容。|冗余备份,可用性强|速度慢了| |Raid10 方式|N块磁盘中一半磁盘与另一半备份。每半分中的磁盘都是Raid0高并发写入|读速和备份兼得|用来备份的磁盘太多,浪费| |Raid3 方式|N块磁盘一块当校验,其它当存储,哪块坏了都能从其它磁盘找回来|读速和备份兼得|校验盘坏了,就完了,没人用| |Raid5 方式|N块每块都是校验兼存储|每块负载一样|应用广泛| |Raid6 方式|N块每块都是校验兼存储,提高了算法|每块负载一样,允许两块同时坏|应用广泛,比Raid5好|

5.2 问题是:单机的磁盘阵列所在机器断电,断网线了呢?

→ 服务就不可用了。但是公司内部应该还好,一会就维修好了。大型商用仅仅磁盘阵列还不够。

5.3 分布式存储

方式 优点 缺点
raid * RAID卡比较便宜,成本低

* 技术成熟,实施方便

* 运维方便

* 本地传输,速度快,不存在小文件的问题
* 扩展性差,RAID在系统看来,就是磁盘,并不是以接口提供,没法儿做很好的扩展,比如要坐文件杀毒功能,RAID几乎无法支持

* 扩容难,空间不够用了,必须停机扩容,而这对有7*24要求的单位,几乎是硬伤
分布式存储 * 扩展方便,可以通过软件层,添加需要的功能

* 容错性强,对于no-share架构的分布式系统,任何一个节点的crash都不会影响其它节点的工作

* 扩展方便,对于大部分分布式系统,都可以在线扩容
* 速度比本地硬盘慢,特别是存储大量小文件的时候,速度巨慢

* 实施麻烦,需要专业的计算机工程师协助部署

5.4 最后扪心一问:公司内部需要高可用系统的话,用什么方案?

6. 主流分布式系统的详细对比

https://mlog.club/article/22138 这文章写的老好了。看它! 介绍了ceph,GFS,Swift,HDFS,GFS

7. 我要的是“高可用系统”而不仅仅是“存储高可用系统”!

7.1 问题来了,“高可用系统”和“存储高可用系统”什么区别?

→ 存储高可用就是不丢失.


[Q] mkdir -p 什么意思?

→ 递归创建目录,即使上级目录不存在,会按目录层级自动创建目录

【Q】RPC协议,RPC程序?

→ RPC远程过程调用(Remote Procedure Call).

[Q] 为什么我的NFS不能输入用户名密码,任何人都能mount.不太安全啊.
[Q] ssh-copy-id ?

→ ssh-copy-id命令可以把本地主机的公钥复制到远程主机的authorized_keys文件上

[Q] 所有机器之间免密登陆

https://blog.csdn.net/snail_bing/article/details/81772982?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-6.compare&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-6.compare 所有机器之间,ssh 免密登陆 简单地说,每台机器都ssh-keygen -t rsa,每天机器都执行ssh-copy-id 其它机器ip 就是把自己的公钥,拷贝到所有其它机器上. 这样就能免密登陆了.

1000台机器还不得累死.

[Q] 客户端访问一台服务器免密登陆

客户端: ssh-keygen ssh-copy-id -i ~/.ssh/id_rsa.pub root@服务器Ip oK,可以免密登陆服务器了.

Written on July 8, 2020