我设置了一个由 2 个物理磁盘组成的 raid0:
bash-4.2$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 100G 0 disk
`-xvda1 202:1 0 100G 0 part /
nvme0n1 259:0 0 1.7T 0 disk
`-md0 9:0 0 3.5T 0 raid0 /home/ec2-user/deploy
nvme1n1 259:1 0 1.7T 0 disk
`-md0 9:0 0 3.5T 0 raid0 /home/ec2-user/deploy
我通过以下命令创建了一些写入负载:
dd if=/dev/random of=/home/ec2-user/deploy/testfile bs=1024 count=4000000
我测量了 md0 和两个物理磁盘的 iostats:
iostat -d 1
Linux 4.14.154-128.181.amzn2.x86_64 (ip-10-123-151-189.ap-northeast-1.compute.internal) 11/08/2021 _x86_64_ (16 CPU)
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
xvda 0.50 0.03 3.07 253733 25752714
nvme0n1 96.83 2.76 853.15 23209231 7166198418
nvme1n1 96.66 2.72 851.67 22806490 7153813102
md0 294.30 5.75 1711.15 48271101 14373181088
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
xvda 0.00 0.00 0.00 0 0
nvme0n1 73.00 0.00 968.00 0 968
nvme1n1 30.00 0.00 268.00 0 268
md0 306.00 0.00 1236.00 0 1236
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
xvda 0.00 0.00 0.00 0 0
nvme0n1 62.00 0.00 784.00 0 784
nvme1n1 32.00 0.00 756.00 0 756
md0 382.00 0.00 1540.00 0 1540
...
我期望的 tpsnvme0n1
和nvme1n1
总结为 的 tps md0
。
差异是否是由于块大小不同造成的。物理磁盘是否将多个写入合并为单个磁盘写入?有没有办法证实这个假设?
答案1
md0
作为一个功能齐全的块设备,它有自己的调度程序和写入合并。因此,虽然kB_wrtn/s
每个设备的舍入值都与 RAID 阵列本身的报告值相近,但tps
由于在md0
级别上合并,因此要低得多。
为了更好地了解合并,您可以发出iostat -x -k 1
并查看wareq-sz
字段(或rareq-sz
读取)。