2.2. 建​​​立​​​階​​​層​​​和​​​連​​​接​​​子​​​系​​​統​​​

警告

下​​​列​​​指​​​示​​​涵​​​蓋​​​了​​​建​​​立​​​新​​​階​​​層​​​,並​​​將​​​子​​​系​​​統​​​連​​​至​​​此​​​階​​​層​​​的​​​指​​​示​​​,它​​​假​​​設​​​了​​​控​​​制​​​群​​​組​​​尚​​​未​​​配​​​置​​​於​​​您​​​的​​​系​​​統​​​上​​​。​​​在​​​此​​​情​​​況​​​下​​​,這​​​些​​​指​​​示​​​將​​​不​​​會​​​影​​​響​​​系​​​統​​​的​​​作​​​業​​​。​​​然​​​而​​​,更​​​改​​​一​​​個​​​含​​​有​​​工​​​作​​​的​​​控​​​制​​​群​​​組​​​的​​​可​​​調​​​整​​​參​​​數​​​,則​​​會​​​即​​​刻​​​影​​​響​​​這​​​些​​​工​​​作​​​。​​​本​​​指​​​南​​​會​​​在​​​第​​​一​​​次​​​更​​​改​​​可​​​能​​​會​​​影​​​響​​​一​​​或​​​更​​​多​​​項​​​工​​​作​​​的​​​可​​​調​​​整​​​控​​​制​​​群​​​組​​​參​​​數​​​時​​​,進​​​行​​​警​​​告​​​。​​​
在​​​一​​​部​​​已​​​(透​​​過​​​手​​​動​​​式​​​或​​​ cgconfig 服​​​務​​​)配​​​置​​​了​​​控​​​制​​​群​​​組​​​的​​​系​​​統​​​上​​​,這​​​些​​​指​​​令​​​將​​​會​​​失​​​敗​​​,除​​​非​​​您​​​先​​​將​​​會​​​影​​​響​​​系​​​統​​​作​​​業​​​的​​​既​​​有​​​階​​​層​​​卸​​​載​​​。​​​請​​​勿​​​在​​​生​​​產​​​系​​​統​​​上​​​試​​​驗​​​這​​​些​​​指​​​示​​​。​​​
若​​​要​​​建​​​立​​​一​​​個​​​階​​​層​​​,並​​​將​​​子​​​系​​​統​​​連​​​至​​​該​​​階​​​層​​​,請​​​以​​​ root 身​​​份​​​編​​​輯​​​ /etc/cgconfig.conf 檔​​​案​​​的​​​ mount 部​​​份​​​。​​​mount 部​​​份​​​中​​​的​​​項​​​目​​​格​​​式​​​如​​​下​​​:
子​​​系​​​統​​​ = /cgroup/階​​​層​​​;
當​​​ cgconfig 下​​​次​​​啟​​​用​​​時​​​,它​​​將​​​會​​​建​​​立​​​階​​​層​​​,並​​​將​​​子​​​系​​​統​​​連​​​接​​​至​​​該​​​階​​​層​​​。​​​
下​​​列​​​範​​​例​​​會​​​建​​​立​​​一​​​個​​​名​​​為​​​ cpu_and_mem 的​​​階​​​層​​​,並​​​將​​​ cpu、​​​cpuset、​​​cpuacct,以​​​及​​​ memory 子​​​系​​​統​​​連​​​接​​​至​​​此​​​階​​​層​​​。​​​
mount {
    cpuset  = /cgroup/cpu_and_mem;
    cpu     = /cgroup/cpu_and_mem;
    cpuacct = /cgroup/cpu_and_mem;
    memory  = /cgroup/cpu_and_mem;
}

額​​​外​​​方​​​式​​​

