Kev*_*ker -1 linux raid software-raid raid0
可能的重复:有
哪些不同的广泛使用的 RAID 级别,我应该在什么时候考虑它们?
我想知道 RAID 0 如何提供更好的 i/o。
如果我在 RAID 0 中没有错,数据会被拆分并存储在不同的 HDD 中。
在这种情况下,对于每个读取请求,不需要扫描整个阵列以获取文件。
任何人都可以澄清这一点吗?
添加到答案并回答评论(在评论中回答有点太长了)
你可以尝试从大局来思考。从 2 个磁盘读取会比 1 个快吗?显而易见的答案是肯定的。如果一个磁盘只能读取100MBps,那么两个磁盘自然可以读取200MBps。这就是为什么raid 0 的理论读取速度为n 的原因,其中n 是阵列中的磁盘数量。带有读取的raid 1 也是如此。有 n 个磁盘,您可以同时读取所有磁盘以提高速度。
但是,raid 0 比 raid 1 快,因为不仅有读取,还有写入。Raid 0 是条带化的,所以只有一半的数据在一个磁盘上,另一半在另一个磁盘上。Raid 1 是克隆的,所以数据在两边。这意味着在写入时,需要将raid 1中的所有数据都写入两个磁盘。因此,raid 0中的写入速度再次为n,这里n是阵列中的磁盘数与raid 1中的磁盘数相比,其中写入速度始终为 1;与写入非RAID磁盘相同。
还涉及原始问题的误解。您永远不会扫描磁盘来查找文件的数据。文件具有指向存储该文件的驱动器中的块的指针。一旦您有了有问题的文件,您就可以从该位置获取数据并从该块中检索相关信息。
我建议您在维基百科中阅读有关 RAID 的更多信息。
此外,您可以尝试使用 raid 计算器来查看wolfram alpha 中的理论读/写速度。
要记住的关键是数据以块的形式分布,而不是按位或按字节分布。块大小(又名条带大小)因实现而异,并且通常是可配置的。块大小通常介于 32KB - 2M 之间。
因此,对于比单个块更小的文件的单个读取请求,只需要使用数组的一个成员。对于大于块大小的读取,阵列必须从每个成员驱动器中检索所有块。所以它基本上会要求一个磁盘的块 1,下一个磁盘的块 2,下一个磁盘的块 3,依此类推。
或者如维基百科所说。
一种条带化方法是通过从数据序列的开头以循环方式在存储设备上交错顺序段来完成的。
因此,取决于数组中使用的块大小、数据的大小以及数据的访问方式,所有因素都会影响读取在成员设备之间的分布情况。但是数据的分布会改变 I/O。有些应用程序在 RAID0 上可能根本看不到太多改进,而有些应用程序可能会看到巨大的改进。
| 归档时间: |
|
| 查看次数: |
211 次 |
| 最近记录: |