顯示具有 KVM 標籤的文章。 顯示所有文章
顯示具有 KVM 標籤的文章。 顯示所有文章

2012年6月11日 星期一

[KVM]How to convert .vhd image file to the qcow2 image type

如果要將 .vhd 或其他 kvm-img 可辨識的映像檔格式轉換乘 raw 或其他其他 kvm-img 可辨識的映像檔格式,可以使用 kvm-img 命令進行轉換。

使用 kvm-img 轉換映像檔格式的語法如下,

kvm-img  convert -O <Output Format>   <FileName>  <Output FileName>

以下以轉換 .vhd 格式檔案為 .qcow2 格式檔案為例,
 
max@satomi:~$ kvm-img convert -O qcow2 FileName.vhd OutputFileName.qcow2       




所需的轉換時間視主機效能及轉換檔案的大小而定。


2012年5月30日 星期三

[Ubuntu]How to configure network in bridge mode on Ubuntu 10.04 / 12.04

這個程序在 Ubuntu 10.04 及 12.04 都可以用



1.安裝橋接工具套件『bridge-utils』及『 uml-utilities』
 
$ sudo apt-get install bridge-utils uml-utilities



2.新增橋接器『br0』

    橋接器的名稱並沒有特別的規定,比較常看到的是『br0』或『bri0』。

   新增橋接器的語法如下,

        brctl  sddbr   <橋接器名稱>

$ sudo brctl addbr br0


 
3.將eth0接到橋接器『br0』

    概念上就跟使用實體橋接器是一樣的,這個動作可以當成是拿一條網路線連接主機的網路卡與橋接器。

    橋接網路卡的語法如下,

        brctl  sddif    <橋接器名稱>  <實體網卡名稱>

$ sudo brctl addif br0 eth0



4.檢視橋接器

    設定完畢看一下設定結果。

     檢視的語法如下,

        brctl  show

$ sudo brctl show

bridge name          bridge id           STP enabled         interfaces   
br0               8000.c89cdc26033b no                    eth0     
virbr0 8000.000000000000 yes







 5.修改『 /etc/network/interfaces』設定檔

    設定完橋接器之後接著還要修改網路介面設定檔,修改內容如下,

#將eth0的網路組態設定註解掉
# The primary network interface
#auto eth0
#iface eth0 inet dhcp


#新增橋接器網路組態設定
auto br0
iface br0 inet static
#將eth0接到橋接器 br0                                                          
bridge_ports eth0
address X.X.X.X #這是橋接器的IP
netmask A.B.C.D
gateway Y.Y.Y.Y 
















6.啟動 IP Forwarding

    找到『/etc/sysctl.conf』設定檔中的『#net.ipv4.ip_forward=1』 這一行,將前面的註解符號拿掉。

# Uncomment the next line to enable packet forwarding for IPv4 
#net.ipv4.ip_forward=1 
net.ipv4.ip_forward=1  #<--將這一行的註解拿掉,啟動IP Forwarding 』 





7.重開機    

$ sudo reboot                                          



8.收工



[Ubuntu]How To Install KVM on Ubuntu 10.04 /12.04

   本安裝程序適用 Ubuntu 10.04 以後的版本


1. 前置作業
 
    安裝KVM前我們需要作一些檢查以確認主機的環境是否符合需求。   
    
    a. 確認 主機BIOS是否支援虛擬化技術(Virtualization Technology)

        一開始需要先確認BIOS是否支援虛擬化技術,同時已開啟這項支援。
 
        進入BIOS設定畫面之後找一下相關設定,依不同的主機品牌這項設定可能稱為『Virtualization Support』 或『Virtualization Technology』,請確定有此項設定同時已啟動『Enable』。

        Reference:
                http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Virtualization/sect-Virtualization-Troubleshooting-Enabling_Intel_VT_and_AMD_V_virtualization_hardware_extensions_in_BIOS.html      


  b. 確認CPU是否支援虛擬化技術

        除了BISO之外,CPU也需要支援虛擬化技術。

        檢視一下『 /proc/cpuinfo』中的CPU Flag,若輸出大於等於『1』,即表示你所使用的CPU支援虛擬化技術。

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




       Note:
            (1).  vmx:Virtual Machine Extensions ( INTEL)。
            (2).  svm:Secure Virtual Machine(AMD)。
            (3). 若為多核心CPU,每一核心會有一個vmx或svm Flag。

      Reference: 
                http://zh.wikipedia.org/wiki/多核心 
                http://en.wikipedia.org/wiki/Multi-core_processo   

    c. 確認CPU是否為64 bits

        你的實體CPU得是64 bits KVM才有辦法模擬出64 bits的vCPU(Virtual CPU)。

        同樣是檢視『 /proc/cpuinfo』中的CPU Flag,若輸出大於等於『1』,即表示你所使用的CPU是64 bits。
 
