CN110427159B - 一种支持目录级别的容器磁盘配额限制方法和装置 - Google Patents

一种支持目录级别的容器磁盘配额限制方法和装置 Download PDF

Info

Publication number
CN110427159B
CN110427159B CN201910709704.9A CN201910709704A CN110427159B CN 110427159 B CN110427159 B CN 110427159B CN 201910709704 A CN201910709704 A CN 201910709704A CN 110427159 B CN110427159 B CN 110427159B
Authority
CN
China
Prior art keywords
container
disk
quota
limit
usage
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910709704.9A
Other languages
English (en)
Other versions
CN110427159A (zh
Inventor
高原
顾文杰
顾雯轩
张琦兵
丁雨恒
张刘冬
董子奇
马德超
彭晖
陈鹏
陈泊宇
陈旻昱
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
State Grid Jiangsu Electric Power Co Ltd
Nari Technology Co Ltd
Original Assignee
State Grid Jiangsu Electric Power Co Ltd
Nari Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by State Grid Jiangsu Electric Power Co Ltd, Nari Technology Co Ltd filed Critical State Grid Jiangsu Electric Power Co Ltd
Priority to CN201910709704.9A priority Critical patent/CN110427159B/zh
Publication of CN110427159A publication Critical patent/CN110427159A/zh
Application granted granted Critical
Publication of CN110427159B publication Critical patent/CN110427159B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0623Securing storage systems in relation to content
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公布了一种支持目录级别的容器磁盘配额限制方法和装置,若启动参数包括磁盘配额限制值,提取启动参数作为容器注册信息;根据容器注册信息为每个注册容器分配磁盘配额;定期监视容器的磁盘使用量,如果容器磁盘使用量大于等于磁盘配额限制值减去提前量,则容器磁盘配额状态为越限;注册容器对磁盘进行写操作前,查询容器磁盘配额状态,如果容器磁盘配额状态为未越限,则允许写操作,若容器磁盘配额状态为越限,若要写入磁盘的数据量大于磁盘配额限制值减去容器磁盘使用量,则禁止写入,反之,则允许写入。本发明结合Linux内核技术,在不修改内核的前提下,限制容器磁盘配额,提高容器安全性。

Description

一种支持目录级别的容器磁盘配额限制方法和装置
技术领域
本发明涉及一种支持目录级别的容器磁盘配额限制方法和装置,属于云计算大数据技术领域。
背景技术
在Linux操作系统中,容器主要通过Control Group(控制组)支持资源配额限制,资源包括CPU资源、内存资源、IO资源等。对磁盘配额的限制主要是通过Linux内核技术diskquota(管理磁盘使用空间的一种工具)来实现。Disk quota可以限制用户对磁盘的使用量,但局限在于只能对某个磁盘分区进行限制,而不能针对某个目录的使用量进行限制。在实际使用过程中,很多时候是希望能够分配容器特定目录的使用配额,目前还没有实现目录级别的容器磁盘配额限制。
发明内容
针对现有技术存在的问题,本发明提供一种支持目录级别的容器磁盘配额限制方法和装置,解决了目前不能实现目录级别的容器磁盘配额限制的问题。
为了实现上述目标,本发明采用如下技术方案: 一种支持目录级别的容器磁盘配额限制方法,其特征在于,包括:
对容器启动参数进行解析,若启动参数包括磁盘配额限制值,则提取部分启动参数作为容器注册信息;根据所述容器注册信息为每个注册容器分配对应的磁盘配额,并初始化容器磁盘配额状态和容器磁盘使用量;所述目录包括容器内部的目录和从宿主机挂载的目录,分布在宿主机磁盘的任意位置;
定期监视注册容器的磁盘使用量,如果容器磁盘使用量小于磁盘配额限制值减去提前量,则容器配额状态为未越限,如果容器磁盘使用量大于等于磁盘配额限制值减去提前量,则容器磁盘配额状态为越限;
注册容器对磁盘进行写操作前,查询容器磁盘配额状态,如果容器磁盘配额状态为未越限,则允许写操作,若容器磁盘配额状态为越限,则比较要写入磁盘的数据量与磁盘配额限制值减去容器磁盘使用量,若要写入磁盘的数据量大于磁盘配额限制值减去容器磁盘使用量,则禁止写入,若要写入的数据量小于等于磁盘配额限制值减去容器磁盘使用量,则允许写入。通过磁盘配额状态越限后的精细化控制手段,保证了容器能够用满磁盘配额并且不会超过配额上限。
前述的一种支持目录级别的容器磁盘配额限制方法,其特征在于,所述容器注册信息包括注册容器名、磁盘目标目录和容器磁盘配额数值。
前述的一种支持目录级别的容器磁盘配额限制方法,其特征在于,所述提前量为:磁盘最大写入速度乘以磁盘监视周期,磁盘最大写入速度由监视模块通过操作系统命令主动探测获得。
前述的一种支持目录级别的容器磁盘配额限制方法,其特征在于,所述容器磁盘使用量包括:容器本身所占的磁盘空间和挂载到容器内部的宿主机目录所占的磁盘空间。
一种支持目录级别的容器磁盘配额限制装置,其特征在于,包括:
容器注册模块,用于对容器启动参数进行解析,若启动参数包括磁盘配额限制值,则提取部分启动参数作为容器注册信息;根据所述容器注册信息为每个注册容器分配对应的磁盘配额,并初始化容器磁盘配额状态和容器磁盘使用量;所述目录包括容器内部的目录和从宿主机挂载的目录,分布在宿主机磁盘的任意位置;
容器磁盘使用量监视模块,用于定期监视注册容器的磁盘使用量,如果容器磁盘使用量小于磁盘配额限制值减去提前量,则容器配额状态为未越限,如果容器磁盘使用量大于等于磁盘配额限制值减去提前量,则容器磁盘配额状态为越限;
容器磁盘写入控制模块,用于对容器磁盘进行写操作前,查询容器磁盘配额状态,如果容器磁盘配额状态为未越限,则允许写操作,若容器磁盘配额状态为越限,则比较要写入磁盘的数据量与磁盘配额限制值减去容器磁盘使用量,若要写入磁盘的数据量大于磁盘配额限制值减去容器磁盘使用量,则禁止写入,若要写入的数据量小于等于磁盘配额限制值减去容器磁盘使用量,则允许写入。
前述的一种支持目录级别的容器磁盘配额限制装置,其特征在于,所述容器注册信息包括注册容器名、磁盘目标目录和容器磁盘配额数值。
前述的一种支持目录级别的容器磁盘配额限制装置,其特征在于,所述提前量为:磁盘最大写入速度乘以磁盘监视周期,磁盘最大写入速度由监视模块通过操作系统命令主动探测获得。
前述的一种支持目录级别的容器磁盘配额限制装置,其特征在于,所述容器磁盘使用量包括:容器本身所占的磁盘空间和挂载到容器内部的宿主机目录所占的磁盘空间。
本发明所达到的有益效果:
1.本发明可为容器设置目录级别的磁盘配额限制,且目录包括容器内部的目录和从宿主机挂载的目录,且目录可以任意分布,不要求单个目录挂载在整个磁盘或者磁盘分区上;
2.本发明通过设置提前量,容器磁盘使用量大于等于磁盘配额限制值减去提前量,将容器磁盘配额状态设置为越限,对容器磁盘进行写操作前,查询容器磁盘配额状态,若容器磁盘配额状态为越限,则比较要写入磁盘的数据量与磁盘配额限制值减去容器磁盘使用量,若要写入磁盘的数据量大于磁盘配额限制值减去容器磁盘使用量,则禁止写入,若要写入的数据量小于等于磁盘配额限制值减去容器磁盘使用量,则允许写入,支持磁盘配额精细化控制,可以保证容器能够用满磁盘配额且不会超过配额上限,为容器运行的系统环境提供安全保障。
3.本发明结合Linux内核技术,在不修改内核的前提下,限制容器磁盘配额,提高容器安全性。
附图说明
图1 是实施例中的一种支持目录级别的容器磁盘配额限制方法流程示意图;
图2 是实施例中的容器磁盘监视模块工作流程图;
图3 是实施例中的容器启动进程流程图;
图4 是实施例中的容器磁盘写入精细化控制流程图。
具体实施方式
为了进一步描述本发明的技术特点和效果,以下结合附图和具体实施方式对本发明做进一步描述。
实施例1:
一种支持目录级别的容器磁盘配额限制方法,其特征在于,包括:
对容器启动参数进行解析,若启动参数包括磁盘配额限制值,则提取部分启动参数作为容器注册信息;根据所述容器注册信息为每个注册容器分配对应的磁盘配额,并初始化容器磁盘配额状态和容器磁盘使用量;所述目录包括容器内部的目录和从宿主机挂载的目录,分布在宿主机磁盘的任意位置;本发明可为容器设置目录级别的磁盘配额限制,且目录包括容器内部的目录和从宿主机挂载的目录,且目录可以任意分布,不要求单个目录挂载在整个磁盘上;
定期监视注册容器的磁盘使用量,如果容器磁盘使用量小于磁盘配额限制值减去提前量,则容器配额状态为未越限,如果容器磁盘使用量大于等于磁盘配额限制值减去提前量,则容器磁盘配额状态为越限;
注册容器对磁盘进行写操作前,查询容器磁盘配额状态,如果容器磁盘配额状态为未越限,则允许写操作,若容器磁盘配额状态为越限,则比较要写入磁盘的数据量与磁盘配额限制值减去容器磁盘使用量,若要写入磁盘的数据量大于磁盘配额限制值减去容器磁盘使用量,则禁止写入,若要写入的数据量小于等于磁盘配额限制值减去容器磁盘使用量,则允许写入。
对每个写入逐次进行精细化控制,即对写入操作逐个进行配额扣减和放行,达到允许容器用满磁盘配额同时又不突破限额的目标。支持磁盘配额精细化控制,可以保证容器能够用满磁盘配额且不会超过配额上限,为容器运行的系统环境提供安全保障。
容器注册信息包括注册容器名、磁盘目标目录和容器磁盘配额数值。
提前量为:磁盘最大写入速度乘以磁盘监视周期。
容器磁盘使用量包括:容器本身所占的磁盘空间和挂载到容器内部的宿主机目录所占的磁盘空间。
实施例2:
一种支持目录级别的容器磁盘配额限制装置,其特征在于,包括:
容器注册模块,用于对容器启动参数进行解析,若启动参数包括磁盘配额限制值,则提取部分启动参数作为容器注册信息;根据所述容器注册信息为每个注册容器分配对应的磁盘配额,并初始化容器磁盘配额状态和容器磁盘使用量;所述目录包括容器内部的目录和从宿主机挂载的目录,分布在宿主机磁盘的任意位置;本发明可为容器设置目录级别的磁盘配额限制,且目录包括容器内部的目录和从宿主机挂载的目录,且目录可以任意分布,不要求单个目录挂载在整个磁盘上;
容器磁盘使用量监视模块,用于定期监视注册容器的磁盘使用量,如果容器磁盘使用量小于磁盘配额限制值减去提前量,则容器配额状态为未越限,如果容器磁盘使用量大于等于磁盘配额限制值减去提前量,则容器磁盘配额状态为越限;
容器磁盘写入控制模块,用于对容器磁盘进行写操作前,查询容器磁盘配额状态,如果容器磁盘配额状态为未越限,则允许写操作,若容器磁盘配额状态为越限,则比较要写入磁盘的数据量与磁盘配额限制值减去容器磁盘使用量,若要写入磁盘的数据量大于磁盘配额限制值减去容器磁盘使用量,则禁止写入,若要写入的数据量小于等于磁盘配额限制值减去容器磁盘使用量,则允许写入。通过磁盘最大写入速度与磁盘监视周期相乘得到发现容器磁盘配额到达上限与开始限制磁盘写入之间有可能写入磁盘的最大数据量,进一步从配额中扣减这个数据量,达到提前限制容器磁盘写入的效果,支持磁盘配额精细化控制,可以保证容器能够用满磁盘配额且不会超过配额上限,为容器运行的系统环境提供安全保障。
容器注册信息包括注册容器名、磁盘目标目录和容器磁盘配额数值。
提前量为:磁盘最大写入速度乘以磁盘监视周期。
容器磁盘使用量包括:容器本身所占的磁盘空间和挂载到容器内部的宿主机目录所占的磁盘空间。
实施例3:
如图1所示,一种支持目录级别的容器磁盘配额限制装置,包括三个主要功能模块:容器启动进程、容器用户进程和容器磁盘监视模块。其中,容器启动进程是容器用户进程的父进程,主要功能是负责启动容器用户进程,监视容器用户进程的所有写操作,通过ptrace对写操作进行拦截,并通过查询磁盘配额状态以判定用户进程的写操作是否能执行。容器用户进程是容器启动进程的子进程,运行容器用户进程时可能存在对磁盘的读写操作。容器磁盘监视模块负责处理所有容器发起的磁盘配额信息的注册请求,实时监视各容器的磁盘使用量,并更新磁盘配额状态。
如图2所示,容器磁盘监视模块的功能流程如下:接收到容器启动进程的注册请求,则分配数据结构用于存储容器信息,包括容器名,磁盘信息,磁盘配额限制值以及磁盘实际使用量、容器的磁盘配额状态,并初始化该容器的磁盘配额状态,初始值都为未越限。磁盘监视模块在每个监视周期里都会实时检查每个容器的磁盘使用情况,计算容器磁盘实际使用量(包括容器本身存储目录大小和挂载到容器内部的宿主机目录大小),如果磁盘实际使用量大于等于磁盘配额限制值减去提前量,则设置当前磁盘配额状态为越限;如果磁盘实际使用量小于磁盘配额限制值减去提前量,则设置当前磁盘配额状态为未越限。
如图3示,容器启动进程的功能流程如下:首先根据启动参数进行解析,如果参数包含磁盘配额限制值,则向容器磁盘监视模块发送注册请求;然后进行一系列的初始化操作,在启动容器用户进程前,对容器进程的所有系统调用进行追踪,接着启动容器用户进程;当容器用户进程发生系统调用时,容器启动进程会在执行系统调用前通过ptrace截获这个操作,通过系统调用号判断这个调用是否是写操作;如果不是,退出截获,让用户进程继续执行系统调用,如果是,则查询对应的磁盘配额状态;如果发现磁盘配额状态为越限,则通过修改系统调用号和返回值的方式让写操作失败,如果未越限,则退出截获,让用户进程继续执行系统调用。
如图4所示,容器磁盘写入精细化控制流程如下:首先容器启动进程在启动初期就使用操作系统工具进行磁盘写入速率探测,探测结果例如磁盘写入速率最大为200MB/s。假设监视周期为1秒钟,则在容器磁盘监视模块发现容器磁盘占用达到上限时,有可能容器会额外写入200MB的数据。所以将原磁盘配额上限(假设为10GB)减去200MB作为新的配额上限,即9.8GB。如果容器在运行过程中磁盘占用达到9.8GB,则进入精细化控制流程。此时容器每次的磁盘写入系统调用,容器启动进程都会拦截并获取数据量参数,判断加上此次写入的数据量后是否会超过10G,如果会超过则阻止写入,否则会单次放行。
实施例4:
一种支持目录级别的容器磁盘配额限制方法,包括步骤:
步骤一、容器启动,容器启动进程对命令行传递的启动参数进行解析,得到一个运行的容器。
所述容器启动的具体步骤包括:
1)参数解析。如果启动参数包括磁盘配额限制值,则提取部分启动参数作为注册信息,所述注册信息包括注册容器名、磁盘目标目录和容器磁盘配额数值,向容器磁盘监视模块发送注册信息。
2)容器监视初始化。容器磁盘监视模块记录注册容器的注册信息,为每个注册容器分配两个标识,一个用于记录容器磁盘配额状态,另一个用于记录容器在该宿主机上的磁盘使用量。一个容器可以挂载多个宿主机的目录,这些目录可分布在宿主机磁盘的任意位置,不要求挂载在一个完整的磁盘分区上。
3)容器运行初始化。容器启动进程负责启动容器内的用户进程后,转到后台运行。容器启动进程负责启动容器内用户进程,容器启动进程是父进程,容器内的用户进程为子进程。容器内的用户进程对目标磁盘进行读写操作。
步骤二、容器磁盘监视。容器磁盘监视模块通过周期性的监视容器的磁盘使用情况,更新磁盘配额状态。
所述容器磁盘监视的具体步骤包括:
1)容器磁盘监视模块定时监视注册容器的磁盘空间使用情况。容器磁盘使用量包括:容器本身所占的磁盘空间和挂载到容器内部的宿主机目录所占的磁盘空间。容器自身的存储空间体现在宿主机上是多个分层文件系统的文件,每层是不同时期容器做的内部快照。容器自身的所占磁盘空间通过统计这些文件准确获得。每个挂载到容器内部的目录所占磁盘空间通过操作系统命令获得;
2)容器磁盘监视模块计算容器磁盘使用量。该模块使用操作系统命令计算容器本身所占据的磁盘空间大小,同时计算挂载到容器里的宿主机目录的所占磁盘空间大小。两者相加后的值即为容器当前的实际使用值。
3)容器磁盘监视模块更新容器配额状态。如果容器的实际使用值大于等于磁盘配额限制值减去一个提前量,则置容器配额状态为越限;如果容器的实际使用值小于磁盘配额限制值,则置容器配额状态为未越限。容器启动进程模块会预先探测本地磁盘的最大写入速率,通过与磁盘监视周期相乘得到监视到容器磁盘配额到达上限与开始限制磁盘写入之间有可能写入磁盘的最大数据量,进从配额中扣减这个数据量,即提前量,达到提前限制容器磁盘写入的效果。
步骤三、容器内写操作拦截和精细化控制。通过拦截系统调用,实现磁盘写入控制。
所述容器内写操作控制的具体步骤包括:
1)系统调用拦截。容器用户进程对磁盘进行写操作前,容器启动进程会拦截容器内进程的写操作,然后查询容器配额使用状态。
2)写操作阻止或允许。如果查询发现磁盘配额使用状态为越限,则通过置一个无效系统调用号或者修改参数为非常参数,从而导致用户进程报错,进一步达到阻止容器用户进程对目录进行写操作的目标;如果发现磁盘配额使用状态为未越限,则允许容器用户进程继续对目录进行写操作。容器磁盘写入精细化控制。通过对写操作的逐个监视和放行,实现了磁盘配额充分使用并且不会超过配额上限。
所述容器磁盘写入精细化控制的具体步骤包括:
1)配额限制提前量的计算。因为容器监视是周期性运行的,如果在发现磁盘空间占用达到配额上限时才禁止写入,则容器磁盘空间可能会超过配额上限。所以通过对磁盘写入速率进行探测,得到磁盘最大写入速率,并与磁盘监视周期相乘,可得到在容器启动进程限制容器磁盘写入前,容器有可能写入磁盘的最大数据量。并通过提前从配额中扣减这个数据量达到提前限制容器磁盘写入的目标。
2)写入操作逐个控制。如果已经进入提前控制写入状态,并且此时容器的磁盘配额还没有到达上限,则通过获取接下来每一次磁盘写入的系统调用参数获取希望写入的数据量,判断此次写入后容器磁盘占用会不会超过配额上限,如果不超过则允许写入,否则不允许。即对写入操作逐个放行,进行精细化控制,确保容器能够用满磁盘配额且不会超过上限。
容器磁盘配额限制包含限制容器自身所占用的磁盘空间和挂载到容器内部的磁盘目录所占空间。
本发明可为容器设置目录级别的磁盘配额限制,且目录包括容器内部的目录和从宿主机挂载的目录,且目录可以任意分布,不要求单个目录挂载在整个磁盘或者磁盘分区上;
本发明通过设置提前量,容器磁盘使用量大于等于磁盘配额限制值减去提前量,将容器磁盘配额状态设置为越限,对容器磁盘进行写操作前,查询容器磁盘配额状态,若容器磁盘配额状态为越限,则比较要写入磁盘的数据量与磁盘配额限制值减去容器磁盘使用量,若要写入磁盘的数据量大于磁盘配额限制值减去容器磁盘使用量,则禁止写入,若要写入的数据量小于等于磁盘配额限制值减去容器磁盘使用量,则允许写入,支持磁盘配额精细化控制,可以保证容器能够用满磁盘配额且不会超过配额上限,为容器运行的系统环境提供安全保障。
本发明结合Linux内核技术,在不修改内核的前提下,限制容器磁盘配额,提高容器安全性。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

