一种linux系统对数据库服务资源隔离的方法及装置与流程

未命名 07-12 阅读:101 评论:0


1.本发明涉及计算机技术领域,特别是涉及一种linux系统对postgresql数据库服务资源隔离的方法及装置。


背景技术:

2.现有对于服务器系统资源隔离,最主要的实现方案是使用硬件虚拟化、沙盒原理、操作系统虚拟化。其中,硬件虚拟化如:kvm、xen、hyper-v、esxi等技术,使一套硬件设施能够被多个操作系统使用,实现跨系统环境的隔离和资源管理。沙盒原理的经典实现是容器,在内核层面将资源虚拟化,划分为多个互相隔离的环境(namespace),实现同一操作系统内资源的隔离,而操作系统虚拟化则是使用cgroup技术,按照某种标准把多个进程划分为一个控制组并标记,对其进行可用资源进行限制。但是目前这三种方法在对cpu、memory、disk、网络io这四种系统资源的管理上虽各有优劣,但都无法实现在付出极低的代价下,对一个服务做出较为全面严格的系统资源限制。


技术实现要素:

3.本发明提供了一种linux系统对postgresql数据库服务资源隔离的方法及装置,以解决现有技术中不能简单且便捷地实现对系统资源的限制的问题。
4.第一方面,本发明提供了一种linux系统对postgresql数据库服务资源隔离的方法,该方法包括:预设系统的守护进程单元systemd、逻辑卷管理单元lvm、控制群组单元cgroup、流量控制单元tc及资源管理工具resourcetool;
5.通过设置使得所述守护进程单元systemd管理postgresql应用的所有进程,所述进程包括父进程fork出的所有子进程,并通过所述逻辑卷管理单元lvm管理服务器的物理磁盘,抽象出统一的逻辑磁盘空间,供分配的应用挂载使用,且所述抽象出的逻辑磁盘空间具有弹性伸缩的能力,以满足应用的不同使用需求,以及通过所述控制群组单元cgroup来创建控制组,根据预设分配原则将应用的数据包打上标记,以根据所标记将应用的数据包分配给对应的路由进行发送处理,并通过控制使得应用的进程仅运行在其对应的cpu上,以及通过所述流量控制单元tc将应用的网络数据包路由到指定的网卡上,并控制其传输速度,同时通过所述资源管理工具resourcetool基于所接收到的用户指令来统筹调度资源,定时同步所述守护进程单元systemd管理的应用进程号到所述控制群组单元的控制组中;
6.通过所述守护进程单元systemd、所述逻辑卷管理单元lvm、所述控制群组单元cgroup、所述流量控制单元tc及所述资源管理工具resourcetool,来实现多个postgresql数据库运行在linux服务器上时,对创建cpu限制、创建memory限制、服务器磁盘逻辑化、申用逻辑磁盘空间、创建网络io限制以及资源管理弹性伸缩。
7.可选地,所述创建cpu限制,包括:通过所述资源管理工具resourcetool接收下达命令,并根据预设的应用服务名称及cpu限制参数,由所述资源管理工具resourcetool调用所述控制群组单元cgroup在cpu和/或cpuset子系统中创建控制组,并写入所述控制组所使
用的cpu资源,以及所述控制组所使用的守护进程单元systemd的数据库应用的所有进程,然后所述资源管理工具resourcetool定时同步所述守护进程单元中应用的进程号到所述控制群组单元cgroup的控制组中,使应用所有进程使用的cpu资源持续受限。
8.可选地,所述创建memory限制,包括:通过所述资源管理工具resourcetool接收下达命令,基于预设的应用服务名称及memory限制参数,由所述资源管理工具resourcetool调用所述守护进程单元systemd中的memorylimit参数对应用使用的memory资源做限制,其中,memorylimit参数是对cgroup中memory子系统的封装调用用参数。
9.可选地,所述申用逻辑磁盘空间,包括:通过所述资源管理工具resourcetool接收下达命令,对服务器的磁盘进行逻辑卷初始化,将预设的逻辑磁盘空间抽象为统一的磁盘逻辑卷,并根据所述资源管理工具resourcetool接收到的下达命令来申用逻辑磁盘空间,通过所述资源管理工具resourcetool调用所述逻辑卷管理单元lvm管理服务器磁盘空间,将数据库应用使用的路径与申请的逻辑卷挂载,以使得数据库应用能使用的逻辑磁盘空间与逻辑卷大小相对应。
10.可选地,所述创建网络io限制,包括:通过所述资源管理工具resourcetool接收下达命令,并基于预设的应用服务名称和io限制的带宽参数,由所述资源管理工具resourcetool调用所述控制群组单元cgroup对所述流量控制单元的应用的数据包打上标记,使在所述应用的数据包到网卡时,所述流量控制单元的过滤器根据所述标记来识别并分类所述数据包,然后根据预设要求来将数据包以其对应的带宽进行传输。
11.可选地,所述资源管理弹性伸缩,包括:根据所述资源管理工具resourcetool记录的cpu使用情况,修改cgroup的配置文件后重新读取,以对cpu进行弹性伸缩。
12.可选地,所述资源管理弹性伸缩,还包括:修改所述守护进程单元systemd的配置文件后重新读取,以对内存弹性伸缩,并借助所述逻辑卷管理单元lvm扩容缩容机制,进行逻辑磁盘空间弹性伸缩,以实现对磁盘弹性伸缩。
13.可选地,所述资源管理弹性伸缩,还包括:通过修改所述流量控制单元tc类的限速规则来对网络io弹性伸缩。
14.第二方面,本发明还提供了一种linux系统对postgresql数据库服务资源隔离的装置,所述装置包括:
15.设置模块,用于系统的守护进程单元systemd、逻辑卷管理单元lvm、控制群组单元cgroup、流量控制单元tc及资源管理工具resourcetool;通过设置使得所述守护进程单元systemd管理postgresql应用的所有进程,所述进程包括父进程fork出的所有子进程,并通过所述逻辑卷管理单元lvm管理服务器的物理磁盘,抽象出统一的逻辑磁盘空间,供分配的应用挂载使用,且所述抽象出的逻辑磁盘空间具有弹性伸缩的能力,以满足应用的不同使用需求,以及通过所述控制群组单元cgroup来创建控制组,根据预设分配原则将应用的数据包打上标记,以根据所标记将应用的数据包分配给对应的路由进行发送处理,并通过控制使得应用的进程仅运行在其对应的cpu上,以及通过所述流量控制单元tc将应用的网络数据包路由到指定的网卡上,并控制其传输速度,同时通过所述资源管理工具resourcetool基于所接收到的用户指令来统筹调度资源,定时同步所述守护进程单元systemd管理的应用进程号到所述控制群组单元的控制组中;
16.控制模块,用于通过所述守护进程单元systemd、所述逻辑卷管理单元lvm、所述控
制群组单元cgroup、所述流量控制单元tc及所述资源管理工具resourcetool,来实现多个postgresql数据库运行在linux服务器上时,对创建cpu限制、创建memory限制、服务器磁盘逻辑化、申用逻辑磁盘空间、创建网络io限制以及资源管理弹性伸缩。
17.第三方面,本发明提供了一种计算机可读存储介质,所述计算机可读存储介质存储有信号映射的计算机程序,所述计算机程序被至少一个处理器执行时,以实现上述任一种所述的linux系统对postgresql数据库服务资源隔离的方法。
18.本发明有益效果如下:
19.本发明通过在操作系统设置systemd、lvm、cgroup、tc以及resourcetool管理工具,通过结合ystemd、lvm、cgroup、tc以及resourcetool管理工具,从而在做到付出极低的代价下即能够获得极为灵活而较为全面的系统资源限制,保证多个postgresql数据库运行在linux服务器上时,每个数据库实例所使用的cpu、memory、disk、网络io系统资源相互隔离,资源控制简单灵活且较为全面稳定,同时本发明还能有效解决父进程fork子进程会脱离cgroup限制的问题。
20.上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
21.通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
22.图1是本发明第一实施例提供的一种linux系统对postgresql数据库服务资源隔离的方法的流程示意图;
23.图2是本发明第一实施例提供的一种linux系统对postgresql数据库服务资源隔离的方法的总体架构示意图;
24.图3是本发明第一实施例提供的对创建cpu限制的架构图;
25.图4是本发明第一实施例提供的对磁盘限制的架构图;
26.图5是本发明第一实施例提供的对网络io限制的流程示意图;
27.图6是本发明第一实施例提供的对网络io限制的架构图;
28.图7是本发明第二实施例提供的一种linux系统对postgresql数据库服务资源隔离的装置的示意图。
具体实施方式
29.本发明实施例针对现有不能全面、简单且便捷地对资源使用情况进行限制的问题,通过设置守护进程单元systemd、逻辑卷管理单元lvm、控制群组单元cgroup、流量控制单元tc及资源管理工具resourcetool。以下结合附图以及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不限定本发明。
30.本发明第一实施例提供了一种linux系统对postgresql数据库服务资源隔离的方法,参见图1,该方法包括:
31.s101、预设系统的守护进程单元systemd、逻辑卷管理单元lvm、控制群组单元cgroup、流量控制单元tc及资源管理工具resourcetool;
32.具体来说,本发明实施例是通过设置,使得所述守护进程单元systemd管理postgresql应用的所有进程,所述进程包括父进程fork出的所有子进程,并通过所述逻辑卷管理单元lvm管理服务器的物理磁盘,抽象出统一的逻辑磁盘空间,供分配的应用挂载使用,且所述抽象出的逻辑磁盘空间具有弹性伸缩的能力,以满足应用的不同使用需求,以及通过所述控制群组单元cgroup来创建控制组,根据预设分配原则将应用的数据包打上标记,以根据所标记将应用的数据包分配给对应的路由进行发送处理,并通过控制使得应用的进程仅运行在其对应的cpu上,以及通过所述流量控制单元tc将应用的网络数据包路由到指定的网卡上,并控制其传输速度,同时通过所述资源管理工具resourcetool基于所接收到的用户指令来统筹调度资源,定时同步所述守护进程单元systemd管理的应用进程号到所述控制群组单元的控制组中;
33.也就是说,本发明实施例是通过设置的守护进程单元systemd、逻辑卷管理单元lvm、控制群组单元cgroup、流量控制单元tc及资源管理工具resourcetool来实现对系统资源的管理。
34.在具体实施时,本领域技术人员可以根据其自身的资源情况来通过设置从而实现本发明实施例所述的守护进程单元systemd、逻辑卷管理单元lvm、控制群组单元cgroup、流量控制单元tc及资源管理工具resourcetool的功能。
35.需要说明的是,本发明实施例所述的系统是linux系统,但是在具体实现时,本领域技术人员也可以在其他各种系统上来通过本发明实施例所述的方法进行资源隔离,从而满足不同系统用户的使用需求。
36.s102、通过所述守护进程单元systemd、所述逻辑卷管理单元lvm、所述控制群组单元cgroup、所述流量控制单元tc及所述资源管理工具resourcetool,来实现多个postgresql数据库运行在linux服务器上时,对创建cpu限制、创建memory限制、服务器磁盘逻辑化、申用逻辑磁盘空间、创建网络io限制以及资源管理弹性伸缩。
37.也即,本发明实施例通过所设置的守护进程单元systemd、所述逻辑卷管理单元lvm、所述控制群组单元cgroup、所述流量控制单元tc及所述资源管理工具resourcetool来最终简单且便捷的对系统资源进行管理。
38.实践表明,通过本发明实施例所述的方法能够在付出极低代价的前提下,保证多个postgresql数据库运行在linux服务器上时,每个数据库实例(包括其fork出的be进程)所使用的cpu、memory、disk、网络io系统资源相互隔离,资源控制简单灵活且较为全面稳定。
39.现有硬件虚拟化通过模块的方式来进行分层,使得暴露出来的虚拟资源和物理资源相似。因为要虚拟出一套操作系统进程和多层级的资源调用的原因,需要的资源开销是巨大的,而且虚拟机一旦创建完成,想修改其使用的硬件资源就变得非常麻烦,灵活性很差。而沙盒原理原生仅支持对主机名的隔离、对磁盘挂载点和文件系统的隔离、对进程通讯的隔离、对进程的隔离、对用户的隔离、对网络的隔离,资源管理不够全面灵活,且隔离程度较差,容易出现容器逃逸的情况,而且当有多组进程需要做资源隔离管理时,沙盒模式需要创建多个沙盒,相应的进程复杂度便会上升,多组进程会运行在多个逻辑环境下,进程间相
互管理通讯的成本大幅提升,维持运行、管理和资源隔离付出的代价将会更大,但是本发明实施例由于设有资源管理工具resourcetool工具,所以并不存在沙盒模式的问题,并且本发明实施例所述的方法几乎不会侵占服务器资源便可在同一环境上实现多组进程资源隔离管理。另外,现有的操作系统虚拟化所使用的cgroup可使用其子系统对不同的资源做出控制,但是对逻辑磁盘空间管理时仅可以限制磁盘挂载点、磁盘io等,不能限制应用使用的逻辑磁盘空间大小。而且现有的cgroup对于像postgresql应用这种父进程fork子进程的情况难以处理,子进程会脱离cgroup的限制。
40.针对上述问题,本发明实施例是在linux系统上设置了守护进程单元systemd、逻辑卷管理单元lvm、控制群组单元cgroup、流量控制单元tc和资源管理工具resourcetool,通过所述守护进程单元systemd、所述逻辑卷管理单元lvm、所述控制群组单元cgroup、所述流量控制单元tc及所述资源管理工具resourcetool,来实现对创建cpu限制、创建memory限制、服务器磁盘逻辑化、申用逻辑磁盘空间、创建网络io限制以及资源管理弹性伸缩,最终实现对postgresql数据库服务资源的简单且有效的隔离,满足用户的不同使用需要,具体参见图2所示。
41.具体实施时,本发明实施例是设置所述创建cpu限制的方法具体包括:通过所述资源管理工具resourcetool下达命令,传入应用服务名称及cpu限制作为参数,所述资源管理工具resourcetool,调用所述控制群组单元cgroup在cpu和/或cpuset子系统中创建控制组,并写入所述控制组所使用的cpu资源,以及所述控制组所使用的守护进程单元systemd的数据库应用的所有进程,后续资源管理工具resourcetool定时同步所述守护进程单元中应用的进程号到所述控制群组单元cgroup的控制组中,使应用所有进程使用的cpu资源持续受限。
42.参见图3,本发明实施例中创建cpu限制的方法包括:
43.使用systemd启动postgresql数据库应用,自动将数据库所有进程纳入systemd管理;
44.向resourcetool下达指令,传入应用的服务名和cpu限制参数,创建cpu限制;
45.resourcetool调用cgroup创建应用的控制组,写入cpu限制条件;
46.resourcetool调用libcgroup设置cgroup控制组开机自动生效;
47.resourcetool记录服务器的cpu使用情况;
48.resourcetool定时同步systemd中应用的进程号到cgroup的控制组。
49.进一步地,本发明实施例所述创建memory限制,包括:
50.通过所述资源管理工具resourcetool下达命令,传入应用服务名称及memory限制作为参数,所述资源管理工具resourcetool调用所述守护进程单元systemd中的memorylimit参数对应用使用的memory资源做限制,其中,memorylimit参数是对cgroup中memory子系统的封装调用用参数。
51.也即,本发明实施例是直接使用systemd中的memorylimit参数对应用使用的memory资源做限制,该参数是对cgroup中memory子系统的封装调用,具体创建memory限制包括以下步骤:
52.使用systemd启动postgresql数据库应用,自动将数据库所有进程纳入systemd管理;
53.向resourcetool下达指令,传入应用的服务名和memory限制参数,创建memory限制;
54.resourcetool调用systemd,配置应用的memorylimit参数,限制应用进程使用memory;
55.resourcetool记录服务器的memory使用情况。
56.进一步地,本发明实施例中,所述申用逻辑磁盘空间的限制,包括:用户通过所述资源管理工具resourcetool下达命令,对服务器的磁盘进行逻辑卷初始化,将指定的逻辑磁盘空间抽象为统一的磁盘逻辑卷。后续通过所述资源管理工具resourcetool下达命令申用逻辑磁盘空间,所述资源管理工具resourcetool调用所述逻辑卷管理单元lvm管理服务器磁盘空间,将数据库应用使用的路径与申请的逻辑卷挂载,以使得数据库应用能使用的逻辑磁盘空间与逻辑卷大小相对应。
57.参见图4,本发明实施例申用逻辑磁盘空间的限制具体包括以下步骤:
58.向resourcetool下达指令,传入磁盘名称作为参数,调用服务器磁盘逻辑化
59.resourcetool将磁盘格式化并重新分区,每块磁盘分为一个分区;
60.resourcetool调用lvm使用上步中的所有磁盘分区创建lvm逻辑卷组;
61.向resourcetool下达指令,传入逻辑卷名称、申用空间大小和数据库存储空间目录路径,resourcetool申用逻辑卷并挂载数据库存储空间目录路径;
62.数据库initdb并启动;
63.resourcetool配置逻辑卷和数据库存储空间开机自动挂载。
64.本发明实施例中,所述创建网络io限制,包括:用户通过所述资源管理工具resourcetool下达命令,传入应用服务名称和io限制的带宽作为参数,所述资源管理工具resourcetool调用所述控制群组单元cgroup对所述流量控制单元的应用的数据包打上标记,使在所述应用的数据包到网卡时,所述流量控制单元的过滤器根据所述标记来识别并分类所述数据包,然后根据预设要求来将数据包以其对应的带宽进行传输。
65.参见图5,本发明实施例对网络io限制具体包括:
66.使用systemd启动postgresql数据库应用,自动将数据库所有进程纳入systemd管理;
67.向resourcetool下达指令,传入应用的服务名和io限制的带宽作为参数;
68.resourcetool调用cgroup创建net_cls子系统控制组,并写入标识;
69.resourcetool调用tc为网卡创建队列,创建类及创建标识过滤器;
70.resourcetool定时同步systemd中应用的进程号到cgroup的控制组;
71.resourcetool记录cgroup子系统控制组信息和tc限制规则;
72.服务器重启后tc规则失效,但resourcetool开机会自动扫描记录的tc规则,并重新配置;
73.其中,本发明实施例网络io限制架构如图6所示:
74.具体实施时,本发明实施例所述资源管理弹性伸缩,包括:根据所述资源管理工具resourcetool记录的cpu使用情况,修改cgroup的配置文件后重新读取,以对cpu进行弹性伸缩。
75.具体来说,本发明实施例是修改所述守护进程单元systemd的配置文件后重新读
取,以对内存弹性伸缩,并借助所述逻辑卷管理单元lvm扩容缩容机制,进行逻辑磁盘空间弹性伸缩,以实现对磁盘弹性伸缩。另外,本发明实施例是通过修改所述流量控制单元tc类的限速规则来对网络io弹性伸缩。
76.总体来说,本发明实施例提供了一种linux系统对postgresql数据库服务使用的cpu、memory、disk、网络io资源限制隔离的方案,本发明实施例通过resourcetool工具,结合systemd使用,定时同步应用进程号到cgroup,解决cgroup管理的应用父进程fork子进程脱离cgroup限制的问题。并通过resourcetool工具,结合systemd、lvm、cgroup、tc使用,实现以极低的成本实现对应用的资源隔离控制。同时通过resourcetool工具,实现仅修改参数便可达到为应用隔离分配系统资源的目的,灵活简单。以及通过resourcetool工具,解决tc命令重启后失效的问题。
77.本发明第二实施例提供了一种linux系统对postgresql数据库服务资源隔离的装置,参见图7,所述装置包括:
78.设置模块,用于系统的守护进程单元systemd、逻辑卷管理单元lvm、控制群组单元cgroup、流量控制单元tc及资源管理工具resourcetool;通过设置使得所述守护进程单元systemd管理postgresql应用的所有进程,所述进程包括父进程fork出的所有子进程,并通过所述逻辑卷管理单元lvm管理服务器的物理磁盘,抽象出统一的逻辑磁盘空间,供分配的应用挂载使用,且所述抽象出的逻辑磁盘空间具有弹性伸缩的能力,以满足应用的不同使用需求,以及通过所述控制群组单元cgroup来创建控制组,根据预设分配原则将应用的数据包打上标记,以根据所标记将应用的数据包分配给对应的路由进行发送处理,并通过控制使得应用的进程仅运行在其对应的cpu上,以及通过所述流量控制单元tc将应用的网络数据包路由到指定的网卡上,并控制其传输速度,同时通过所述资源管理工具resourcetool基于所接收到的用户指令来统筹调度资源,定时同步所述守护进程单元systemd管理的应用进程号到所述控制群组单元的控制组中;
79.控制模块,用于通过所述守护进程单元systemd、所述逻辑卷管理单元lvm、所述控制群组单元cgroup、所述流量控制单元tc及所述资源管理工具resourcetool,来实现多个postgresql数据库运行在linux服务器上时,对创建cpu限制、创建memory限制、服务器磁盘逻辑化、申用逻辑磁盘空间、创建网络io限制以及资源管理弹性伸缩。
80.实践表明,通过本发明实施例所述的装置能够在付出极低代价的前提下,保证多个postgresql数据库运行在linux服务器上时,每个数据库实例(包括其fork出的be进程)所使用的cpu、memory、disk、网络io系统资源相互隔离,资源控制简单灵活且较为全面稳定。
81.本发明实施例的相关内容可参见本发明第一实施例进行理解,在此不做详细论述。
82.本发明第三实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有信号映射的计算机程序,所述计算机程序被至少一个处理器执行时,以实现本发明第一实施例中任一种所述的linux系统对postgresql数据库服务资源隔离的方法。
83.本发明实施例的相关内容可参见本发明第一实施例进行理解,在此不做详细论述。
84.尽管为示例目的,已经公开了本发明的优选实施例,本领域的技术人员将意识到
各种改进、增加和取代也是可能的,因此,本发明的范围应当不限于上述实施例。