$ egrep -c 'lm' /proc/cpuinfo                                
4                       




        若沒有模擬64 bits vCPU的需求,可以略過這項檢查。

        Note:
           (1). lm:Long Mode (64bit) support。
           (2).若為多核心CPU,每一核心會有一個 lm Flag。

         Referenve: 
                http://www.unixtutorial.org/2009/05/how-to-confirm-if-your-cpu-is-32bit-or-64bit/

    d.確認所安裝的OS是否為64 bits

        要讓KVM模擬 64 bits 的環境,所使用的OS必須是 64 bits。

$ uname -m                                                                       
x86_64




        若輸出不是『x86_64』即表示OS不是64-bits。

        若沒有模擬64 bits 環境的需求,可以略過這項檢查。

    e. 使用『kvm-ok』命令確認系統環境是否可符合執行 hardware accelerated KVM virtual machine 的需求

        當然也可以直接執行『kvm-ok』確認系統環境是否可符合執行 hardware accelerated KVM virtual machine 的需求。

$ kvm-ok                                                                  



         『kvm-ok』會確認下列項目,

            (1). 從『/proc/cpuinfo』中確認是否有 『vmx』或『svm』Flag。
            (2). 從 dmesg  中確認BIOS的虛擬化技術支援是否已開啟。
            (3). 『/dev/kvm』裝置檔是否存在。


        若上述三項檢查均符合KVM的需求會有如下輸出,

INFO: Your CPU supports KVM extensions                                                             
INFO: /dev/kvm exists
KVM acceleration can be used






2.安裝KVM

    完成前置作業後開始進行安裝程序。

    a. 安裝 KVM及其相依套件

sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils


    
b.確認操作KVM的帳號是『libvirtd』及『 kvm』群組的成員
        
    我是用『max』這個帳號登入系統操作KVM,所以要確認『max』是否為『libvirtd』及『 kvm』的群組成員。

$ groups max
max : max adm dialout cdrom plugdev lpadmin admin sambashare libvirtd kvm



           
   
        如果發現操作帳號不是libvirtd』或『 kvm』的群組成員,就使用下操作程序將該帳號加入『libvirtd』或『 kvm』群組。

    (1). 以該帳號登入系統或切換使用者身份為該帳號
 
    (2).將該帳號加入『libvirtd』及『 kvm』群組
 

$ sudo adduser `id -un` kvm                                                   
$ sudo adduser `id -un` libvirtd


           


    c.登出後再重新登入系統


    d.確認安裝是否完成


$ virsh -c qemu:///system list                                                        
 Id Name                           State
----------------------------------    

           




        virsh 是 KVM 的管裡工具,如果可以使用這個命令且看到上面的輸出,表示安裝已順利完成。

