可不可以多线程同时读写多个磁盘

时间:2022-12-25 08:33:21
假如一个Linux服务器上装有10块硬盘,分别挂载在10个文件夹下面,现在用10个线程,同时往这10个文件夹里面写数据,这样,通过同时读写10个硬盘,数据的写入速度,可以达到单线程往一个文件夹写入速度的10倍吗?

还是说其实只能一个一个硬盘轮流写,写入速度和写一个硬盘一样?

5 个解决方案

#1


当然多线程同时读写多个磁盘,如果是多核,多线程应该比单线程快多了吧

#2


当然可以,更何况你的还是各个线程读写各自对应的设备,多核多个线程肯定会快很多,即使是单核多线程,线程被调度的机会增加了,也比例一个线程快的

#3


你这个想法类似raid

#4


看你的硬盘控制器能并发地操作几块硬盘了,如果硬盘控制器是串行的,那你最终还是串行的,一个线程操作,其他线程要忙等待。

#5


RAID就是像你说的这么干的,RAID0最贴近,RAID5和RAID6多了校验。
在RAID上建立LUN,LUN也是跨硬盘的。但是要注意,每一次写入的大小至少是512字节。也就是说,如果你有2块硬盘(A和B)做了RAID0,写1K字节的时候,是先往盘A写入512字节,同时往B写512字节。现实中由于派发命令的队列机制不同,可能存在一定的先后顺序,但是很贴近你的说法了。当然,如果你只是写100个字节……我只能说,硬盘不支持……

#1


当然多线程同时读写多个磁盘,如果是多核,多线程应该比单线程快多了吧

#2


当然可以,更何况你的还是各个线程读写各自对应的设备,多核多个线程肯定会快很多,即使是单核多线程,线程被调度的机会增加了,也比例一个线程快的

#3


你这个想法类似raid

#4


看你的硬盘控制器能并发地操作几块硬盘了,如果硬盘控制器是串行的,那你最终还是串行的,一个线程操作,其他线程要忙等待。

#5


RAID就是像你说的这么干的,RAID0最贴近,RAID5和RAID6多了校验。
在RAID上建立LUN,LUN也是跨硬盘的。但是要注意,每一次写入的大小至少是512字节。也就是说,如果你有2块硬盘(A和B)做了RAID0,写1K字节的时候,是先往盘A写入512字节,同时往B写512字节。现实中由于派发命令的队列机制不同,可能存在一定的先后顺序,但是很贴近你的说法了。当然,如果你只是写100个字节……我只能说,硬盘不支持……