精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>电脑技术>>● WinNT系统>>【磁盘与文件系统】>>关于RAID的相关讨论

主题:关于RAID的相关讨论
发信人: Thinboy()
整理人: jiaxu2000(2004-03-30 09:36:52), 站内信件
    我在winnt下用磁盘管理器在两个IBM 4.3G硬盘上各分出3.3G出来,
并创建了带区,也就是RAID0吧,理论的速度应是单盘的两倍速度,对不?
    但是我经过copy文件来测试它的速度,发现在带区上的文件拷贝速度
比起不在带区上的文件拷贝速度,不但没有接近两倍的速度,且是慢了,
为什么呢?
    例如不是带区的盘是D盘,带区的盘是E盘,我把130M的文件(在D、E
盘上皆有,是一模一样的文件)各在D盘及E盘上拷贝,前者用了约1分钟时间,
后者居然多了15秒左右,相差数值不定。
    为什么呢?速度竟没提高,反而下降??


    我的机器配置为:PII-266, 192M RAM , IBM 4.3G(68Pin)x2,
华硕BX主板。

--
※ 来源:.广州网易 BBS bbs.nease.net.[FROM: 202.103.164.4]
发信人: kerphis (~2000~), 信区: WinNT
标  题: Re: WINNT下RAID0的速度?!
发信站: 广州网易BBS站 (Tue Oct  6 11:25:28 1998), 转信

【 在 Thinboy (Thinboy) 的大作中提到: 】
:     我在winnt下用磁盘管理器在两个IBM 4.3G硬盘上各分出3.3G出来,
: 并创建了带区,也就是RAID0吧,理论的速度应是单盘的两倍速度,对不?
:     但是我经过copy文件来测试它的速度,发现在带区上的文件拷贝速度
: 比起不在带区上的文件拷贝速度,不但没有接近两倍的速度,且是慢了,
: 为什么呢?
:     例如不是带区的盘是D盘,带区的盘是E盘,我把130M的文件(在D、E
: 盘上皆有,是一模一样的文件)各在D盘及E盘上拷贝,前者用了约1分钟时间,
: 后者居然多了15秒左右,相差数值不定。
:     为什么呢?速度竟没提高,反而下降??

这个要看你的控制卡了, 如果你的控制卡是多通道的, 才能使用
并发I/O, 就是两个硬盘一起工作, 否则的话, 数据还是只能依次
写到两个硬盘中去, 而且两个硬盘的寻道时间等等加起来还会更
多, 所以可能会慢. 

如果你的硬盘是接在同一个IDE口上, 很明显是绝对不能提高速度的,
如果分别接在两个IDE口上, 我想可能也还是不行, 不过不太清楚,
也没有试过. 最好是用SCSI啦, 如果你很强调速度的话. 

--
☆ 来源:.广州网易BBS站 bbs.nease.net.[FROM: 160.96.179.5]
发信人: Thinboy (Thinboy), 信区: WinNT
标  题: Re: WINNT下RAID0的速度?!
发信站: 广州网易 BBS (Tue Oct  6 12:00:11 1998), 转信

【 在 kerphis (~2000~) 的大作中提到: 】
: 【 在 Thinboy (Thinboy) 的大作中提到: 】
: :     我在winnt下用磁盘管理器在两个IBM 4.3G硬盘上各分出3.3G出来,
: : 并创建了带区,也就是RAID0吧,理论的速度应是单盘的两倍速度,对不?
: :     但是我经过copy文件来测试它的速度,发现在带区上的文件拷贝速度
: : 比起不在带区上的文件拷贝速度,不但没有接近两倍的速度,且是慢了,
: : 为什么呢?
: :     例如不是带区的盘是D盘,带区的盘是E盘,我把130M的文件(在D、E
: : 盘上皆有,是一模一样的文件)各在D盘及E盘上拷贝,前者用了约1分钟时间,
: : 后者居然多了15秒左右,相差数值不定。
: :     为什么呢?速度竟没提高,反而下降??
: 这个要看你的控制卡了, 如果你的控制卡是多通道的, 才能使用
: 并发I/O, 就是两个硬盘一起工作, 否则的话, 数据还是只能依次
: 写到两个硬盘中去, 而且两个硬盘的寻道时间等等加起来还会更
: 多, 所以可能会慢. 
: 如果你的硬盘是接在同一个IDE口上, 很明显是绝对不能提高速度的,
: 如果分别接在两个IDE口上, 我想可能也还是不行, 不过不太清楚,
: 也没有试过. 最好是用SCSI啦, 如果你很强调速度的话. 

   我漏说了一件东西,我用的SCSI卡是2940u/w

  这点上,有什么问题呢?

--
※ 来源:.广州网易 BBS bbs.nease.net.[FROM: 202.103.164.4]
发信人: Vic (Vic), 信区: WinNT
标  题: Re: WINNT下RAID0的速度?!
发信站: 广州网易BBS站 (Tue Oct  6 14:41:13 1998), 转信

