1. 概述
如果要读写文件系统,可以先用df –h查看每个设备对应的挂载目录
比如,从上图中可以看出,硬盘1的分区1,sda1对应根目录/,硬盘2的分区1,sdb1对应/opt目录。
dd命令,bs设置得越大,测出来的速度越高。要根据测试目的,合理设置bs的值。大数据量连续数据写入,则可以尽量设大。单次碎片式写入,则设置得小一些。尽量贴近实际的使用场景。
如果要规避掉文件系统cache,直接读写,不使用buffer cache,需要加下面的参数
iflag=direct,nonblock
oflag=direct,nonblock
direct 模式就是把写入请求直接封装成io 指令发到磁盘
非direct 模式,就把数据写入系统缓存,然后就认为io 成功,并由操作系统决定缓存中的数据什么时候被写入磁盘
2. 基本的硬盘测试命令
sudo hdparm –tT /dev/sda
3. 写扇区测试
注意:!!!以下命令有可能会破坏of指定设备的分区表,导致整个盘数据丢失!一定要确认是否是外挂硬盘,里面是否有 重要数据,不要随意测试!!!
time dd if=/dev/zero of=/dev/nvme0n1p1 bs=2M count=1000
4. 写文件测试
以刚才df –h的例子分析,硬盘1的分区1,sda1对应根目录/,硬盘2的分区1,sdb1对应/opt目录。
那么要测试sdb的速度,只需要在/opt下写入文件即可。所以,dd命令的of,我们改为/opt/2g.bin
time dd if=/dev/zero of=/opt/2g.bin bs=2M count=1000
第一次创建新文件的速度特别快,多测试几次,速度会稳定到一个值
如果要测试硬盘1,则输出改为/2g.bin,由于根目录下需要root权限,要在命令前加上sudo
sudo time dd if=/dev/zero of=/2g.bin bs=2M count=1000
5. 直接读扇区测试
time dd if=/dev/sdb of=/dev/null bs=2M count=1000
6. 读文件测试
sudo time dd if=/opt/2g.bin of=/dev/null bs=8M count=1000 iflag=direct,nonblock