1)在Linux虚拟机中,执行一段拷贝操作,记录拷贝前与拷贝后的iostat状态,并记录时间。
拷贝前:待拷贝的文件名 node-v8.10.0-linux-x64 大小 188M
拷贝前iostat状态:
root@ubuntu:/home/wxh/backup/mysql# iostat
Linux 4.13.0-43-generic (ubuntu) 01/03/2019 _x86_64_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.06 0.00 0.04 0.04 0.00 99.86
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
loop0 0.00 0.00 0.00 1244 0
loop1 0.00 0.00 0.00 345 0
loop2 0.00 0.00 0.00 1222 0
loop3 0.01 0.01 0.00 9540 0
loop4 0.00 0.00 0.00 345 0
loop5 0.00 0.00 0.00 346 0
loop6 0.00 0.00 0.00 8 0
sda 0.33 3.02 8.60 2331035 6630752
拷贝执行过程如下:
root@ubuntu:/home/wxh/software# time cp -frp node-v8.10.0-linux-x64 node-v8.10.0-linux-x64_bak
real 0m11.979s
user 0m0.016s
sys 0m1.815s
拷贝后iostat状态:
root@ubuntu:/home/wxh/backup/mysql# iostat
Linux 4.13.0-43-generic (ubuntu) 01/03/2019 _x86_64_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.06 0.00 0.04 0.04 0.00 99.86
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
loop0 0.00 0.00 0.00 1244 0
loop1 0.00 0.00 0.00 345 0
loop2 0.00 0.00 0.00 1222 0
loop3 0.01 0.01 0.00 9540 0
loop4 0.00 0.00 0.00 345 0
loop5 0.00 0.00 0.00 346 0
loop6 0.00 0.00 0.00 8 0
sda 0.36 3.25 8.90 2507683 6862800
对比拷贝前后的状态:2507683 - 2331035 = 176603KB = 172.4MB
与文件实际大小188MB相差不大。
这些数据是在11.979秒中完成的,那么每秒的KB_read/s = 176603/11.979 = 14742KB才对,为何只有3.25KB/s?
在执行拷贝过程中查看过即时值也是如此。
执行iostat 1试一下,iostat后面加数字表示每个多长时间显示一次
多谢提醒,使用另外一个拷贝操作重新测试了一下,iostat是一个动态的过程,我之前观测的方式是有问题的,不能反映实时的情况。重新观察如下:
tps kB_read/s kB_wrtn/s kB_read kB_wrtn
388.66 22202.06 0.00 21536 0
343.68 59949.43 4.60 52156 4
385.11 45897.87 0.00 43144 0
98.99 17571.72 832.32 17396 824
此时的这个文件的每秒的速度也是动态的,最高达到了59.949MB/s的读取速度。但是写入的速度很低,这个的原因应该是文件首先被写入缓存,需要等待系统自动刷新到硬盘中,或者手动执行sync操作。