一、Cgroups
1.1 介紹
Cgroup是Control group的簡稱。最初由由Google的工程師(主要是Paul Menage和Rohit Seth)在2006年以“process containers(進程容器)”的名字開始的, 在2007年的晚些時候被重命名為“控制組”并被合并到了2.6.24版的內核中,現已成為Linux內核中的一個功能,是Linux內核提供一種可限制、記錄、隔離進程組所使用的物理資源(如:CPU、Memory、I/O等)的機制。
1.2 作用
cgroup是用于將一個或多個進程關聯至一個 “進程組”,并且可以統一的進行監控和管理容器,形成對資源管理提供了統一的架構。根據監控或管理的需要,運行中的系統上很可能存在多個Cgroup,而這些Cgroup被組織成了層級結構,類似多根倒置的樹狀結構)。事實上,Cgroups是一種資源控制機制,其資源配置的最小單位是所謂的Subsystem——一種資源控制器,通過將資源劃分為多種不同的類型(CPU、內存、磁盤輸入輸出等)并將這些類型的資源關聯至層級結構中指定的Cgroup實現資源分配。
備注:cgroups是實現IaaS虛擬化(kvm、lxc等),PaaS容器沙箱(Docker等)的資源管理控制部分的底層基礎
二、lxc
2.1 介紹
LXC是LinuX Container的簡稱,提供輕量級的虛擬化,是一種基于容器的操作系統層級的虛擬化技術。利用新版Linux內核的特性(Cgroups等)實現的無需hypervisor的輕型虛擬化技術。容器能有效的將由單個操作系統管理的資源劃分到孤立的組中,以更好地在孤立的組之間平衡有沖突的資源使用需求。
LXC能夠虛擬出一個完整的系統環境(rootfs),也可以僅為單個或多個應用程序提供虛擬化運行環境。從使用方式來看,它更像是增強版的chroot環境,提供一個擁有自己進程、網絡空間的虛擬環境。
2.2 優勢
-
與宿主機使用同一個內核,性能損耗小;
-
輕量級隔離,在隔離的同時還提供共享機制,以實現容器與宿主機的資源共享;
-
容器可以在CPU核心的本地運行指令,不需要任何專門的解釋機制;
三、LXC使用說明
3.1 lxc命令介紹
-
lxc-create 創建虛擬機
-t:指定根據哪個模板創建虛擬機
-n:指定虛擬機的名稱
-
lxc-checkconfig 檢查運行環境及配置信息
-
lxc-start 開啟虛擬機
-n:指定虛擬機名稱
-d:指明讓虛擬機在后臺運行
-
lxc-stop 關閉虛擬機
備注:命令其他參數的詳細用法可以查看幫助信息
3.2 lxc的模板說明
默認情況下lxc的模板存放路徑為 /usr/share/lxc/templates/ ,里面存放著各操作系統的模板,對于CentOS而言,默認安裝時以最小化操作系統安裝。并且在使用模板安裝時會需要連接其內部指向的網絡進行下載安裝,如果有需要,可以修改里面的參數,讓其指向我們內部的yum倉庫進行安裝。
3.3 lxc的虛擬機默認安裝路徑
lxc安裝的虛擬機默認都是安裝在/var/lib/lxc 路徑下。
3.4 lxc默認配置信息
在創建虛擬機時,默認會去讀一個配置信息,而配置信息文件是 /etc/lxc/default.conf
[root@localhost templates]# vim /etc/lxc/default.conf lxc.network.type = veth #創建出來的虛擬機的是以什么名字命名的網卡名稱 lxc.network.link = virbr0 #指定所使用的橋接網卡的名字 lxc.network.flags = up #網絡的狀態信息
3.5 其他需要了解
在安裝完CentOS時,系統會自動生成一個root的密碼,而密碼的文件的路徑是在 /var/lib/lxc 下你所安裝的虛擬機,其中有一個文件名為 tmp_root_pas ,該文件存放著root默認的密碼信息
四、CentOS 6.5上使用lxc-1.0.5
我們都知道在VMware上安裝虛擬機都需要使用到一個叫橋接的網絡,這樣的目的是為讓其他主機能夠訪問VMware里的虛擬機,在安裝完VMware Workstation時,程序默認會安裝虛擬網卡,目的是讓虛擬主機進行通信。
在CentOS上安裝虛擬化軟件,為了讓系統里的虛擬機能夠訪問網絡,我們也需要使用類似方法,將物理網卡虛擬成為交換機,也稱之為網橋。
4.1 所需程序包
-
bridge-utils #CentOS下網橋管理工具所需的依賴包
-
lxc-1.0.5-1.e16.x86_64.rpm #lxc程序包
-
lxc-libs-1.0.5-1.e16.x86_64.rpm # lxc所需的庫文件程序包
-
libcgroup #Cgroup程序包
4.2 安裝所需的依賴包
1、安裝bridge-utils 程序包
[root@localhost ~]# yum install bridge-utils -y
2、安裝libcgroup程序包
[root@localhost ~]# yum -y install libcgroup
3、安裝lxc所需的程序包及庫文件程序包
[root@localhost ~]# yum -y install lxc-libs-1.0.5-1.el6.x86_64.rpm lxc-1.0.5-1.el6.x86_64.rpm
4.3 步驟
1、關閉NetworkManager服務,關閉自動啟動功能
注意:NetworkManager不支持橋功能,所以必須關閉,并且保證其開機不會自動啟動
[root@localhost ~]# service networkmanager stop #關閉服務 [root@localhost ~]# chkconfig networkmanager off #關閉自動開機啟動
2、啟動network服務和cgconfig服務,并確保開機自動啟動
[root@localhost ~]# service network start [root@localhost ~]# service cgconfig start [root@localhost ~]# chkconfig cgconfig on
3、為虛擬網橋接口添加配置文件ifcfg-br0
[root@localhost ~]# cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-br0 #可以通過拷貝將eth0的模板復制給br0 [root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-br0 #修改br0配置
4、將做橋接的物理網卡關聯至前面定義的橋接設備
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
5、重啟網絡服務
[root@localhost ~]# service network restart
#正常而言ssh遠程連接是不應該被斷開的,因為其網卡已經正常變為橋接網絡。
6、查看當前網卡設備信息,br0已經正常使用。
7、修改默認配置信息
[root@localhost templates]# vim /etc/lxc/default.conf lxc.network.type = veth lxc.network.link = br0 #這個要和先前創建的網橋的名稱對應 lxc.network.flags = up
8、檢查lxc配置和環境
[root@localhost templates]# lxc-checkconfig
9、配置lxc-CentOS模板
因為默認情況下,在使用lxc-centos模板時,會從互聯網下載對應的系統安裝的程序包,而此時如果你的虛擬機無法連接互聯網,可以將訪問路徑指向本地yum倉庫中安裝使用。
[root@localhost mnt]# vim /usr/share/lxc/templates/lxc-centos [base] name=CentOS-$release - Base baseurl=file:///mnt
備注:因為此處沒有使用到update,所以已將[update]字段刪除,如有需要可以重新添加指定
10、創建CentOS虛擬機
[root@localhost ~]# lxc-create -n centos6 -t /usr/share/lxc/templates/lxc-centos
#指定虛擬機的名稱為centos6
11、設定root密碼
[root@localhost ~]# chroot /var/lib/lxc/centos6/rootfs passwd
12、啟動虛擬機
[root@localhost mnt]# lxc-start -n centos6
備注:如果直接這樣啟用,虛擬機將會占用當前終端,所以可以加 –d 參數,將其在后臺啟用,當系統啟用完成后,可以使用ssh遠程連接使用。
13、測試
此時可以對虛擬機進行操作,比如重啟、關機、安裝軟件等操作。
原創文章,作者:螃蟹,如若轉載,請注明出處:http://www.www58058.com/13929
已置頂