歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Ubuntu下的虛擬化

Ubuntu下的虛擬化

日期:2017/2/28 15:34:21   编辑:Linux教程

虛擬機(VM)是一個運行在虛擬層的計算機,通常被叫做hypervisor。它並不是真是存在的,然而可以像一個真正的計算機一樣工作。虛擬機所運行的虛擬層決定了虛擬機的虛擬界面,對於虛擬機上運行的操作系統而言,它們就是對應的網卡,內存,硬盤等。從某種意義上講,虛擬機讓guest操作系統誤以為它運行在特定的物理設備上,這些物理設備實際上由虛擬軟件模擬,並且虛擬軟件負責處理與實際硬件的交互。這被稱作硬件模擬。
虛擬技術中有一個折中處理。有些虛擬軟件運行在操作系統層之上,這種虛擬化的靈活性比較差,在本機速度性能比較高。另外一些虛擬軟件直接或接近等於運行在硬件(bare metal)上,也就是說該虛擬軟件或者是操作系統內核的一部分,或者是作為操作系統運行,在虛擬軟件跟物理硬件資源之間沒有其他軟件層。這種方法速度比較快。

KVM

KVM(Kernel-based Virtual Machine)是Linux系統內核的一部分。KVM並不提供硬件模擬,只是提供底層操作。運行KVM,需要處理器支持硬件虛擬化。Intel和AMD都推出了處理器的擴展,用來支持硬件虛擬化,分別為IntelVT-x和AMD-V。

以下命令查看CPU是否支持硬件虛擬化

egrep -c '(vmx|svm)' /proc/cpuinfo

返回值為0說明CPU不支持硬件虛擬化;返回1或更高值說明CPU支持。通常情況,硬件虛擬化擴展是默認不啟用的,要通過進入BIOS設置啟用。

以X200為例進行BIOS修改:開機F12->BootMenu-><Enter Setup>->Config->CPU->

將Intel(R) Virtualization Technology選為Enabled

Intel(R) VT-d Feature選為Enabled

以下命令查看處理器是否是64位

egrep -c ' lm ' /proc/cpuinfo

返回為0說明CPU不是64位,返回為1或更高值說明是64位。

查看目前安裝的Ubuntu內核是否為64位,使用以下命令

uname -m

x86_64說明系統為64-bit kernel,i386,i486, i586 or i686說明Linux內核為32位。


查看安裝的Ubuntu的版本信息:

cat /etc/lsb-release

查看Linux內核版本

cat /proc/version


安裝kvm-ok查看kvm狀態

sudo apt-get install cpu-checker

在終端輸入sudo kvm-ok來檢查CPU目前狀態。

當CPU不支持硬件虛擬化時返回:

INFO:Your CPU does not support KVM extensions

KVM acceleration can NOT be used

當CPU支持硬件虛擬化但未啟用時返回:

INFO:Your CPU supports KVM extensions

INFO:KVM (vmx) is disabled by your BIOS

HINT:Enter your BIOS setup and enable Virtualization Technology (VT),

and then hard power off/power on your system

KVM acceleration can NOT be used

CPU支持硬件虛擬化且正常啟用時返回

INFO:/dev/kvm does not exist

HINT: sudo modprobe kvm_intel

INFO:Your CPU supports KVM extensions

KVM acceleration can be used

安裝kvm

sudo apt-get install qemu-kvm libvirt-bin virtinst bridge-utils

其中qemu-kvm是KVM必須的用戶空間組件

libvirt-bin是與Linux虛擬功能交互的二進制的C工具箱,不僅支持KVM,而且支持XEN,VirtualBox等。

virtinst是一系列創建VMs的命令行工具

bridge-utils是用來配置Linux以太網鏈接的工具集

此外,可以安裝virt-viewer,為VMs提供了一個GUI和VNC的界面;virt-manager,提供了一個管理VMs的GUI。安裝後可以在Dash主頁找到。

默認情況下,通過KVM安裝的客戶操作系統可以使用網絡服務,但是對於網絡上的其他電腦是不可見的,也就是說不能作為服務器被其他系統訪問。默認情況下,VMs的IP地址范圍為10.0.2.0/24,而客戶操作系統可以通過10.0.2.2來訪問主機。如果你想要改變網絡設置,使得虛擬機能夠被外界訪問,那麼需要建立網絡鏈接,讓它們對網絡上的其他系統可見。需要注意的是,使用這種方法,需要通過默認的網絡管理器來控制建立的硬件;該方法對有線網絡可行,對無線網絡不可行。首先安裝libcap2-bin。然後需要通過設置cap_net_admin授予QEMU權限管理網絡。

