话说双盘RAID-1的读取应该可以做到两倍速吧?
2131 75
[17 楼] 原版咕咚 [资深泡菜]
22-8-16 10:03
重复了,删除原版咕咚 编辑于 2022-08-16 10:04
[16 楼] 原版咕咚 [资深泡菜]
22-8-16 10:03
重复了,删除原版咕咚 编辑于 2022-08-16 10:04
[15 楼] 原版咕咚 [资深泡菜]
22-8-16 10:03
nahcooo 发表于 2022-08-15 21:44
RAID-0也是从第一个盘读取第一份数据(但它不存在第二份数据),从第二个盘读取第二份数据(但它不存在第一份数据)
RAID-1应该同样可以从第一个盘读取第一份数据(即使它有第二份数据也不读),从第二个盘读取第二份数据(即使它有第一份数据也不读)
为...

raid-1可以从两份数据里同时读,让传输速度快一倍,这要看raid控制器的具体实现。

低端raid控制器实现的raid1基本都没这功能,因为raid1不是条带化的,要同时从两份存储里读需要上升到扇区级别,一部分扇区从A读,一部分从B读,拼起来完成任务。高级的 raid 控制器在这里一般用到队列,类似sata的 ncq 或 sas 的 simple queque,连续的读操作分成两部分,分别送到 A 和 B 同时去执行,结果用 dma 送回host 发中断告诉 host 完成了。

低端的raid卡读写 raid 0 快一倍是因为直接操作条带,每个扇区对应俩条带,一个在 A 一个在 B,host下命令读写某个扇区,自然就去同时操作两块对应的条带了,raid 5 也类似。raid1 没条带,这些垃圾raid卡就不能加速读取了。
[14 楼] tianman [泡菜]
22-8-16 08:20
nahcooo 发表于 2022-8-16 07:37
我还是有疑问,你提到的是

那么,当你发起一个任务读取文件的时候,每一个文件都是同时从各个磁盘中读取不同的部分,所以读取速度很快。
RAID1虽然和RAID0很相似,但是它每个盘存储的都是整个文件。所以,当你发起一个任务读取文件的时候,文件都只能从一个磁盘中读取。

你这个说法就是假设我有两本书,第一本只写着1357,第二本只写着2468。所以我读的时候就能同时从两本书一起读,最后读出来12345678。

那第一本书写着12345678,第二本书写着12345678。我仍然可以只从第一本书读1357,第二本书2468,最后拼成12345678呀。

例如RAID-5的场合,硬盘里既要写原始数据,又要写校验码。在硬盘没有损坏的时候,是直接跳过效验码的部分的。
而RAID-1的场合,同样可以把第一块盘的偶数扇区当校验码,第二块盘的奇数扇区当校验码,学RAID-5那样,跳过校验码不就行了么? ...

RAID1不存在校验码,它就是镜像存储。两个盘的内容完全一样

以书籍为例
RAID1里面的文件是没有分卷的书,但是它在另一个“镜像”书柜里同样存有一份。
RAID0里面的文件是已经分成若干卷的书,但是各卷书分别存在两个书柜里。

所以,取RAID0的书可以同时从两个书柜里搬出小包装来
而RAID1的书因为两个柜子里都是整本书,你没办法搬出半本书来。。。

本帖最后由 tianman 于 2022-8-16 08:25 编辑
[13 楼] nahcooo [资深泡菜]
22-8-16 07:37
tianman 发表于 2022-08-16 07:19
这个涉及到RAID的原理
除了RAID1以外的RAID,每个文件都是拆分成条块(除了只有若干字节的极小文件)分散存储到各个磁盘上面的。
那么,当你发起一个任务读取文件的时候,每一个文件都是同时从各个磁盘中读取不同的部分,所以读取速度很快。
RAID1...

我还是有疑问,你提到的是

那么,当你发起一个任务读取文件的时候,每一个文件都是同时从各个磁盘中读取不同的部分,所以读取速度很快。
RAID1虽然和RAID0很相似,但是它每个盘存储的都是整个文件。所以,当你发起一个任务读取文件的时候,文件都只能从一个磁盘中读取。

你这个说法就是假设我有两本书,第一本只写着1357,第二本只写着2468。所以我读的时候就能同时从两本书一起读,最后读出来12345678。

那第一本书写着12345678,第二本书写着12345678。我仍然可以只从第一本书读1357,第二本书2468,最后拼成12345678呀。

例如RAID-5的场合,硬盘里既要写原始数据,又要写校验码。在硬盘没有损坏的时候,是直接跳过效验码的部分的。
而RAID-1的场合,同样可以把第一块盘的偶数扇区当校验码,第二块盘的奇数扇区当校验码,学RAID-5那样,跳过校验码不就行了么?nahcooo 编辑于 2022-08-16 07:40
[12 楼] tianman [泡菜]
22-8-16 07:19
nahcooo 发表于 2022-8-15 21:44
RAID-0也是从第一个盘读取第一份数据(但它不存在第二份数据),从第二个盘读取第二份数据(但它不存在第一份数据)

