我有一个由 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
和tps 的nvme1n1
总和md0
。
是由于块大小差异造成的高差异。物理磁盘是否将多个写入合并为单个磁盘写入?有没有办法证实这个假设?
md0
,作为一个成熟的块设备,有自己的调度器和写合并。因此,虽然kB_wrtn/s
每个设备都根据 RAID 阵列本身报告的数据进行四舍五入,但由于在级别tps
上进行合并,这一数字要低得多。md0
为了更好地了解合并,您可以发出
iostat -x -k 1
并查看wareq-sz
字段(或rareq-sz
读取)。