在Quota:容器写满磁盘的问题中限制了容器写磁盘的大小。至于读写磁盘的性能,可以向cpu、memory一样使用cgrup进行限制。
Cgroup v1 中有 blkio 子系统,它可以来限制磁盘的 I/O。
Blkio Cgroup
磁盘的读写性能有两个指标:IOPS和吞吐量。
IOPS是每秒读写磁盘的次数,数值越大,磁盘性能越好。吞吐量 = IOPS x 块大小。
使用方式和cpu,memory cgroup类似,在/sys/fs/cgroup/blkio/创建子目录作为控制组,把需要限制IO的容器进程写入到控制组的cgroup.procs参数就可以了。
有如下几个控制参数,就是四个文件,将对应的数值写入文件当中即可。
blkio.throttle.read_iops_device
blkio.throttle.read_bps_device
blkio.throttle.write_iops_device
blkio.throttle.write_bps_device这四个参数分别表示:读的IOPS、吞吐量,写的IOPS、吞吐量。
例如限制对/dev/vdb的磁盘写入吞吐量不超过10MB/s,示例如下
echo "252:16 10485760" > $CGROUP_CONTAINER_PATH/blkio.throttle.write_bps_device其中252:16是/dev/vdb的主副设备号,这个设备号可以使用ls -l /dev/vdb查看。
通过上面的方式即可完成对容器读写磁盘的性能限制,这样可以避免多个容器之间读写磁盘的影响。 当然,最好的情况还是每个容器使用不同的磁盘进行读写。