使用`dd`命令testing不同分区上的性能

我正在尝试在Azure预览门户上设置一个Web应用程序。 我已经从Azure VM库创build了一个Linux Centos 6.2机器,并附加了一些磁盘。

df -h给了我这个:

 Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup-lv_root 28G 4.2G 22G 16% / tmpfs 1.7G 0 1.7G 0% /dev/shm /dev/sda1 485M 94M 366M 21% /boot /dev/sdb1 133G 188M 126G 1% /mnt/resource /dev/sdc1 40G 176M 38G 1% /mnt/datadrive 

sdb1sdc1都是存储驱动器。 sdb1是创build机器时创build的默认设置, sdc1作为另一个40GB的驱动器由我连接。

我想testing每个驱动器的性能,并将其与启动驱动器(可能是sda1 )进行比较。

我已经尝试使用dd

 dd if=/dev/sda1 of=/tmp/zero bs=1k count=100k // test for sda1 dd if=/dev/sdb1 of=/tmp/zero bs=1k count=100k // test for sdb1 dd if=/dev/sdc1 of=/tmp/zero bs=1k count=100k // test for sdc1 

但是我不确定它是否在每次运行的不同分区中进行testing。 这是testing不同分区读/写的正确方法吗? 谢谢。

尽pipedd可能是一个有用的工具,但记住您正在testing已被caching的文件的可能性也很重要。 在NFS环境中,我们甚至在testing迭代之间卸载和重新安装分区,以确保我们明确地访问服务器,而不是依赖本地的东西。

您最好使用一些更具体的工具来testing磁盘速度,如bonnie ++或iometer 。 他们会给你比纯dd更详细的信息。

DD可以以这种方式提供一些见解,但是您正在使用的方法可以改进。

您需要确定源或目标没有支持它的物理驱动器,否则您可能会获得包含这两个元素的性能特征。

我的build议是使用下面的命令来testing性能。

将目标磁盘安装在/ mnt / sdb1下

 dd if=/dev/zero of=/mnt/sdb1/image_file bs=1k count=... 

随着源磁盘卸载。

 dd if=/dev/sdb1/image_file of=/dev/null bs=1k count=... 

这应该创build一个只包含空字符的大文件。 这对于在任何磁盘上执行都是相当安全的,如果你有空间的话,包括root在内。