硬盘可以并行访问吗

硬盘可以并行访问吗,第1张

.

单块硬盘同时并行存取两个文件是不可以的,但是可以通过组RAID/带区卷或跨区卷等方式来实现在多块硬盘上的并行存取。

RAID0、RAID5等的原理是将一个文件分布在多块硬盘上,读写时,多块硬盘并行存取,可以大大提高对这个文件的读写速率,当然,仍然不是同时读写多个文件,而是加快每个文件的读写速度。

(RAID5或更高级别的RAID某些情况下可同时存取两个以上文件)拆磨好

跨区卷是直接把多块硬盘合并成一个单一的大分区,如果两个文件位于该逻辑分区的不同物理硬盘上,则可以同时存取。

SCSI、SATA2的NCQ等技术都会主动阻止对单块硬盘两个或以上文件的同时读写,即使有两个进程同时请求读写,也会把它们的读写请求排队整理,尽可能减少磁头的来回摆动。

比如读写请求是1212121231212,可能会被重新排列为1112221112223

队列技术游衡可以提高磁盘的持续存取性能(吞吐量),因此广泛应用于访问密集型服务旅铅器环境;但是副作用是可能降低随机读取性能(突发访问时间变长),例如上例中的3号文件读取请求就被延后了。

.

FttpAdapter fa = new FttpAdapter("fttp://10.232.20.151/home/log/1.log")

Result rs = fa.getFttpReader().tryReadAll()调用tryReadAll会立即返回一个Result,但是不能马上获取到结果值,需要轮循检查它的状态是否就绪

rs.getStatus()有三种状态:

Result.NOTREADY 未就绪

Result.READY 就绪

Result.EXCEPTION 异常轮循直到状态准备就绪:

while(rs.getStatus()==Result.NOTREADY)状态就绪就可以通过getResult()获取到读取结果:

byte[] bts = rs.getResult()可以对一个远程文件的不同部分同改高时并行读写,也可以对多个远程文件同时并行读写,比如:

String fttppath = "fttp://10.232.20.151/home/log/1.log"

FttpAdapter fa0 = new FttpAdapter(fttppath)

FttpAdapter fa1 = new FttpAdapter(fttppath)

FttpAdapter fa2 = new FttpAdapter(fttppath)

Result rs0 = fa0.getFttpReader(0,5).tryReadAll()

Result rs1 = fa1.getFttpReader(5,5).tryReadAll()

Result rs2 = fa2.getFttpReader(10,5).tryReadAll()

上面表示3个同时核早尺并行的读睁念取,分别的从一个文件的0,5,10位置向后读5个字节。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12215056.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存