內核虛擬化技術——LXC初體驗

一、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配置

    111.jpg

4、將做橋接的物理網卡關聯至前面定義的橋接設備

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0

    1.jpg

5、重啓網絡服務

[root@localhost ~]# service network restart

    2.jpg

   #正常而言ssh遠程連接是不應該被斷開的,因爲其網卡已經正常變爲橋接網絡。

6、查看當前網卡設備信息,br0已經正常使用。

    3.jpg

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

    4.jpg

9、配置lxc-CentOS模板

因爲默認情況下,在使用lxc-centos模板時,會從互聯網下載對應的系統安裝的程序包,而此時如果你的虛擬機無法連接互聯網,可以將訪問路徑指向本地yum倉庫中安裝使用。

[root@localhost mnt]# vim /usr/share/lxc/templates/lxc-centos
[base]
name=CentOS-$release - Base
baseurl=file:///mnt

    5.jpg

備註:因爲此處沒有使用到update,所以已將[update]字段刪除,如有需要可以重新添加指定

10、創建CentOS虛擬機

[root@localhost ~]# lxc-create -n centos6 -t /usr/share/lxc/templates/lxc-centos

#指定虛擬機的名稱爲centos6

     6.jpg

11、設定root密碼

[root@localhost ~]# chroot /var/lib/lxc/centos6/rootfs passwd

12、啓動虛擬機

[root@localhost mnt]# lxc-start -n centos6

     7.jpg

備註:如果直接這樣啓用,虛擬機將會佔用當前終端,所以可以加 –d 參數,將其在後臺啓用,當系統啓用完成後,可以使用ssh遠程連接使用。

13、測試

     8.jpg

此時可以對虛擬機進行操作,比如重啓、關機、安裝軟件等操作。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章