这有点类似于并行处理里面的问题:多个CPU到底能提高多少运算速度?
如果不是专门为并行处理而设计的程序,多个CPU不仅不能提高速度,甚至
会降低速度.这种不能利用多个CPU能力的程序是所谓串行化的,即它的运算
步骤中后面的步骤依赖于前面的步骤,因此只能一步步来.如果前后两个步
骤彼此不依赖,那么两个步骤就可以分给两个CPU同时做,速度就能提高.

RAID的情况和此相似.多个硬盘对应多个CPU,运算速度对应传输速率,程序
对应I/O任务.NT的explorer在处理单个文件copy时肯定把它当成一个不
可分割的步骤,最多只是交替使用几个分区/硬盘,几个硬盘不能同时工作.
如果你让NT往RAID上拷几千个小文件,也许能让几个硬盘同时工作.当然这
也要看explorer在拷贝文件时是否是多线程的:当有100个文件copy
请求时,explorer会同时使用几个线程,每个线程执行一个copy请求吗?
我有点怀疑.如果explorer还是单线程方式一个一个copy,RAID仍然没有
被利用.也许你想要看到RAID的真正好处一定要使用能支持多线程的软件,
如数据库系统,并把数据库建到RAID上.

结论:要同时利用多个设备(CPU,HD)的能力,需要有专门的并发设计.
explorer很明显是不行的.

--
☆ 来源:.广州网易BBS站 bbs.nease.net.[FROM: 202.102.13.202]
发信人: Vic (Vic), 信区: WinNT
标  题: Re: WINNT下RAID0的速度?!
发信站: 广州网易BBS站 (Tue Oct  6 14:56:13 1998), 转信

【 在 Thinboy (Thinboy) 的大作中提到: 】
: 【 在 kerphis (~2000~) 的大作中提到: 】
: : 这个要看你的控制卡了, 如果你的控制卡是多通道的, 才能使用
: : 并发I/O, 就是两个硬盘一起工作, 否则的话, 数据还是只能依次
: : 写到两个硬盘中去, 而且两个硬盘的寻道时间等等加起来还会更
: : 多, 所以可能会慢. 
: : 如果你的硬盘是接在同一个IDE口上, 很明显是绝对不能提高速度的,
: : 如果分别接在两个IDE口上, 我想可能也还是不行, 不过不太清楚,
: : 也没有试过. 最好是用SCSI啦, 如果你很强调速度的话. 

:    我漏说了一件东西,我用的SCSI卡是2940u/w

:   这点上,有什么问题呢?

如果你用的不是SCSI系统,两个硬盘就根本不可能同时工作.因此仍然是
我上面文章的观点:真正并行的系统,需要自上而下的全面支持:应用程序,
操作系统,I/O总线,外设.任何一个环节不支持并行,都只能得到一个低
效的串行系统.

--
☆ 来源:.广州网易BBS站 bbs.nease.net.[FROM: 202.102.13.202]
发信人: Thinboy (Thinboy), 信区: WinNT
标  题: Re: WINNT下RAID0的速度?!
发信站: 广州网易 BBS (Tue Oct  6 19:09:11 1998), 转信


  这么说来,NT4搞这个带区有什么作用? 不是实现并行读写吗?

  普通程序的读写, 不是通过它而成为并行读 写吗?

  如果需要专门的并发设计的程序,那要这个NT4的带区有啥用?

    我想提高硬盘速度的话, 现在可以怎样做?


  重复说一次我的机器配置: PII-266 192M RAM, 华硕BX主板,
  Adapter 2940u/w SCSI卡, IBM DASV-34330(4.3G 68Pin) X 2
  WINNT4 Server + SP3

【 在 Vic (Vic) 的大作中提到: 】
: 这有点类似于并行处理里面的问题:多个CPU到底能提高多少运算速度?
: 如果不是专门为并行处理而设计的程序,多个CPU不仅不能提高速度,甚至
: 会降低速度.这种不能利用多个CPU能力的程序是所谓串行化的,即它的运算
: 步骤中后面的步骤依赖于前面的步骤,因此只能一步步来.如果前后两个步
: 骤彼此不依赖,那么两个步骤就可以分给两个CPU同时做,速度就能提高.
: RAID的情况和此相似.多个硬盘对应多个CPU,运算速度对应传输速率,程序
: 对应I/O任务.NT的explorer在处理单个文件copy时肯定把它当成一个不
: 可分割的步骤,最多只是交替使用几个分区/硬盘,几个硬盘不能同时工作.
: 如果你让NT往RAID上拷几千个小文件,也许能让几个硬盘同时工作.当然这
: 也要看explorer在拷贝文件时是否是多线程的:当有100个文件copy
: 请求时,explorer会同时使用几个线程,每个线程执行一个copy请求吗?
: 我有点怀疑.如果explorer还是单线程方式一个一个copy,RAID仍然没有
: 被利用.也许你想要看到RAID的真正好处一定要使用能支持多线程的软件,
: 如数据库系统,并把数据库建到RAID上.
: 结论:要同时利用多个设备(CPU,HD)的能力,需要有专门的并发设计.
: explorer很明显是不行的.