Claims (6)

1.一种支持目录级别的容器磁盘配额限制方法,其特征在于,包括:
对容器启动参数进行解析,若启动参数包括磁盘配额限制值,则提取部分启动参数作为容器注册信息;根据所述容器注册信息为每个注册容器分配对应的磁盘配额,并初始化容器磁盘配额状态和容器磁盘使用量;所述目录包括容器内部的目录和从宿主机挂载的目录,分布在宿主机磁盘的任意位置;
定期监视注册容器的磁盘使用量,如果容器磁盘使用量小于磁盘配额限制值减去提前量,则容器配额状态为未越限,如果容器磁盘使用量大于等于磁盘配额限制值减去提前量,则容器磁盘配额状态为越限;
注册容器对磁盘进行写操作前,查询容器磁盘配额状态,如果容器磁盘配额状态为未越限,则允许写操作,若容器磁盘配额状态为越限,则比较要写入磁盘的数据量与磁盘配额限制值减去容器磁盘使用量,若要写入磁盘的数据量大于磁盘配额限制值减去容器磁盘使用量,则禁止写入,若要写入的数据量小于等于磁盘配额限制值减去容器磁盘使用量,则允许写入;
所述提前量为:磁盘最大写入速度乘以磁盘监视周期。
2.根据权利要求1所述的一种支持目录级别的容器磁盘配额限制方法,其特征在于,所述容器注册信息包括注册容器名、磁盘目标目录和容器磁盘配额数值。
3.根据权利要求1所述的一种支持目录级别的容器磁盘配额限制方法,其特征在于,所述容器磁盘使用量包括:容器本身所占的磁盘空间和挂载到容器内部的宿主机目录所占的磁盘空间。
4.一种支持目录级别的容器磁盘配额限制装置,其特征在于,包括:
容器注册模块,用于对容器启动参数进行解析,若启动参数包括磁盘配额限制值,则提取部分启动参数作为容器注册信息;根据所述容器注册信息为每个注册容器分配对应的磁盘配额,并初始化容器磁盘配额状态和容器磁盘使用量;所述目录包括容器内部的目录和从宿主机挂载的目录,分布在宿主机磁盘的任意位置;
容器磁盘使用量监视模块,用于定期监视注册容器的磁盘使用量,如果容器磁盘使用量小于磁盘配额限制值减去提前量,则容器配额状态为未越限,如果容器磁盘使用量大于等于磁盘配额限制值减去提前量,则容器磁盘配额状态为越限;
容器磁盘写入控制模块,用于对容器磁盘进行写操作前,查询容器磁盘配额状态,如果容器磁盘配额状态为未越限,则允许写操作,若容器磁盘配额状态为越限,则比较要写入磁盘的数据量与磁盘配额限制值减去容器磁盘使用量,若要写入磁盘的数据量大于磁盘配额限制值减去容器磁盘使用量,则禁止写入,若要写入的数据量小于等于磁盘配额限制值减去容器磁盘使用量,则允许写入;
所述提前量为:磁盘最大写入速度乘以磁盘监视周期。
5.根据权利要求4所述的一种支持目录级别的容器磁盘配额限制装置,其特征在于,所述容器注册信息包括注册容器名、磁盘目标目录和容器磁盘配额数值。
6.根据权利要求4所述的一种支持目录级别的容器磁盘配额限制装置,其特征在于,所述容器磁盘使用量包括:容器本身所占的磁盘空间和挂载到容器内部的宿主机目录所占的磁盘空间。
CN201910709704.9A 2019-08-02 2019-08-02 一种支持目录级别的容器磁盘配额限制方法和装置 Active CN110427159B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910709704.9A CN110427159B (zh) 2019-08-02 2019-08-02 一种支持目录级别的容器磁盘配额限制方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910709704.9A CN110427159B (zh) 2019-08-02 2019-08-02 一种支持目录级别的容器磁盘配额限制方法和装置

