磁盘IO配额控制
相对于CPU和内存的配额控制,docker对磁盘IO的控制相对不成熟,大多数都必须在有宿主机设备的情况下使用。主要包括以下参数:
- –device-read-bps:限制此设备上的读速度(bytes per second),单位可以是kb、mb或者gb。
- –device-read-iops:通过每秒读IO次数来限制指定设备的读速度。
- –device-write-bps :限制此设备上的写速度(bytes per second),单位可以是kb、mb或者gb。
- –device-write-iops:通过每秒写IO次数来限制指定设备的写速度。
- –blkio-weight:容器默认磁盘IO的加权值,有效值范围为10-100。
- –blkio-weight-device: 针对特定设备的IO加权控制。其格式为DEVICE_NAME:WEIGHT
存储配额控制的相关参数,可以参考Red Hat文档中blkio这一章,了解它们的详细作用。
磁盘IO配额控制示例
blkio-weight
要使–blkio-weight生效,需要保证IO的调度算法为CFQ。可以使用下面的方式查看:
cat /sys/block/sda/queue/scheduler
noop deadline [cfq]
使用下面的命令创建两个–blkio-weight值不同的容器:
docker run -ti –rm –blkio-weight 100 ubuntu:stress
docker run -ti –rm –blkio-weight 1000 ubuntu:stress
在容器中同时执行下面的dd命令,进行测试:
time dd if=/dev/zero of=test.out bs=1M count=1024 oflag=direct
最终输出如下图所示:
在我的测试环境上没有达到理想的测试效果,通过docker官方的blkio-weight doesn’t take effect in docker Docker version 1.8.1 #16173,可以发现这个问题在一些环境上存在,但docker官方也没有给出解决办法。
device-write-bps
使用下面的命令创建容器,并执行命令验证写速度的限制。
docker run -tid –name disk1 –device-write-bps /dev/sda:1mb ubuntu:stress
通过dd来验证写速度,输出如下图示:
可以看到容器的写磁盘速度被成功地限制到了1MB/s。device-read-bps等其他磁盘IO限制参数可以使用类似的方式进行验证。
容器空间大小限制
在docker使用devicemapper作为存储驱动时,默认每个容器和镜像的最大大小为10G。如果需要调整,可以在daemon启动参数中,使用dm.basesize来指定,但需要注意的是,修改这个值,不仅仅需要重启docker daemon服务,还会导致宿主机上的所有本地镜像和容器都被清理掉。
使用aufs或者overlay等其他存储驱动时,没有这个限制。
评论前必须登录!
注册