近幾年,以docker為代表的容器技術(shù)異常火熱,它的輕量、高效讓人欣喜若狂,它被賦予了改變傳統(tǒng)IT運(yùn)維的使命。相信隨著時(shí)間推移,以容器云為落地形式的產(chǎn)品將真正實(shí)現(xiàn)這一使命。
我們都知道docker能夠?qū)崿F(xiàn)資源的隔離和控制,正當(dāng)打算引入docker來(lái)管理產(chǎn)品不同業(yè)務(wù)的資源占用時(shí),發(fā)現(xiàn)它的隔離性是我們所不需要的,而我們都知道,docker底層實(shí)際上是利用了linux內(nèi)核提供的namespace和cgroup機(jī)制,而前者是用于資源隔離的,后者是用于資源控制的。這時(shí),我們想到了直接用cgroup來(lái)實(shí)現(xiàn)。下面先談?wù)勈裁词莄group,接著講解如何使用cgroup來(lái)輕松實(shí)現(xiàn)對(duì)系統(tǒng)資源的管控:
首先,什么是cgroup:
cgroup是Linux內(nèi)核提供的一種機(jī)制,這種機(jī)制可以根據(jù)特定的行為,把一系列系統(tǒng)任務(wù)及其子任務(wù)整合(或分隔)到按資源劃分等級(jí)的不同組內(nèi),從而為系統(tǒng)資源管理提供一個(gè)統(tǒng)一的框架。cgroups可以限制、記錄、隔離進(jìn)程組所使用的物理資源(包括:CPU、memory、IO等),為容器實(shí)現(xiàn)虛擬化提供了基本保證,是構(gòu)建Docker等一系列虛擬化管理工具的基石。