理解RAID性能如何从一个磁盘扩展到八个磁盘

2020-04-18 15:48:34

neophytesysadmins和数据存储爱好者面临的第一大挑战之一是如何存储超过一个磁盘的数据。 这里的简短和传统的回答是RAID(一个多余的昂贵磁盘阵列),但即使这样,也有许多不同的RAID拓扑可供选择。

大多数实现RAID的人都期望从所有这些磁盘中获得额外的性能以及额外的存储。 不幸的是,这些期望并不总是在现实世界中根深蒂固。 但是,由于我们都有时间进行一些技术项目,我们希望能说明如何规划存储性能-而不仅仅是吉布提(GB)的总数,你可以塞进一个数组。

这里有一个简短的说明:虽然读者会对原始数字感兴趣,但我们敦促更多地关注它们之间的关系。 我们所有的图表都将RAID阵列的性能与单个磁盘的性能联系起来,其大小从两个到八个磁盘。 如果您更改磁盘模型,您的原始数字将相应更改-但与单个磁盘性能的关系在大多数情况下不会。

存储热棒还有一个专用的LSI-9300-8i主机总线适配器(HBA),它不用于任何东西,但被测试的磁盘。 底盘的前四个海湾有我们自己的备份数据-但它们在这里的所有测试中都是空闲的,并且连接到主板的SATA控制器,完全与我们的测试阵列隔离。

对于所有测试,我们使用Linux内核RAID,如Linux内核版本4.15中实现的,以及ext4文件系统。 我们在创建RAID数组时使用了-假设-清洁参数,以避免覆盖数组的每个块,我们在创建ext4文件系统时使用了-E lazy_itable_init=0,lazy_journal_initlazy_itable_init=0,以避免在后台正在进行的背景写入初始化文件系统时污染我们的测试。

我们这里没有硬件RAID适配器的并行测试,所以当我们告诉你硬件RAID不是魔法时,你需要接受我们的承诺。 然而,多年来,我们已经私下测试了Linux内核RAID与流行的专业、专用的八端口硬件RAID卡。

在大多数情况下,内核RAID明显优于硬件RAID。 这在一定程度上是由于Linux内核的开发和维护比您在卡的固件中找到的要积极得多。 还值得注意的是,一个典型的现代服务器比硬件RAID控制器更快的CPU和更多的RAM可供使用。

这个规则的一个例外是,一些硬件RAID控制器有一个电池支持的缓存。 这些卡将同步写入请求提交给车载、电池支持的缓存,而不是磁盘,并且它们依赖于操作系统。 缓存,同步写入聚合,然后从控制器的缓存滴到磁盘。 这就像操作系统本身聚合和提交的异步写入一样工作和执行。

异步写入大大优于同步写入,因此这代表了对这样一个控制器性能的显著提升。 该卡依赖于电池,以确保缓存数据在停电期间的存活。 这在大多数情况下,就像将整个服务器放在UPS上,并使用令人费解但又适当命名的libatmydata,这导致操作系统对fsynccalls的结果感到不安。

明智的一句话:如果电池在RAID控制器中失败,而控制器没有检测到它,则会在停电后导致损坏,因为当用户要求保证数据已安全地提交到磁盘时,卡仍然躺在操作系统和应用程序上。 如果控制器主动检测电池故障,它只是完全禁用卡上写聚合-它将同步写入性能返回到其真实的、远较低的级别。

根据我们的经验,当硬件控制器的缓存电池故障时,管理员极有可能不注意到。 通常情况下,这些管理员在几年后仍将以性能和可靠性降低的水平操作系统。

关于硬件RAID控制器的最后一个警告:很难预测在一个控制器下创建的硬件RAID阵列是否会成功地导入到不同型号的控制器中。 即使控制器的模型保持不变,用于导入数组的管理应用程序或BIOS/UE FI例程的用户界面也经常被写入难以理解的语言。

我们发现,在硬件RAID中,通常很难判断您是在核动数组还是安全地导入数组。 因此,如果控制器故障和更换,你可能会出汗子弹,YOLOING,并希望。 警告冒失者。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。