天天看点

一个文件管理系统的软硬件配置清单

软硬兼施。

近期在弄一个文件管理系统。系统的最大特点,就是文件很多,数据很大,单位以TB计算。客户因为采购服务器需要走流程,时间周期较长,希望要求我们现在就给一个系统运行软硬件配置,好提前申请。

一、配置清单

我没怎么干过这种活,对硬件不熟悉。但事实上,这也应该是程序员的工作之一。只好硬着头皮,查阅资料,仔细揣摩。除了考虑硬件特性,也要照顾客户的钱袋子,毕竟预算不高。最后出来的清单如下:

一个文件管理系统的软硬件配置清单

二、软件配置理由

软件没啥好说的。minIO是对象存储的开源框架,据说好多云提供商都用了。捣鼓私有云的话,可以试一下。什么是对象存储?对象存储就是非结构化数据存储。数据库里一条条记录,可谓结构化数据;图片、视频、文档,即非结构化数据。存储这些非结构化数据,即为对象存储。

对象存储是用于大规模存储非结构化数据的数据存储架构。它将每项数据指定为一个对象,保存在单独的仓库中,然后与元数据和唯一标识符捆绑在一起,以方便访问和检索。

存储文件谁不会?操作系统就可以做,然后WEB服务器直接读操作系统信息不就好了?当然可以,但文件数量一多,而且每个文件尺寸都很大,那就难说了。我们平时用windows就能感觉到,打开一个很多巨大的文件夹,硬盘灯长明不熄,机器卡住,什么都干不了的焦躁场面。还有一个原因,采用这种原始方案,web服务器要和文件服务器合在一起。

采用minIO就不同了。

1)首先它号称性能很好,支持海量文件存储,而且单个文件最大可达5TB。从众多文件中找到指定文件并下载,速度很快,百万军中取上将首级如探囊取物。之所以这么快,是因为它从一开始就只为这个存储、下载考虑,不像操作系统通用化,拖泥带水。

2)它是一个独立的对象存储服务器,可以跟WEB服务器分离,位于不同的服务器

3)它是一个分布式的架构,意味着并发性、可靠性、扩展性、伸缩性都很好

4)它有所谓独门的纠偏码/擦写码(erasure code),利用冗余和校验技术,即使坏了一些硬盘,也能保证数据的安全。这个用磁盘阵列也能实现,比如说RAID5。但是,RAID是30、40年前出现的技术,当时硬盘还很小,如果在今天,几个T一块的硬盘坏了的话,靠RAID5恢复,可能就要好几天。minIO有本事可以很快恢复。而且这个恢复精度,是对象级的。比如说,有4块硬盘参与了这个erasure code mode,那么你删掉了其中一块硬盘上的某个文件夹,系统会自动给它restore。

RAID1当然没问题,但速度又比不上minIO的纠偏码。RAID1的数据安全性最高,但速度不会提高,比不上RAID0,也比不上RAID5。

三、硬件配置理由

1、CPU

Intel或者AMD了,没啥好挑的。我们网管说,AMD更好一些,但客户说到时部署环境的机器,就是intel的CPU。我也不确切知道现在的CPU啥主频多少核,就参照网管的意见,说16核或以上。CPU个数或者内核数,跟同时运行的线程数相关,当然是多一点比较好。最好是2块CPU,每块16个核或者更多。

2、内存

本来想写128G的,不过64G应该暂时也够了,太多浪费没必要。还是为客户省点银子吧。

3、硬盘

上面说这个纠偏码说得天上有地上无,为啥还是RAID0 + RAID1。主要是成熟可靠,简单易行。我们对minIO不太熟,觉得设置这个纠偏码好像很复杂。既然有硬件可以直接做阵列,速度和安全都能保障,并且经过全世界无数的验证,为啥不用呢。