64位系統,通過以下命令設置:

sudo setcap cap_net_admin=ei /usr/bin/qemu-system-x86_64

32位系統,通過以下命令設置:

sudo setcap cap_net_admin=ei /usr/bin/qemu-system-i386

然後在/etc/network/interfaces添加以下幾行,使用DHCP創建一個橋接界面br0:

auto br0

iface br0 inet dhcp

<tab>bridge_portseth 0

<tab>bridge_stp off

<tab>bridge_fd 0

<tab>bridge_maxwait 0

通過以下命令重啟網絡:

sudo /etc/init.d/networking restart

最後,你需要通過該橋接網絡創建客戶VMs。用這個新的br0界面手動定義你的客戶操作系統,與你在操作系統中通常定義的方式相同。

通過KVM創建虛擬機有幾種方法。其中一種方法是通過vmbuilder。使用命令sudo apt-get install python-vm-builder來安裝。Vmbuilder必須的兩個參數是虛擬軟件名稱和將要使用的操作系統名稱。vmbuilder功能非常強大,可以通過命令行輸入vmbuilder kvm ubuntu --help 來了解。這裡的例子基於KVM和Ubuntu12.04 LTS

sudo vmbuilder kvm ubuntu --suite precise --flavour virtual --arch i386 -o --libvirt qemu:///system --ip 192.168.0.100 --hostname lovelace --bridge br0

--suite指定了Ubuntu的發行版本,--flavour指定我們想要使用虛擬內核(這是用來建造JeOS image的),--arch說明我們想要創建使用一個32位的機器上,-o要vmbuilder去覆蓋前面版本的VM,--libvirt報告本地虛擬環境,增加結果VM到有效機器的列表。

vmbuilder的功能非常強大,更適合有一定基礎的用戶。此外,我們可以使用virtinst來進行KVM的使用和配置。virtinst包括了很多個工具,這裡我們簡單介紹下virt-install和virt-clone,前者用來創建虛擬機;後者用來復制現存的虛擬機。我們可以使用virt-install來實現剛才使用vmbuilder的功能;區別僅僅是參數選項不同。此外virt-install還可以創建包含GUI的桌面image,能被VNC訪問。

sudo virt-install -n hopper -r 512 --disk path=/var/lib/libvirt/images/hopper.img, size=20 -c /dev/cdrom --accelerate --connect=qemu:///system --vnc --noautoconsole -v

-n hopper定義虛擬機的名字;-r 512指定了虛擬機被分配的內存,單位為M;--disk path=...是虛擬硬盤的路徑,可以是一個文件,一個分區,或者是一個邏輯空間。這裡我們在/var/lib/libvirt/images目錄創建了一個20G的文件名字為hopper.img;-c/dev/cdrom是主機的CD-ROM設備路徑,也可以使用一個ISO文件;--accelerate啟用內核加速;--connect定義使用的hypervisor;--vnc用VNC虛擬控制台到處客戶;--noautoconsole阻止自動鏈接到虛擬機的控制台;-v創建一個完全虛擬化的客戶。

要復制一個虛擬機,可使用virt-clone

sudo virt-clone -o hopper -n knuth -f /var/lib/libvirt/images/knuth.img --connect=qemu:///system

-o hopper定義源虛擬機名;-n knuth定義目的虛擬機名;-f定義新虛擬機使用的文件/分區/邏輯空間的路徑;--connect定義使用的hypervisor。

要打開一個虛擬機,使用命令

virsh -c qemu:///system start hopper

要關閉一個虛擬機,使用命令

virsh -c qemu:///system shutdown hopper

當虛擬機被安裝和運行時,你可以通過配置的IP地址來鏈接。你也可以使用GUI界面

virt-view -c qemu:///system hopper

你可以使用GUI來管理你的虛擬機

virt-manager -c qemu:///system

另外常用的虛擬軟件有VirtualBox,VMware和Xen。VirtualBox的使用非常簡單,可以在Ubuntu軟件庫下載,也可以從www.virtualbox.org/wiki/Downloads網頁直接下載對應版本的最新軟件。VMware是付費的企業級的虛擬平台。Ubuntu目前宣布不支持Xen的使用。

Copyright © Linux教程網 All Rights Reserved