设备映射器“延迟”设备
查看设备映射器设备的“延迟”目标。这正是它存在的原因。
例
这是如何进行此操作的示例:
创建一个可以读取/写入的位置
[root@centos6 ~]# dd if=/dev/zero of=/tmp/100M-of-zeroes bs=1024k count=100
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 0.141834 s, 739 MB/s
使其成为块设备
Dev-mapper仅从一个块设备映射到另一块设备,而不在文件和块设备之间映射。这就是回送设备的工作。
[root@centos6 ~]# losetup --show --find /tmp/100M-of-zeroes
/dev/loop0
以块为单位获取设备大小
由于这是开发映射器稍后需要的...
[root@centos6 ~]# blockdev --getsize /dev/loop0
204800
设置“慢速”设备
# echo "0 204800 delay /dev/loop0 0 200" | dmsetup create dm-slow
(about a 30 second pause here with no output)
上面“ echo”命令中设备映射器设置表中的字段是:
设备映射器设备此部分的起始扇区(0)
设备映射器设备此部分的扇区数(204800)
此部分的设备映射器设备的类型(延迟)
“ delay”的第一个参数,是延迟后用于实际读取/写入的设备
“ delay”的第二个参数,它是源设备中要使用的偏移量(0)
“ delay”的第三个参数,它是延迟读取(或在未指定其他参数的情况下进行读写)的时间的毫秒数。(200)
我们只有一条线,因为我们将整个设备映射器设备视为相同,但是这使您可以使用不同的后备设备来拥有不同的扇区,仅使其中一些运行缓慢,仅使其中一些发出错误,等等。
See https://linux.die.net/man/8/dmsetup for more info, including the possibly-also-useful "flakey" mapper type. Authoritative documentation on device-mapper's delay feature is at https://www.kernel.org/doc/Documentation/device-mapper/delay.txt
慢吗?
[root@centos6 ~]# dd if=/dev/mapper/dm-slow of=/dev/null count=25000
25000+0 records in
25000+0 records out
12800000 bytes (13 MB) copied, 10.2028 s, 1.3 MB/s
是的,这非常慢,尤其是与原始版本相比:
[root@centos6 ~]# dd if=/dev/loop0 of=/dev/null count=25000
25000+0 records in
25000+0 records out
12800000 bytes (13 MB) copied, 0.0361308 s, 354 MB/s
因此,映射的设备肯定会引入延迟。
结合以上
我故意将事情分解开来,因此该过程很容易遵循。但是,您可以轻松地将上述步骤组合成更少的命令。