Publications (2)

Publication Number Publication Date
CN110427159A CN110427159A (zh) 2019-11-08
CN110427159B true CN110427159B (zh) 2022-08-26

Family

ID=68412172

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910709704.9A Active CN110427159B (zh) 2019-08-02 2019-08-02 一种支持目录级别的容器磁盘配额限制方法和装置

Country Status (1)

Country Link
CN (1) CN110427159B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111142790B (zh) * 2019-12-10 2023-07-07 北京金山云网络技术有限公司 对磁盘写请求的控制方法、装置、电子设备及存储介质
EP4220401A1 (de) * 2022-01-31 2023-08-02 Siemens Aktiengesellschaft Verfahren und system zur bereitstellung von steuerungsanwendungen

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101799797A (zh) * 2010-03-05 2010-08-11 中国人民解放军国防科学技术大学 分布式存储系统中用户磁盘配额的动态分配方法
CN105094692A (zh) * 2014-05-22 2015-11-25 Tcl集团股份有限公司 一种基于Android系统的磁盘配额控制方法及系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101799797A (zh) * 2010-03-05 2010-08-11 中国人民解放军国防科学技术大学 分布式存储系统中用户磁盘配额的动态分配方法
CN105094692A (zh) * 2014-05-22 2015-11-25 Tcl集团股份有限公司 一种基于Android系统的磁盘配额控制方法及系统