3. 安裝GUI 管理工具

    你可以使用KVM的命令列管理工具來操作KVM,不過由於參數跟選項眾多,在操作上需要相當的注意,建議可寫成 Script以減輕管理的負擔。

    不過現在有相當多的KVM GUI 管理工具可以選擇 (http://www.linux-kvm.org/page/Management_Tools),其中『Virt-manager』在操作上頗為便利且多數的細項設定可透過『Virt-manager』完成,同時亦可管理遠端的KVM Server,若無特殊的嗜好建議使用『Virt-manager』來進行KVM系統的管理。

     Ubuntu 10.04 / 12.04的套件庫有收錄該『Virt-manager』,可以使用下列命令安裝,



$ sudo apt-get install virt-manager                       

           



若你的VM需要像實體機器一樣擁有實體 IP 就需要先將 KVM Host上的網路卡設為橋接模式,Ubuntu 10.04 / 12.04 的設定可以參考:http://www.mpsstudio.org/2011/07/ubuntuhow-to-configure-network-in.html

2011年9月30日 星期五

[KVM]在 TUI 環境下建置 Virtualized guest

   如果妳有 X Window,不管是在 VM Server 也就是 『Host』 或是另一台『Desktop』,妳都可以利用『Virt-Manager』進行相當完整且深入的管理,基本上除非有特別的嗜好,否則並沒有非得在 TUI 環境下建置 VM guest 的必要,而且,只能使用 TUI 的環境來建置 VM guest 的狀況在實務上幾乎是不存在的。

    不過,如果要談在 TUI 環境下來管理妳的 VM ,不從建置開始談好像有點不完整,所以這邊還是從如何建置一台全新的  VM guest 開始談起。

   以下都是從我的筆電使用 ssh 遠端連線到 VM Server 進行實作,使用到的工具有『virsh』、『virt-install』及『vinagre』。

    妳可以選擇進到『virsh』或是在 TUI 使用 Command 來建置 VM guest ,不過事實上是同一件事,這邊是選擇 進到『virsh』。

    所要建置的VM guest 規劃如下,

        a.OS : Ubuntu 10.04.3 Server
        b.Architecture : X86_64
        c.CPU *1 / RAM : 1024 MB
        d.HD : Format : qcow2 size: 8G
        e.Network : Bridge:br0
        
    1. 建立虛擬硬碟

        如果不需要指定虛擬硬碟的格式可以跳過這一步。

        a. 列出現有 Storage Pool 清單

            主要是要確認一下 Storage Pool 的名稱,因為我打算將虛擬硬碟的映像放在『VM-Image』這個 Storage Pool 中。


virsh # pool-list --all

名稱               狀態                    自動啟動
-----------------------------------------                                                    
default                啟用                yes     
image                 啟用                yes     
VM-Image           啟用                yes
Iso                     非啟用中           yes    





    



        b. 產生虛擬硬碟     

virsh # vol-create-as --format qcow2 VM-Image test.qcow2.img 8G
Vol test.qcow2.img created




        也可以使用『kvm-image』來產生虛擬硬碟,不過要到使用『virt-install 』建置 VM quest 之後 『virsh』才能管理這顆虛擬硬碟。

max@riyu:~$ kvm-img create -f qcow2 /media/SDA3/VmImage/disk.qcow2.img 8G    
Formatting '/media/SDA3/VmImage/disk.qcow2.img', fmt=qcow2 size=8589934592 encryption=off cluster_size=0





        確認一下

virsh # vol-list VM-Image
名稱                                    Path                                  
-----------------------------------------
test.qcow2.img       /media/SDA3/VmImage/test.qcow2.img    




       

    2. 建置 VM guest

      依照規劃需要下一串又臭又長的命令來作這件事。

       退出『virsh』後,使用如下命令來建置一台 VM guest

max@riyu:~$ virt-install \
> --connect qemu:///system \
> --name=Test \
> --vcpus=1 \
> --arch=x86_64 \
> --ram=1024 \
> --os-type=linux \
> --virt-type=kvm \
> --cdrom=/media/SDC7/001.LinuxISO/ubuntu-10.04.3-server-amd64.iso \
> --disk path=/media/SDA3/VmImage/test.qcow2.img,size=8 \
> --force \
> --network bridge=br0,model=virtio \
> --vnc  --vncport=5900
Traceback (most recent call last):
  File "/usr/lib/python2.6/logging/handlers.py", line 71, in emit
    if self.shouldRollover(record):
  File "/usr/lib/python2.6/logging/handlers.py", line 144, in shouldRollover
    msg = "%s\n" % self.format(record)
  File "/usr/lib/python2.6/logging/__init__.py", line 648, in format
    return fmt.format(record)
  File "/usr/lib/python2.6/logging/__init__.py", line 439, in format
    s = self._fmt % record.__dict__
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 1: ordinal not in range(128)



Starting install...
Creating domain... 0 B 00:00
Unable to connect to graphical console: virt-viewer not installed. Please install the 'virt-viewer' package.
Domain installation still in progress. You can reconnect to
the console to complete the installation process.





       
    接下來要透過 VNC 進到剛出生的 VM quest 來進行作業系統的安裝,不過要從遠端主機透過VNC 連到 VM quest 還需要動一些手腳而且有點安全上的疑慮,所以這邊就直接利用 ssh 的『X11Forwarding』將從 VM Server 透過 VNC 連到 VM quest 的畫面送到我的筆電。

    3. 重新連線到 VM Server

         要記得開啟 『X11Forwarding』。

max@minako:~$ ssh -X max@10.0.0.100                    





    4. 從 VM Server 端啟動『vinagre』       

max@riyu:~$ vinagre localhost:5900                   


   


    由於這次連線已經啟動了『X11Forwarding』,所以『vinagre』的執行畫面會送回筆電。



        之後就跟一般安裝作業系統的程序一樣,作業系統安裝完畢,妳就有一台  VM 可以用啦。     


virsh # list 
 Id 名稱                  狀態
----------------------------------
  6 Test                 執行中
                   

2011年9月14日 星期三

[KVM]使用『Virt-manager』管理KVM - 建立 VM

    由於我是在 Ubuntu 11.04 Desktop 上安裝『Virt-manager』,Ubuntu 11.04所收錄的『Virt-manager』是 0.8.6,其他版本的『Virt-manager』在版面上或有不同但是設定的次序是大同小異。

    我主要用過 0.8.2 及 0.8.6 兩個版本 的『Virt-manager』,在這邊主要以 0.8.6 來進行示範。

1. 啟動『Virt-manager』

    我的 Ubuntu 11.04 Desktop 所使用的桌面環境是 LXDE,在畫面左下方的[選單]=>[系統工具]中看到虛擬機器管理員。


    若是Gnome則是畫面左上角的[應用程式]=>[系統工具] 中可以看到。


    下面是開啟『Virt-manager』的畫面,


2.新增連線

    接著要連線到 KVM 所在的主機

    a.單擊 [檔案] => [Add Connection]


    會出現一個新增連線的設定視窗,


    b. 將『Connect to remote host』勾選起來


    c. 設定連線資訊

        接著就填入連線所需的資訊,然後單擊 [連接( n )]。




    如果是『Virt-manager』0.8.2 就只能用 root 連線到遠端主機。

    d.啟動連線

      雙擊剛剛建立的連線,連線成功會出現密碼輸入視窗。


     
    登入完畢後會列出現有的VM清單。


3.設定 Storage Pool

    這邊規劃將之後建立的VM  image 檔 及 OS 的iso檔分開存放, VM  image 檔放在『/media/SDA3/VmImage』, OS iso檔放在『/media/SDC7/001.LinuxISO』。

    a. 以KVM管理帳號的身份透過 SSH 連到KVM主機

$ ssh max@192.168.1.100                     



b. 新增存放目錄

$ mkdir -p /media/SDA3/VmImage
$ mkdir -p /media/SDA3/Iso                    




c.使用『virsh』定義VM  image 檔 及 OS 的iso檔的存放目錄

        語法如下,

virsh pool-define-as <Name> <Format> - - - - "Path"          

   

         (1). 定義VM  image 檔存放目錄


$virsh pool-define-as VM-Image dir - - - - "/media/SDA3/VmImage"     





        (2). 定義iso 檔存放目錄


$virsh pool-define-as Iso dir - - - - "/media/SDC7/001.LinuxISO/"         




        (3). 列出 Stroage Pool


$ virsh pool-list --all
名稱                  狀態     自動啟動
-----------------------------------------
default              啟用     yes       
image                啟用     yes       
TcViewLite           啟用     yes       
Iso                  非啟用中 no        
VM-Image             非啟用中 no   





   






         (4).啟動新增的Storage Pool 並設為自動啟動


$ virsh pool-start VM-Image                                 
Pool VM-Image started

$ virsh pool-start Iso
Pool Iso started

$ virsh pool-autostart VM-Image
Pool VM-Image marked as autostarted

$ virsh pool-autostart Iso
Pool Iso marked as autostarted
 
$ virsh pool-list --all
名稱               狀態     自動啟動
-----------------------------------------
default              啟用     yes       
image                啟用     yes       
Iso                  啟用     yes       
TcViewLite           啟用     yes       
VM-Image             啟用     yes       

























4.建立VM

    接著我們就使用『Virt-manager』來建立一台VM。

    a.對著剛剛建立的連線單擊右鍵,點擊 [新增]



     輸入 VM 的名稱及選擇安裝方式。


    b.設定OS Type 及 Version


    c. 選取 OS iso 檔





    d.設定 RAM及CPU數量

        設定值最大均不能超過Host所擁有的實體記憶體大小及CPU數量,若是多核心CPU 則不能超過總核心數。


    e. 產生虛擬硬碟

        因為要將VM存在『/media/SDC7/001.LinuxISO/』所以這邊另外選擇存放位置


    f. 點選要存放的 Storage Pool 然後單擊[New Volume]


    g. 新增儲存卷冊

        預設的儲存卷冊名稱會與 VM 同名,副檔名會是『img』,因為這邊所選擇的儲存卷冊格式為『qcow 2』所以在副檔名前再加上『.qemu』以為標示。

        記得要設定儲存卷冊容量的最大值,這邊是設定為約6Gb的大小。


    點選剛剛新增的儲存卷冊


    f. 設定網路卡

        我們可以選擇使用『NAT』虛擬網路,若 Host有建立橋接網路卡也可以選擇『Specify shared device name』。

        由於網路卡相關設定可以在VM建立之後再變更設定,所以這邊先選用『NAT』虛擬網路。

     另外,Virt-type 選擇『kvm』,Architecture選擇『x86_64』。


    單擊『完成』就產生一台VM,之後會直接進入OS安裝畫面。

Powered By Blogger