linux使用dd测试磁盘的io速度/复制文件(可以压缩)

Linux dd

Linux dd 命令用于读取、转换并输出数据。dd 可从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出。
我们可以利用 dd 命令的复制功能,测试某个磁盘的 IO 性能,须要注意的是 dd 命令只能大致测出磁盘的 IO 性能,不是非常准确。

  • 在类Unix系统中,/dev/null,或称空设备,是一个特殊的设备文件,它丢弃一切写入其中的数据(但报告写入操作成功),可以理解为linux中的黑洞文件.
  • 在类UNIX 操作系统中, /dev/zero 是一个特殊的文件,当你读它的时候,它会提供无限的空字符(NULL),可以无限读取。
    一个典型用法是用它提供的字符流来覆盖信息, 另一个常见用法是产生一个特定大小的空白文件。

测试写入速率

  • time有计时作用.
  • dd用于复制,
  • if读出,写到of
  • if=/dev/zero不产生IO,因此可以用来测试纯写速度.
  • bs是每次读或写的大小,即一个块的大小,
  • count是读写块的数量。
  • offlag=direc 参数测试 IO 时必须指定,代表直接写如磁盘,不使用 cache .
time dd if=/dev/zero of=test.file bs=1G count=2 oflag=direct

在这里插入图片描述

可以看到,该分区磁盘写入速率为 884M/s,其中:

  • /dev/zero 伪设备,会产生空字符流,对它不会产生 IO 。
  • if 参数用来指定 dd 命令读取的文件。
  • of 参数用来指定 dd 命令写入的文件。
  • bs 参数代表每次写入的块的大小。
  • count 参数用来指定写入的块的个数。
  • offlag=direc 参数测试 IO 时必须指定,代表直接写如磁盘,不使用 cache 。

测试读性能
刚刚上面测试写的时候写了一个test.file的空白文件,正好拿来测试读性能

time dd if=test.file of=/dev/null bs=1M iflag=direct

在这里插入图片描述

dd复制文件

备份的硬盘demo
这个命令将 sda 盘备份到指定文件 /root/sda.img 中去

dd if=/dev/sda of=/root/sda.img

上面备份完/dev/sda磁盘后恢复demo

dd if=/root/sda.img of=/dev/sdb

备份的时候使用gzip进行压缩

dd if=/dev/sda | gzip > /root/sda.img.gz

gzip进行解压恢复备份

gzip -dc /root/sda.img.gz | dd of=/dev/sdc

备份bzip2 进行压缩

dd if=/dev/sda | bzip2 > disk.img.bz2

bzip2 恢复备份

bzip2 -dc /root/sda.img.gz | dd of=/dev/sdc

猜你喜欢

转载自blog.csdn.net/weixin_43944305/article/details/111938954
今日推荐