您​​​亦​​​可​​​使​​​用​​​ shell 指​​​令​​​和​​​工​​​具​​​程​​​式​​​來​​​建​​​立​​​階​​​層​​​,並​​​將​​​子​​​系​​​統​​​連​​​至​​​它​​​們​​​。​​​
以​​​ root 身​​​份​​​為​​​階​​​層​​​建​​​立​​​「​​​掛​​​載​​​點​​​」​​​。​​​請​​​在​​​掛​​​載​​​點​​​中​​​包​​​含​​​控​​​制​​​群​​​組​​​的​​​名​​​稱​​​:
~]# mkdir /cgroup/name
例​​​如​​​:
~]# mkdir /cgroup/cpu_and_mem
接​​​下​​​來​​​,請​​​使​​​用​​​ mount 指​​​令​​​來​​​掛​​​載​​​階​​​層​​​,並​​​同​​​時​​​連​​​接​​​一​​​個​​​或​​​更​​​多​​​個​​​子​​​系​​​統​​​。​​​例​​​如​​​:
~]# mount -t cgroup -o subsystems name /cgroup/name
subsystems 是​​​個​​​以​​​逗​​​號​​​區​​​隔​​​開​​​的​​​子​​​系​​​統​​​清​​​單​​​,而​​​ name 代​​​表​​​階​​​層​​​的​​​名​​​稱​​​。​​​所​​​有​​​可​​​用​​​子​​​系​​​統​​​的​​​詳​​​細​​​描​​​述​​​列​​​在​​​ Red Hat Enterprise Linux 中​​​的​​​可​​​用​​​子​​​系​​​統​​​ 中​​​,並​​​且​​​ 章 3, 子​​​系​​​統​​​和​​​可​​​調​​​整​​​的​​​參​​​數​​​ 提​​​供​​​了​​​詳​​​細​​​的​​​參​​​照​​​。​​​

範例 2.3. 使​​​用​​​掛​​​載​​​指​​​令​​​來​​​連​​​接​​​子​​​系​​​統​​​

在​​​此​​​範​​​例​​​中​​​,有​​​個​​​名​​​為​​​ /cgroup/cpu_and_mem 的​​​目​​​錄​​​已​​​存​​​在​​​,它​​​會​​​被​​​作​​​為​​​是​​​我​​​們​​​所​​​建​​​立​​​之​​​階​​​層​​​的​​​掛​​​載​​​點​​​。​​​我​​​們​​​將​​​ cpu、​​​cpuset 和​​​ memory 子​​​系​​​統​​​連​​​至​​​一​​​個​​​我​​​們​​​命​​​名​​​為​​​ cpu_and_mem 的​​​階​​​層​​​,並​​​ mount cpu_and_mem 階​​​層​​​於​​​ /cgroup/cpu_and_mem 上​​​:
~]# mount -t cgroup -o cpu,cpuset,memory cpu_and_mem /cgroup/cpu_and_mem
您​​​可​​​透​​​過​​​ lssubsys 指​​​令​​​列​​​出​​​所​​​有​​​可​​​用​​​子​​​系​​​統​​​,以​​​及​​​其​​​目​​​前​​​的​​​掛​​​載​​​點​​​(比​​​方​​​說​​​,它​​​們​​​所​​​連​​​至​​​的​​​階​​​層​​​的​​​掛​​​載​​​位​​​置​​​)[3]
~]# lssubsys -am
cpu,cpuset,memory /cgroup/cpu_and_mem
net_cls
ns
cpuacct
devices
freezer
blkio
此​​​輸​​​出​​​顯​​​示​​​了​​​:
  • cpu、​​​cpuset 和​​​ memory 子​​​系​​​統​​​連​​​至​​​了​​​一​​​個​​​掛​​​載​​​於​​​ /cgroup/cpu_and_mem 上​​​的​​​階​​​層​​​,並​​​且​​​
  • 基​​​於​​​缺​​​少​​​相​​​對​​​映​​​的​​​掛​​​載​​​點​​​,net_cls、​​​ns、​​​cpuacct、​​​devices、​​​freezer 以​​​及​​​ blkio 子​​​系​​​統​​​尚​​​未​​​連​​​至​​​任​​​何​​​階​​​層​​​。​​​


[3] lssubsys 指​​​令​​​為​​​ libcgroup 套​​​件​​​所​​​提​​​供​​​的​​​工​​​具​​​程​​​式​​​之​​​一​​​。​​​您​​​必​​​須​​​安​​​裝​​​ libcgroup 才​​​可​​​使​​​用​​​它​​​:若​​​您​​​無​​​法​​​執​​​行​​​ lssubsys,請​​​參​​​閱​​​〈​​​章 2, 使​​​用​​​控​​​制​​​群​​​組​​​〉​​​。​​​