RAID-1应该同样可以从第一个盘读取第一份数据(即使它有第二份数据也不读),从第二个盘读取第二份数据(即使它有第一份数据也不读)

为什么不能两个同时读取了?

这个涉及到RAID的原理

除了RAID1以外的RAID,每个文件都是拆分成条块(除了只有若干字节的极小文件)分散存储到各个磁盘上面的。
那么,当你发起一个任务读取文件的时候,每一个文件都是同时从各个磁盘中读取不同的部分,所以读取速度很快。

RAID1虽然和RAID0很相似,但是它每个盘存储的都是整个文件。
所以,当你发起一个任务读取文件的时候,文件都只能从一个磁盘中读取。

如果是有人同时发起另一个读取任务,这个任务才可以从另一个磁盘读取。
然而,对于这两个任务来说,它们的读取速度都不会比读取单磁盘快。

它们类似于“多进程”任务和“单进程”任务的区别。
[11 楼] nahcooo [资深泡菜]
22-8-15 21:44
tianman 发表于 2022-08-13 14:44
这个操作系统或者主板没多大关系。是它的结构决定的。
比如说,读一个较大的文件时,RAID-5可以同时从多个磁盘同时读出各段的数据,所以速度很快
RAID-1两个盘记录的是同样的内容,所以文件只能从同一个磁盘读出,不能两个同时读取。
当然,多个任务同时...

RAID-0也是从第一个盘读取第一份数据(但它不存在第二份数据),从第二个盘读取第二份数据(但它不存在第一份数据)

RAID-1应该同样可以从第一个盘读取第一份数据(即使它有第二份数据也不读),从第二个盘读取第二份数据(即使它有第一份数据也不读)

为什么不能两个同时读取了?
[10 楼] tianman [泡菜]
22-8-15 18:45
luckcat 发表于 2022-8-15 18:08
RAID 0会快,但是也不会快到一倍。
RAID 1要做校检,理论上比单盘性能还要差点,实际使用中感觉不到。

RAID1、包括其它阵列盘并不会时时做校验的,它主要是靠检查每个磁盘状态来决定阵列的状态。
只要磁盘的读写都是正常的,就认为阵列正常工作。
如果有一个盘读写有问题,那么阵列就会亮黄灯。并动用冗余。。。
[9 楼] luckcat [资深泡菜]
22-8-15 18:08
RAID 0会快,但是也不会快到一倍。
RAID 1要做校检,理论上比单盘性能还要差点,实际使用中感觉不到。
[8 楼] Bohnenkaffee [陈年泡菜]
22-8-13 20:54
看实际吧,我的各硬盘之间速度比较迷惑,有时候很慢,有时候还可以。
[7 楼] 原版咕咚 [资深泡菜]
22-8-13 20:03
看raid控制器或软raid怎么实现的,有些是可以双倍/接近双倍读速的。
[6 楼] PowerPCG5 [禁言中]
22-8-13 16:58
一份数据,要写两次。
一份数据,要读两次,做比对,一致了才给你。不一致了就报警,然后等死。
[5 楼] tianman [泡菜]
22-8-13 14:44
yejun 发表于 2022-8-13 08:02
据说windows和freebsd的raid 1可以,linux的好像不行。

望山 发表于 2022-8-13 10:05
理论上可以,但是一般主板自带的RAID-1不这么做。有兴趣的话可以研究一下高级RAID卡是怎么个情况。还有操作系统的软件RAID是怎么情况。

这个操作系统或者主板没多大关系。是它的结构决定的。
比如说,读一个较大的文件时,RAID-5可以同时从多个磁盘同时读出各段的数据,所以速度很快
RAID-1两个盘记录的是同样的内容,所以文件只能从同一个磁盘读出,不能两个同时读取。

当然,多个任务同时读取不同文件时,RAID-1是可以从不同磁盘读取的,此时可以省一点总体的时间。
但是对于一个任务而言,它和多盘同时读出分段文件的性能是无法比较的。
[4 楼] 望山 [老坛泡菜]
22-8-13 10:05
理论上可以,但是一般主板自带的RAID-1不这么做。有兴趣的话可以研究一下高级RAID卡是怎么个情况。还有操作系统的软件RAID是怎么情况。
[3 楼] yejun [老坛泡菜]
22-8-13 08:02
据说windows和freebsd的raid 1可以,linux的好像不行。
[2 楼] tianman [泡菜]
22-8-13 06:56
这个做不到。
因为读取文件依然是从一个盘中读取的。

其它类型的RAID能够快速读取的原因是数据条块化存储,
所以读取一个文件可以同时从多个磁盘同时进行,以降低读盘时间。
这也是组建RAID往往选用较多小容量盘的原因之一。(另一个原因是小盘价廉)
[1 楼] nahcooo [资深泡菜]
22-8-12 16:46
既然一份数据同时存在于两个硬盘,那么读取的时候应该可以从两个盘分开读才对啊,这样理论上有不亚于raid-0的速度?

但实际上貌似没有?为什么?