对于配备24个1.2TB磁盘(和1TB RAM)的戴尔R920 ,我正在设置一个快速IO的RAID 5configuration。 服务器将用于托pipe将读/写所有大小文件(包括非常大的文件)的KVM虚拟机。 我对数据安全并不十分感兴趣,因为如果服务器出于任何原因失败,我们将在更换失败的部分后,从裸机重新部署服务器。 所以,performance是主要的关注点。 我们正在考虑RAID 5,因为它允许我们在多个主轴上分配数据,因此可以提供更好的性能,而不是我们主要关心的问题,也为我们提供了一些数据保护。 我们的网卡是双10Gbps。
我只是将这个问题限制在RAID 5上,因为我们认为这样可以提供最好的性能。 只有当有令人信服的performance理由时,我们才会考虑其他的东西。 但是,我想我更喜欢与RAID 5configuration相关的答案。
好吧,以上所述,这里是我们目前的configuration思路:
如果条带大小是整个数据驱动器的总数,那么我认为每个驱动器〜46.5KB会给我们带来非常好的吞吐量。 如果条纹大小是每个主轴,那么我已经完全错了。
条带大小是否也是单个文件所占的大小? 例如,如果有一个2KB的文件,select一个1MB的大小意味着我们浪费了几乎整个兆字节? 或者多个文件可以在一个条纹内生存?
最后,当我们安装CentOS 6.5(或最新版本)时,我们是否需要做一些特别的事情来确保文件系统能够最佳地使用RAID? 例如, mkfs.ext4有一个选项-E步骤 ,我被告知应该对应于RAIDconfiguration。 但是,在CentOS安装过程中,有没有办法做到这一点?
非常感谢您对configurationRAID 5快速IO的想法。
请使用RAID 1 + 0与您的控制器和驱动器设置。 如果您需要更多容量, RAID 50/60等嵌套RAID级别可以工作 。 您可以在less量的企业级SAS磁盘(8个或更less的驱动器)上使用RAID 5,因为重build时间不错。 但是,24驱动器是一个可怕的错误。 (哦,并禁用单个磁盘cachingfunction…危险)
I / O和本地存储性能有很多方面。 有I / O操作/秒,有吞吐量,有存储延迟。 RAID 1 + 0在这些之间是一个很好的平衡。 这里的积极方面是你正在使用企业级磁盘,有能力的硬件控制器和大量的磁盘。 你需要多less容量?
您可能会遇到可在虚拟磁盘组内使用的驱动器数量的限制。 传统上,PERC / LSI控制器将其限制为单个RAID级别和RAID 1 + 0的16个驱动器。 用户指南确认这一点 。 您将无法在单个RAID 5或单个RAID 1 + 0组中使用全部24个磁盘。
根据您的工作负载,另一个需要考虑的方面是您可以在某些PERC控制器上使用LSI Cachecadefunction进行SSDcaching。 它可能不适用于此,但了解您的I / O模式将有助于定制存储解决scheme。
至于ext4文件系统创build选项,其中的大部分将由您的硬件RAID控制器抽象。 你应该可以创build一个没有任何特殊选项的文件系统。 您所指的参数将对软件RAID解决scheme产生更多的影响。
不要在24个1TB磁盘上使用单个RAID 5arrays! 我并不在乎你想限制答案,这是一个坏主意,你应该看看其他的select。
磁盘失败的可能性随每个磁盘而变化。 那么重build的时间也是如此。 当一个驱动器出现故障,并replace它时,它将尽可能多地在所有磁盘上使用IO来构build新数据。 在这个过程中,很有可能剩下的23个磁盘中的一个会失败,迫使您从备份中恢复服务器。 你说你不关心…但你愿意接受一个月一次吗? 一个星期一次? 随着磁盘的老化,很可能会变坏。
另外,如果你想要性能的话,RAID5会导致你错误的方向。 在很多情况下,RAID5的性能比其他选项差,因为它必须为每次写入计算奇偶校验,然后将其写入驱动器。 RAID5不是为性能而devise的。
如果你真的不关心你的数据,那就用RAID 0吧。但是即便如此,也要创build一些独立的arrays,而不是一个巨大的24磁盘RAID 0。
如果您需要性能和一些完整性,请使用RAID10。 你会失去一些磁盘空间,但性能提升很大。
或者你可以看看像从零开始devise的ZFS这样的东西,以便在磁盘上处理大量的数据。
您的select:
RAID 0 :这将所有的磁盘变成一个没有冗余的单元。 这具有最高的读写性能和任何选项的最大可用空间,但单个磁盘的丢失意味着所有数据的丢失。
RAID 1 + 0 :这将所有的磁盘变成一个单一的单位,所有的数据存在两个磁盘上。 读取速度与RAID 0大致相同,写入速度减半(因为您需要将每段数据写入两次),并且只有一半的可用空间。 单个磁盘的丢失对数据可用性没有影响,对读/写速度的影响也最小。
RAID 5 :这将所有的磁盘变成一个单一的单位,在一个磁盘上有奇偶校验值。 读取速度略低于RAID 0,写入速度要慢得多,可能比单个非RAID磁盘的写入速度要慢(每个写入至less需要在两个磁盘上进行读取 – 修改 – 写入周期),而您失去一个磁盘的价值空间的奇偶信息。 单个磁盘的丢失会导致读取速度大幅下降(重build存储在其上的数据需要从所有其他磁盘读取数据),但对数据可用性没有影响。
RAID 6 :这基本上具有RAID 5的所有优点和缺点,除了存储奇偶校验计算之外的发烧友校验和,并且可以处理丢失两个磁盘而不丢失数据。
如果数据安全真的是不相关的(这包括从原始数据源恢复数据的时间,这可能需要几天的时间,并重新做中断计算的时间损失),我build议RAID 0.否则,如果你有一个工作量独家阅读,你想要一些可靠性,我build议RAID 6(但请注意,从故障磁盘恢复时性能将受到影响)。 如果你有一个读写工作量,我build议RAID 1 + 0。
根据您的工作负载的确切性质(即,如果给定的任务访问磁盘空间的定义明确的子集),您可以设置多个独立的RAIDarrays,这样一个故障不会影响到其他的。
RAID 5在您的情况下没有任何好处。 与RAID 0相比,它具有性能损失(特别是对于写入),并且具有您所拥有的磁盘数量,这确实会在恢复过程中再次发生磁盘故障,从而不会带来数据安全方面的好处。
好吧,只是一个明确的问题 – 条纹大小。 除非您的RAID总是读/写整个数据条作为最小的I / O块,否则更大的条带大小会更好。
为什么? – 小的条带大小意味着将多个磁盘卷入任何冗长的I / O,使用一个逻辑I / O加载多个磁盘的可能性就越小。 大条纹意味着只有一个磁盘(或几个磁盘)被卷入I / O的可能性更大。 这可能看起来是不足之处,因为与多个磁盘相比,没有任何提升,但是随机负载会跳转,并且意识到负载将在所有磁盘上均匀分布。
更多的理论背后可以在这里find: http : //www.vinumvm.org/vinum/Performance-issues.html