--
※ 修改:.Thinboy 于 Oct  6 19:10:19 修改本文.[FROM: 202.103.164.4]
※ 来源:.广州网易 BBS bbs.nease.net.[FROM: 202.103.164.4]
发信人: Magicboy (师傅仔), 信区: WinNT
标  题: Re: WINNT下RAID0的速度?!
发信站: 广州网易 BBS (Tue Oct  6 21:18:48 1998), 转信

【 在 Thinboy (Thinboy) 的大作中提到: 】
:   这么说来,NT4搞这个带区有什么作用? 不是实现并行读写吗?
:   普通程序的读写, 不是通过它而成为并行读 写吗?
:   如果需要专门的并发设计的程序,那要这个NT4的带区有啥用?
:     我想提高硬盘速度的话, 现在可以怎样做?
:   重复说一次我的机器配置: PII-266 192M RAM, 华硕BX主板,
:   Adapter 2940u/w SCSI卡, IBM DASV-34330(4.3G 68Pin) X 2
:   WINNT4 Server + SP3
我想它的好处是"做大"分区,提供一个很大的逻辑盘。
要想提高速度可能要硬件磁盘阵列才行。

: 【 在 Vic (Vic) 的大作中提到: 】
: : 这有点类似于并行处理里面的问题:多个CPU到底能提高多少运算速度?
: : 如果不是专门为并行处理而设计的程序,多个CPU不仅不能提高速度,甚至
: : 会降低速度.这种不能利用多个CPU能力的程序是所谓串行化的,即它的运算
: : 步骤中后面的步骤依赖于前面的步骤,因此只能一步步来.如果前后两个步
: : 骤彼此不依赖,那么两个步骤就可以分给两个CPU同时做,速度就能提高.
: : RAID的情况和此相似.多个硬盘对应多个CPU,运算速度对应传输速率,程序
: : 对应I/O任务.NT的explorer在处理单个文件copy时肯定把它当成一个不
: : 可分割的步骤,最多只是交替使用几个分区/硬盘,几个硬盘不能同时工作.
: : 如果你让NT往RAID上拷几千个小文件,也许能让几个硬盘同时工作.当然这
: : 也要看explorer在拷贝文件时是否是多线程的:当有100个文件copy
: : 请求时,explorer会同时使用几个线程,每个线程执行一个copy请求吗?
: : 我有点怀疑.如果explorer还是单线程方式一个一个copy,RAID仍然没有
: : 被利用.也许你想要看到RAID的真正好处一定要使用能支持多线程的软件,
: : 如数据库系统,并把数据库建到RAID上.
: : 结论:要同时利用多个设备(CPU,HD)的能力,需要有专门的并发设计.
: : explorer很明显是不行的.


--
※ 来源:.广州网易 BBS bbs.nease.net.[FROM: 202.103.136.25]
发信人: Vic (Vic), 信区: WinNT
标  题: Re: WINNT下RAID0的速度?!
发信站: 广州网易BBS站 (Wed Oct  7 09:49:08 1998), 转信

【 在 Thinboy (Thinboy) 的大作中提到: 】

:   这么说来,NT4搞这个带区有什么作用? 不是实现并行读写吗?

:   普通程序的读写, 不是通过它而成为并行读 写吗?


程序的流程不可能通过一个底层驱动而改变.比如文件拷贝的代码是
这么写的:(大概的意思)
while(!feof(sourcefile))
{
  fread(sourcefile, buffer);
  fwrite(destfile, buffer);
}
就注定了一定要先读过再写,写完上一块才能再读下一块。
即使源/目标文件在两个硬盘,也一点并行都来不了.如果写的复杂些,
用两个线程加一个缓冲区队列,读线程读到后加到队列尾部,写线程从
队列头部取内容写,两个硬盘才能同时开工.

使用windows时能感觉到在同一个硬盘上拷文件比跨硬盘拷文件要慢,
我想那是因为省去了硬盘磁头来回寻道(访问两个文件)的时间.

:   如果需要专门的并发设计的程序,那要这个NT4的带区有啥用?

:     我想提高硬盘速度的话, 现在可以怎样做?

硬件RAID的好处:通过RAID接口提交一个请求,比如读10M文件,接口控制卡
会把这个请求拆分为很多小请求,并把这些请求同时提交给多个硬盘去完成.
最后再将所有结果拼装起来返回。

--
☆ 来源:.广州网易BBS站 bbs.nease.net.[FROM: 202.102.13.199]

[关闭][返回]