技术特征:
1.一种linux系统对postgresql数据库服务资源隔离的方法,其特征在于,包括:预设系统的守护进程单元systemd、逻辑卷管理单元lvm、控制群组单元cgroup、流量控制单元tc及资源管理工具resourcetool;通过设置使得所述守护进程单元systemd管理postgresql应用的所有进程,所述进程包括父进程fork出的所有子进程,并通过所述逻辑卷管理单元lvm管理服务器的物理磁盘,抽象出统一的逻辑磁盘空间,供分配的应用挂载使用,且所述抽象出的逻辑磁盘空间具有弹性伸缩的能力,以满足应用的不同使用需求,以及通过所述控制群组单元cgroup来创建控制组,根据预设分配原则将应用的数据包打上标记,以根据所述标记将应用的数据包分配给对应的路由进行发送处理,并通过控制使得应用的进程仅运行在其对应的cpu上,以及通过所述流量控制单元tc将应用的网络数据包路由到指定的网卡上,并控制其传输速度,同时通过所述资源管理工具resourcetool基于所接收到的用户指令来统筹调度资源,定时同步所述守护进程单元systemd管理的应用进程号到所述控制群组单元的控制组中;通过所述守护进程单元systemd、所述逻辑卷管理单元lvm、所述控制群组单元cgroup、所述流量控制单元tc及所述资源管理工具resourcetool,来实现多个postgresql数据库运行在linux服务器上时,创建cpu限制、创建memory限制、服务器磁盘逻辑化、申用磁盘空间、创建网络io限制以及资源管理弹性伸缩。2.根据权利要求1所述的方法,其特征在于,所述创建cpu限制,包括:通过所述资源管理工具resourcetool接收下达命令,并根据预设的应用服务名称及cpu限制参数,由所述资源管理工具resourcetool调用所述控制群组单元cgroup在cpu和/或cpuset子系统中创建控制组,并写入所述控制组所使用的cpu资源,以及所述控制组所使用的守护进程单元systemd的数据库应用的所有进程,然后所述资源管理工具resourcetool定时同步所述守护进程单元中应用的进程号到所述控制群组单元cgroup的控制组中,使应用所有进程使用的cpu资源持续受限。3.根据权利要求1所述的方法,其特征在于,所述创建memory限制,包括:通过所述资源管理工具resourcetool接收下达命令,基于预设的应用服务名称及memory限制参数,由所述资源管理工具resourcetool调用所述守护进程单元systemd中的memorylimit参数对应用使用的memory资源做限制,其中,memorylimit参数是对cgroup中memory子系统的封装调用参数。4.根据权利要求1所述的方法,其特征在于,所述申用磁盘空间,包括:通过所述资源管理工具resourcetool接收下达命令,对服务器的磁盘进行逻辑卷初始化,将预设的磁盘空间抽象为统一的磁盘逻辑卷,并根据所述资源管理工具resourcetool接收到的下达命令来申用磁盘空间,通过所述资源管理工具resourcetool调用所述逻辑卷管理单元lvm管理服务器磁盘空间,将数据库应用使用的路径与申请的逻辑卷挂载,以使得数据库应用能使用的磁盘空间与逻辑卷大小相对应。5.根据权利要求1-4中任意一项所述的方法,其特征在于,所述创建网络io限制,包括:通过所述资源管理工具resourcetool接收下达命令,并基于预设的应用服务名称和io限制的带宽参数,由所述资源管理工具resourcetool调用所述控制群组单元cgroup对所述流量控制单元的应用的数据包打上标记,使在所述应用的数据包到网卡时,所述流量控制单元的过滤器根据所述标记来识别并分类所述数据包,然后根据预设要求来将数据包以其
对应的带宽进行传输。6.根据权利要求1-4中任意一项所述的方法,其特征在于,所述资源管理弹性伸缩,包括:根据所述资源管理工具resourcetool记录的cpu使用情况,修改cgroup的配置文件后重新读取,以对cpu进行弹性伸缩。7.根据权利要求6所述的方法,其特征在于,所述资源管理弹性伸缩,还包括:修改所述守护进程单元systemd的配置文件后重新读取,以对内存弹性伸缩,并借助所述逻辑卷管理单元lvm扩容缩容机制,进行磁盘空间弹性伸缩,以实现对磁盘弹性伸缩。8.根据权利要求6所述的方法,其特征在于,所述资源管理弹性伸缩,还包括:通过修改所述流量控制单元tc类的限速规则来对网络io弹性伸缩。9.一种linux系统对postgresql数据库服务资源隔离的装置,其特征在于,包括:设置模块,用于设置系统的守护进程单元systemd、逻辑卷管理单元lvm、控制群组单元cgroup、流量控制单元tc及资源管理工具resourcetool;通过设置使得所述守护进程单元systemd管理postgresql应用的所有进程,所述进程包括父进程fork出的所有子进程,并通过所述逻辑卷管理单元lvm管理服务器的物理磁盘,抽象出统一的逻辑磁盘空间,供分配的应用挂载使用,且所述抽象出的逻辑磁盘空间具有弹性伸缩的能力,以满足应用的不同使用需求,以及通过所述控制群组单元cgroup来创建控制组,根据预设分配原则将应用的数据包打上标记,以根据所述标记将应用的数据包分配给对应的路由进行发送处理,并通过控制使得应用的进程仅运行在其对应的cpu上,以及通过所述流量控制单元tc将应用的网络数据包路由到指定的网卡上,并控制其传输速度,同时通过所述资源管理工具resourcetool基于所接收到的用户指令来统筹调度资源,定时同步所述守护进程单元systemd管理的应用进程号到所述控制群组单元的控制组中;控制模块,用于通过所述守护进程单元systemd、所述逻辑卷管理单元lvm、所述控制群组单元cgroup、所述流量控制单元tc及所述资源管理工具resourcetool,来实现多个postgresql数据库运行在linux服务器上时,创建cpu限制、创建memory限制、服务器磁盘逻辑化、申用磁盘空间、创建网络io限制以及资源管理弹性伸缩。10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有信号映射的计算机程序,所述计算机程序被至少一个处理器执行时,以实现权利要求1-8中任意一项所述的linux系统对postgresql数据库服务资源隔离的方法。

技术总结
本发明公开了一种linux系统对postgresql数据库服务资源隔离的方法及装置,本发明通过在操作系统设置systemd、lvm、cgroup、tc以及resourceTool管理工具,通过结合systemd、lvm、cgroup、tc以及resourceTool管理工具,在付出极低的代价下,既能够获得极为灵活而较为全面的系统资源限制,保证多个postgresql数据库运行在linux服务器上时,每个数据库实例所使用的cpu、memory、disk、网络io系统资源相互隔离,资源控制简单灵活且较为全面稳定,又能有效解决父进程fork子进程会脱离cgroup限制的问题。决父进程fork子进程会脱离cgroup限制的问题。决父进程fork子进程会脱离cgroup限制的问题。


技术研发人员:卢存桥 高雪玉 苗健 吕新杰
受保护的技术使用者:瀚高基础软件股份有限公司
技术研发日:2023.04.28
技术公布日:2023/7/7
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