首页 > 其他分享 >【访问控制】cgroup限制磁盘读写

【访问控制】cgroup限制磁盘读写

时间:2023-10-07 16:13:21浏览次数:40  
标签:限制 throttle 访问控制 读写 blkio cgroup device 磁盘 root

一、前言

参考链接:
Cgroup - Linux的IO资源隔离
用 cgroups 管理进程磁盘 io

二、blkio配置

blkio是cgroup中的一个子系统,可以用于限制及监控磁盘读写io
blkio控制子系统可以限制进程读写的 IOPS 和吞吐量,但它只能对 Direct I/O 的文件读写进行限速,对 Buffered I/O 的文件读写无法限制
Buffered I/O 指会经过 PageCache 然后再写入到存储设备中。这里面的 Buffered 的含义跟内存中 buffer cache 不同,这里的 Buffered 含义相当于内存中的buffer cache+page cache。

1、限制磁盘读写io

blkio涉及限制磁盘读写io的配置文件主要有以下几个,通用echo指定磁盘设备号及数值实现限制磁盘读写io

root@node197:~# ll /sys/fs/cgroup/blkio/
-rw-r--r--   1 root root   0 Mar  4 03:00 blkio.throttle.read_bps_device
-rw-r--r--   1 root root   0 Mar  4 03:00 blkio.throttle.read_iops_device
-rw-r--r--   1 root root   0 Mar  4 06:21 blkio.throttle.write_bps_device
-rw-r--r--   1 root root   0 Mar  4 03:00 blkio.throttle.write_iops_device

通用格式

echo "<disk-number> <io-value>"  > /sys/fs/cgroup/blkio/<io-type>
  • disk-number:指定需要限制的磁盘编号,可通过ll /dev/block/ | grep sdb查看对应磁盘编号,如8:16
  • io-value:指定需要限制的io数值(数值为0表示不限制),当指定的文件名称为blkio.throttle.write_bps_device,则表示限制写入带宽,单位为B/s
  • io-type:指定需要限制的io类型
    • blkio.throttle.write_bps_device:磁盘写入带宽限制
    • blkio.throttle.write_iops_device:磁盘写入IOPS限制
    • blkio.throttle.read_bps_device:磁盘读取带宽限制
    • blkio.throttle.read_iops_device:磁盘读取IOPS限制

参考示例

  • 查看sdb磁盘对应编号为8:16
[root@node189 ~]# ll /dev/block/ | grep sdb
lrwxrwxrwx 1 root root 6 Mar  4 14:29 8:16 -> ../sdb
  • 限制sdb磁盘写入带宽为1MB/s
[root@node189 ~]# echo "8:16 1048576" >> /sys/fs/cgroup/blkio/blkio.throttle.write_bps_device
  • 指定directio测试sdb磁盘写入性能,当前成功限制为1MB/s
[root@node189 ~]# cat /sys/fs/cgroup/blkio/blkio.throttle.write_bps_device
8:16 1048576
[root@node189 ~]# dd if=/dev/zero of=/dev/sdb bs=1M count=1000 oflag=direct
^C64+0 records in
64+0 records out
67108864 bytes (67 MB) copied, 64.0199 s, 1.0 MB/s
  • 解除sdb磁盘写入限制
[root@node189 ~]# echo "8:16 0" >> /sys/fs/cgroup/blkio/blkio.throttle.write_bps_device
[root@node189 ~]# cat /sys/fs/cgroup/blkio/blkio.throttle.write_bps_device
[root@node189 ~]# dd if=/dev/zero of=/dev/sdb bs=1M count=1000 oflag=direct
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB) copied, 21.9032 s, 47.9 MB/s

标签:限制,throttle,访问控制,读写,blkio,cgroup,device,磁盘,root
From: https://www.cnblogs.com/luxf0/p/17746545.html

相关文章

  • 【访问控制】hosts.allow/deny配置说明
    一、前言一个IP请求连入,linux的检查策略是先看/etc/hosts.allow中是否允许,如果允许直接放行;如果没有,则再看/etc/hosts.deny中是否禁止,如果禁止那么就禁止连入。两个配置文件的关系为:/etc/hosts.allow的设定优先于/etc/hosts.deny二、支持服务hosts.allow和hosts.deny规则的......
  • 访问控制列表的应用
    公司网络拓扑 公司网络建设要求 使用C类地址规划网络、每个部门使用一个VLAN为设备分配管理地址限定不同的部门能访问的服务器财务部只能访问财务部服务器生产部只能访问生产部服务器限制Telnet登录,登录用户名为benet,密码为test只有网管可以使用远程桌面、Telnet、SSH等登录方......
  • diskqueue的元数据文件,数据文件,启动入口,元数据文件读写和保存
     nsq中diskqueue是nsq消息持久化的核心,内容较多,一共分为多篇1.diskqueue是什么,为什么需要它,整体架构图,对外接口2.diskqueue的元数据文件,数据文件,启动入口,元数据文件读写及保存3.diskqueue的数据定义,运转核心ioloop()源码详解4. diskqueue怎么写入消息,怎么对外发送消息上一篇博......
  • 二进制文件读写实操,可用
    实测:参照《C++文件操作详解》fstream不能用,以下采用iftream和oftream类实现。读写文件二进制文件的读写读写数据块要读写二进制数据块,使用成员函数read()和write()成员函数,它们原型如下:read(unsignedchar*buf,intnum);write(constunsignedchar*buf,intnum);rea......
  • ElasticSearch系列-索引原理与数据读写流程
    索引原理倒排索引倒排索引(InvertedIndex)也叫反向索引,有反向索引必有正向索引。通俗地来讲,正向索引是通过key找value,反向索引则是通过value找key。ES底层在检索时底层使用的就是倒排索引。索引模型现有索引和映射如下:{"products":{"mappings":{"proper......
  • stata 18 显示r603 不能安装外部命令 主要是设置文件夹的读写权限
    1.stata18安装位置的ado文件夹中新建plus personal ......
  • 笨办法学Python3 习题16 读写文件
    知识点:a_txt=open(file_a)         #默认只读模式打开文件file_a,赋值变量a_txt,后面好执行读取命令b_txt=open(file_b,"w")      #以write写入模式打开文件file_b,赋值变量b_txt//还有"r"只取模式,"a"追加模式a_txt_r=a_txt.rea......
  • 【日常收支账本】【Day03】通过ElementTree+XPath实现对XML文件的读写
    一、项目地址https://github.com/LinFeng-BingYi/DailyAccountBook二、新增1.解析xml文件1.1功能详述解析所设计的xml文件格式,并将所得数据存入变量。点击查看xml格式<DailyAccountBook><balance><fund><value>5000.00</value>......
  • C++ 采用read()和write()读写二进制文件
    以文本形式读写文件和以二进制形式读写文件的区别,并掌握了用重载的>>和<<运算符实现以文本形式读写文件。在此基础上,本节继续讲解如何以二进制形式读写文件。举个例子,现在要做一个学籍管理程序,其中一个重要的工作就是记录学生的学号、姓名、年龄等信息。这意味着,我们需要用一个......
  • thinkphp无法访问控制器如何解决
     TP6在初次安装时创建/app/admin/controller/Index文件时无法访问 默认的thinkphp6只有部分的内置拓展包括:自带的frameworkthinkthinkphp核心驱动think-filesystem文件储存驱动think-helper常用助手库think-orm数据库驱动think-trace页面Trace扩展 安装......