Also Published As

Publication number Publication date
CN110427159A (zh) 2019-11-08

Similar Documents

Publication Publication Date Title
US9092356B2 (en) Executing a kernel device driver as a user space process
CN108334396B (zh) 一种数据处理方法和装置、资源组的创建方法和装置
EP2940615B1 (en) Method and apparatus for isolating management virtual machine
Yu et al. Optimizing the block I/O subsystem for fast storage devices
US7895477B2 (en) Resilience to memory errors with firmware assistance
JP4576398B2 (ja) マルチパーティションコンピュータシステムのi/oデバイスを制御するためのシステム
CN101211289A (zh) 恢复操作管理系统和方法
US20180246710A1 (en) Software update apparatus and method in virtualized environment
EP3070604A1 (en) Method and apparatus for accessing physical resources
EP3991073B1 (en) Behavior-based vm resource capture for forensics
US8868877B2 (en) Creating encrypted storage volumes based on thin-provisioning mode information
CN110427159B (zh) 一种支持目录级别的容器磁盘配额限制方法和装置
US9052937B2 (en) Managing storage commands according to input-output priorities and dependencies
US11126575B1 (en) Interrupt recovery management
US11675611B2 (en) Software service intervention in a computing system
US10310890B2 (en) Control method for virtual machine system, and virtual machine system
US20140082275A1 (en) Server, host and method for reading base image through storage area network
US11232010B2 (en) Performance monitoring for storage system with core thread comprising internal and external schedulers
CN113826072B (zh) 系统管理模式中的代码更新
WO2015052836A1 (ja) ストレージ装置及びフェールオーバ方法
US20090300434A1 (en) Clearing Interrupts Raised While Performing Operating System Critical Tasks
Bagdi et al. HyperFresh: Live refresh of hypervisors using nested virtualization
US10599530B2 (en) Method and apparatus for recovering in-memory data processing system
CN110569112A (zh) 日志数据写入方法及对象存储守护装置
US10838949B2 (en) Shared resource update apparatus and shared resource update method

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant