Linux磁盘命令——dd命令与iostat命令

dd

命令简介

dd 可从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出。

参数介绍

if=文件名:输入文件名,默认为标准输入。即指定源文件。

of=文件名:输出文件名,默认为标准输出。即指定目的文件。

ibs=$bytes:一次读入$bytes个字节,即指定一个块大小为$bytes个字节。

obs=$bytes:一次输出$bytes个字节,即指定一个块大小为$bytes个字节。

bs=$bytes:同时设置读入/输出的块大小为$bytes个字节。

cbs=$bytes:一次转换$bytes个字节,即指定转换缓冲区大小。

skip=$blocks:从输入文件开头跳过$blocks个块后再开始复制。

seek=$blocks:从输出文件开头跳过$blocks个块后再开始复制。

count=$blocks:仅拷贝$blocks个块,块大小等于ibs指定的字节数。

conv=<关键字>,关键字可以有以下11种:
conversion:用指定的参数转换文件。

  1. ascii:转换ebcdic为ascii
  2. ebcdic:转换ascii为ebcdic
  3. ibm:转换ascii为alternate ebcdic
  4. block:把每一行转换为长度为cbs,不足部分用空格填充
  5. unblock:使每一行的长度都为cbs,不足部分用空格填充
  6. lcase:把大写字符转换为小写字符
  7. ucase:把小写字符转换为大写字符
  8. swap:交换输入的每对字节
  9. noerror:出错时不停止
  10. notrunc:不截短输出文件
  11. sync:将每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。

--help:显示帮助信息
--version:显示版本信息

应用实例

1. 将文件中所有小写改成大写


[root@k8s-master ddtest]# dd if=duzhuotest of=duzhuotest.test conv=ucase
记录了0+1 的读入
记录了0+1 的写出
115字节(115 B)已复制,0.000237971 秒,483 kB/秒
[root@k8s-master ddtest]# cat duzhuotest.test
KAFKLNAKJ       KLJKJKFKLLKJLKGJKLGJKJKJ
KAJFAKKLKNLKKJLKJVNLKKKLJAKLLKNFDJAFL
KJKLJKLNVKLKLJFLKGKLAFKLJAFDKFJAKJKJJAFA

[root@k8s-master ddtest]#
[root@k8s-master ddtest]#
[root@k8s-master ddtest]#
[root@k8s-master ddtest]#
[root@k8s-master ddtest]# cat duzhuotest
kafklnakj       kLJkjKFKLlkjLKGJklgjkjkj
kajfakklKNLKKJLKJVNLKkkljakllknfdjafl
KJKLJKLNVKLKLJFLKGKLAFKLJAFDKFJAkjkjjafa

2. 检测坏盘

坏盘无法确定盘符的时候可以通过读写测试的方式进行磁盘确定,在对磁盘进行写入的时候服务器前面板上磁盘的对应的灯会常亮,在对应的挂载点下执行以下命令

 dd if=/dev/zero of=wtest_for_find_disk bs=64k count=100k

3. 拷贝内存内容到硬盘

[root@k8s-master dev]# dd if=/dev/mem of=/root/mem.bin bs=1024
dd: 读取"/dev/mem" 时出错: 不允许的操作
记录了1024+0 的读入
记录了1024+0 的写出
1048576字节(1.0 MB)已复制,0.00316028 秒,332 MB/秒
[root@k8s-master dev]#

4.测试磁盘性能配合iostat

#1.开两个窗口,一个dd命令测试写入数据,一个iostat命令查看磁盘性能数据

#2.iostat命令每秒实时输出磁盘性能数据
iostat -x -d 1  sda

#3.dd命令测试写入数据,conv=fdatasync oflag=direct 保证数据真实写到磁盘上,而不是写在cache缓存中
dd if=/dev/zero of=test.img bs=1M count=2000  conv=fdatasync oflag=direct


5. 增加swap分区的大小

#1.创建一个大小为256M的文件
dd if=/dev/zero of=/swapfile bs=1024 count=262144

#2.把这个文件变成swap文件
mkswap /swapfile

#3.启动这个swap文件
swapon /swapfile

#4.编辑/etc/fstab文件,使其在每次开机时自动加载swap文件
/swapfile swap swap default 0 0


iostat

简介

iostat 主要用于输出磁盘IO 和 CPU的统计信息,iostat属于sysstat软件包可以用。

下载

yum install sysstat

iostat命令输出报告

iostat命令生成两种类型的报告:CPU利用率报告和device利用率报告。

CPU利用率报告

iostat命令生成的第一个报告是CPU利用率报告。对于多处理器系统,CPU值是所有处理器的全局平均值。报告具有以下格式:

%user
显示在用户级别(应用程序)执行时发生的CPU利用率百分比。

%nice
显示在具有良好优先级的用户级别执行时发生的CPU利用率百分比。

%system
显示在系统级(内核)执行时发生的CPU利用率百分比。

%iowait
显示系统有未完成的磁盘I/O请求期间CPU空闲的时间百分比。

%steal
显示虚拟机监控程序为另一个虚拟处理器提供服务时,虚拟CPU非自愿等待的时间百分比。

%idle
显示CPU空闲且系统没有未完成的磁盘I/O请求的时间百分比。

device利用率报告

iostat命令生成的第二个报告是Device Utilization report。设备报告按每个物理设备或分区提供统计信息。可以在命令行上输入要显示统计数据的块设备和分区。如果没有输入设备或分区,那么将显示系统使用的每个设备的统计信息,前提是内核维护其统计信息。如果命令行中给出了ALL关键字,则会显示系统定义的每个设备的统计信息,包括从未使用过的设备。传输速率默认以1K块显示,除非设置了环境变量POSIXLY_CORRECT,在这种情况下使用512字节块。根据使用的标志,报告可能会显示以下字段:

Device:
此列提供/dev目录中列出的设备(或分区)名称。

tps:
指示每秒发送到设备的传输次数。传输是对设备的I/O请求。可以将多个逻辑请求组合为对设备的单个I/O请求。传输的大小不确定。

Blk_read/s(kB_read/s,MB_read/s)
指示从设备读取的数据量,以每秒的块数(千字节、兆字节)表示。块相当于扇区,因此具有512字节的大小。

Blk_wrtn/s(kB_wrtn/s,MB_wrtn/s)
指示每秒写入设备的数据量,以块数(千字节、兆字节)表示。

Blk_read (kB_read, MB_read)
读取的块总数(千字节、兆字节)。

Blk_wrtn (kB_wrtn, MB_wrtn)
写入的块总数(千字节、兆字节)。

rrqm/s
每秒合并到设备队列的读取请求数。

wrqm/s
每秒合并到设备的写入请求数。

r/s
设备每秒完成的读取请求数(合并后)。

w/s
设备每秒完成的写入请求数(合并后)。

rsec/s(rkB/s,rMB/s)
每秒从设备读取的扇区数(千字节、兆字节)。

wsec/s(wkB/s,wMB/s)
每秒写入设备的扇区数(千字节、兆字节)。

avgrq-sz
向设备发出的请求的平均大小(以扇区为单位)。

avgqu-sz
向设备发出的请求的平均队列长度。

await
向要服务的设备发出I/O请求的平均时间(毫秒)。这包括队列中的请求所花费的时间以及为它们提供服务所花的时间。

r_await
向要服务的设备发出读取请求的平均时间(毫秒)。这包括队列中的请求所花费的时间以及为它们提供服务所花的时间。

w_await
向要服务的设备发出写入请求的平均时间(毫秒)。这包括队列中的请求所花费的时间以及为它们提供服务所花的时间。

svctm
向设备发出的I/O请求的平均服务时间(毫秒)。警告不再信任此字段。此字段将在未来的sysstat版本中删除。

%util
向设备发出I/O请求所用时间的百分比(设备的带宽利用率)。当该值接近100%时,会发生设备饱和。

命令示例

1.显示所有CPU和设备的自启动以来的单个历史记录报告

iostat

2.每隔两秒显示一次连续的设备报告

iostat -d 2

3.为所有设备每隔两秒显示,共打印六个报告

iostat -d 2 6

4.以两秒的间隔显示设备sda和sdb的扩展统计报告,共打印六个报告

iostat -x sda sdb 2 6

5.每隔两秒显示设备sda及其所有分区(sda1等),共打印六个报告

iostat -p sda 2 6
posted @ 2021-11-16 16:03  du-z  阅读(553)  评论(0编辑  收藏  举报