wiki:adherelinux/KVM_DRBL_ONE

DRBL+KVM+ONE

【系統環境】

 CPU OS
Version Intel(R) Core(TM)2 Quad CPU Q9550 @ 2.83GHz Debian GNU/Linux testing 6 (squeeze) (64bit)

安裝debian系統

安裝debian系統的過程已經非常人性化了.
可參考 wiki中的 debian安裝如 http://wiki.linux.org.hk/w/Install_Debian

KVM 安裝和操作

KVM 原理

KVM(Kernel-based Virtual Machine)是一個全虛擬化的技術,基於在x86硬體虛擬化下包含了(Intel VT或AMD-V)
主要技術是可以載入kernel module(kvm.ko)來提供了虛擬化的基礎設施與特定的模組(kvm-intel,kvm-amd.ko).
硬體設備支援虛擬化的CPU也透過kernel module來支援KVM,然而KVM只有負責核心與硬體HVM(hardware-assisted virtualization)
支援,也就是KVM負責VMM(Hypervisor)的事項,至於其他的硬體設備需要由qemu來模擬.

qemu 原理

qemu是由GNU所開發出來的一個模擬器,主要有兩種模擬的方式:machine emulator (User mode emulation),virtualizer(System mode).
1.machine emulator模式主要在linux下處理Wine Windows API emulator(目的是在Unix系統上提供Windows API,也就可以在Unix系統上使用Windows程式)
2.system mode模式是用來模擬各種裝置,例如儲存裝置,網路卡,USB,等等.

KVM安裝

一開始先修改使用者nchc,讓nchc有root權限

sudo su 
visudo
在root    ALL=(ALL) ALL 之後加入  nchc ALL=(ALL) ALL

利用指令檢查cpu是否支援,目前的機器幾乎都有支援.

egrep '(vmx|svm)' --color=always /proc/cpuinfo

安裝kvm,kvm-pxe,qemu.

sudo apt-get-install kvm kvm-pxe qemu libvirt-bin

載入modprobe 並重新開機

sudo modprobe kvm-intel

將使用者加入在kvm的群組中,讓nchc不用每次都用sudo來執行kvm的指令

sudo adduser nchc kvm

建立資料夾,並且下載debian.iso檔案於目錄下

mkdir KVM
cd KVM
wget http://cdimage.debian.org/debian-cd/6.0.2.1/amd64/iso-cd/debian-6.0.2.1-amd64-xfce+lxde-CD-1.iso

利用qemu來製作檔案系統名稱如 deb.img,大小為10G

qemu-img create deb.img 10G

利用剛下載的iso檔案來當作kvm虛擬光碟內的CD,並且進行安裝.

kvm -cdrom debian-6.0.2.1-amd64-xfce+lxde-CD-1.iso deb.img

安裝好之後,可以利用指令啟動image

kvm -hda deb.img -m 512M

DRBL 說明與操作

DRBL 說明

說明引用網址如下 http://drbl.nchc.org.tw/introduction/
DRBL (Diskless Remote Boot in Linux)是一個自由軟體,由國家高速網路與計算中心所開發,主要功能是安裝了此軟體的
Linux伺服器,就可以同時提供數十台電腦操作與使用管理者所需要做得就是在伺服器上安裝好Linux之後,再裝好DRBL,
用戶端電腦不需要有硬碟,不需安裝軟體,只要透過PXE網路開機,就可以直接使用了伺服器端提供的Linux了。DRBL的特色包含:

  • 支援多元化的資訊教育,與現有系統共存,電腦教室可以很方便與快速的切換作業系統 * 用戶端電腦可以不需要有硬碟,有硬碟DRBL也可以充分利用
  • 集中管理,安裝1台就等於安裝多台(~40台),下一個指令就可以對多台電腦做動作
  • 內建回復系統,可以同時複製或是還原多台(~40台)用戶端電腦硬碟裡的作業系統(Linux, MS Windows 9X/2K/XP皆可)

安裝步驟

  • 網路設定如下:

準備兩張網路卡,一張為eth0,另外一張eth1

設定網路卡,編輯/etc/network/interface設定如下
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 140.110.134.53
netmask 255.255.255.0
gateway 140.110.134.254

auto eth1
iface eth1 inet static
address 192.168.1.1
netmask 255.255.255.0

編輯/etc/resolv.conf,內容如下
nameserver 140.110.16.1

  • 安裝流程

如果你的套件支援apt-key金鑰管理,請在terminal下指令

wget -q http://drbl.nchc.org.tw/GPG-KEY-DRBL -O- | sudo apt-key add -

修改 /etc/apt/source.list,加入一行(在最後面)

deb http://free.nchc.org.tw/drbl-core drbl stable

更新套件

sudo apt-get update

安裝DRBL

sudo apt-get install drbl

設定client端的kernel與安裝軟體套件

sudo /opt/drbl/sbin/drblsrv -i

佈署client端

sudo /opt/drbl/sbin/drblpush -i

以上是把DRBL佈署給client端,這時候把每台client端利用PXE開機畫面如下

  • 注意!!!當你進去client端時,你會看到家目錄跟server端是一樣的.我們可以檢查client端是否可以開啟kvm
client$ kvm -hda deb.img -m 512M

這時候terminal會出現以下訊息:open /dev/kvm: No such file or directory Could not initialize KVM, will disable KVM support. 我們發現其實kernel module 沒有載入進去.我們可以在每個client端下指令,或者在server端使用指令drbl-doit(可讓每個client端下同樣的指令) modprobe kvm-intel.

client$ sudo modprobe kvm-intel
server$ sudo /opt/drbl/bin/drbl-doit modprobe kvm-intel

以上步驟可以讓kvm在每台機器運作.oned and scheduler started

opennebula 說明與操作

openebula 介紹

openebula 可以自己打造基礎設施即服務(Iass)或者Hybrid cloud,一般而言會建立私有雲(Private Cloud),結合一些本地的資源延伸到Hybrid cloud.通常會是在私有雲上跑虛擬化的服務. openebula 主要可以管理功能,例如:管理虛擬化,網路,印象檔,管理資源..等等.

openebula2.9.85 安裝

(切換成root)

$ su -l root

安裝openebula 所需要的套件

root$ apt-get install libcurl3 libmysqlclient16 libruby1.9.1 libsqlite3-ruby1.9.1  libxmlrpc-c3 mysql-common ruby ruby1.9.1 ruby1.9.1-dev genisoimage libxml2-dev

下載 source code

root$ wget http://dev.opennebula.org/attachments/download/471/opennebula-2.9.85.tar.gz
root$ tar zxvf opennebula-2.9.85.tar.gz 

編譯與安裝

root$ cd opennebula-2.9.85/
root$ scons
root$ mkdir /srv/cloud/one
root$ chown -R nchc:nchc /srv/cloud/one
root$ ./install.sh -u nchc -g nchc -d /srv/cloud/one

設定openebula路徑

root$ emacs /etc/profile
把以下的路徑加入進去profile裡面
export ONE_LOCATION=/srv/cloud/one
export ONE_XMLRPC=http://localhost:2633/RPC2
export PATH=$ONE_LOCATION/bin:$PATH
export ONE_AUTH=/srv/cloud/one/.one/one_auth
root$ mkdir /srv/cloud/one/.one
----------------------------------------------
root$ echo "nchc:ilovedrbl" >> /srv/cloud/one/.one/one_auth  (使用者與密碼)
root$ source /etc/profile
root$ echo $ONE_AUTH (下指令檢查路徑是否存在,若存在會出現如下)
/srv/cloud/one/.one/one_auth

root$ echo $ONE_LOCATION  (下指令檢查路徑是否存在,若存在會出現如下) 
/srv/cloud/one

設定oned.conf檔案 (這邊再2.9.85已經都把註解拿掉了,除了268-271被註解,需要把#拿掉)
$ emacs /srv/cloud/one/etc/oned.conf

125     IM_MAD = [
126     name       = "im_kvm",
127     executable = "one_im_ssh",
128     arguments  = "im_kvm/im_kvm.conf" ]

196     VM_MAD = [
197     name       = "vmm_kvm",
198     executable = "one_vmm_kvm",
199     arguments  = "-t 15 -r 0 kvm",
200     default    = "vmm_kvm/vmm_kvm.conf",
201     type       = "kvm" ]

259 #   TM_MAD = [               
260 #   name       = "tm_nfs",                                               
261 #   executable = "one_tm",
262 #   arguments  = "tm_nfs/tm_nfs.conf" ]

268     TM_MAD = [                
269     name       = "tm_ssh",
270     executable = "one_tm",
271     arguments  = "tm_ssh/tm_ssh.conf" ]

設定公鑰匙

nchc$ ssh-keygen
nchc$ cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
nchc$ ssh drbl002  
會問你是否要連接,當你下指令yes,你會發現你不需要輸入密碼.
Are you sure you want to continue connecting (yes/no)? yes
nchc$ ssh drbl003

root$  emacs /etc/libvirt/libvirtd.conf
#
# UNIX socket access controls
#

# Set the UNIX domain socket group ownership. This can be used to
# allow a 'trusted' set of users access to management capabilities
# without becoming root.
#
# This is restricted to 'root' by default.
unix_sock_group = "kvm"    (81 line)

# Set the UNIX socket permissions for the R/O socket. This is used
# for monitoring VM status only
#
# Default allows any user. If setting group ownership may want to
# restrict this to:
unix_sock_ro_perms = "0777" (88 line)

# Set the UNIX socket permissions for the R/W socket. This is used
# for full management of VMs
#
# Default allows only root. If PolicyKit is enabled on the socket,
# the default will change to allow everyone (eg, 0777)
#
# If not using PolicyKit and setting group own/etc/init.d/libvirtd startership for access
# control then you may want to relax this to:
unix_sock_rw_perms = "0770"   (98 line)

# Set the name of the directory in which sockets will be found/createdwget http://www.sqlite.org/sqlite-amalgamation-3.6.17.tar.gz -P /tmp.
unix_sock_dir = "/var/run/libvirt"  (101 line)

啟動 one或關閉 one

nchc$one start 
oned and scheduler start (1.4版會出現,2.9.85版不會出現任何訊息)
nchc$one stop 
oned and scheduler stopped (會出現訊息)

opennebula 開始

nchc$ one start

檢查 虛擬主機的狀況

nchc$ onehost list  
會顯示出空白(因為都沒有設定虛擬主機)
ID NAME               RVM   TCPU   FCPU   ACPU   TMEM   FMEM   AMEM   STAT

建立三台虛擬主機(中間有修改一些東西因為drbl的關係,會產生一些err,這邊下次在寫)

nchc$ onehost create drbl im_kvm vmm_kvm tm_nfs
nchc$ onehost create drbl002 im_kvm vmm_kvm tm_nfs
nchc$ onehost create drbl003 im_kvm vmm_kvm tm_nfs

解法 (在drbl-server)

root$ service libvirt-bin start
會出現 Starting libvirt management daemon: libvirtd already running.
root$ cd /var/run/libvirt
root$ chown nchc:nchc libvirt-sock
其實client端每台都要啟動,修改群組.我們可以利用drbl的指令讓每台電腦做修改.
root$ /opt/drbl/bin/drbl-doit  service libvirt-bin start
root$ /opt/drbl/bin/drbl-doit  chown nchc:nchc /var/run/libvirt/libvirt-sock

在檢查一次虛擬主機狀況

nchc$ onehost list
  ID NAME               RVM   TCPU   FCPU   ACPU   TMEM   FMEM   AMEM   STAT
  38 drbl               0     400    399    400    7.7G   7.3G   7.7G     on
  41 drbl002            0     400    400    400    7.7G   7.5G   7.7G     on
  42 drbl003            0     400    400    400    7.7G   7.5G   7.7G     on

opennebula Sunstone == (server)

root$ gem install json

root$ sudo gem install sinatra

root$ sudo gem install thin

root$ sudo apt-get install rails thin

root$ $ONE_LOCATION/bin/sunstone-server start
error .....
查詢檔案
root$ cat /var/log/one/sunstone.log 會出現錯誤 no such file to load -- sequel and opennebula.....
root$ gem install sequel
root$ cd /usr/bin
root$ ln rackup1.8 rackup
root$ $ONE_LOCATION/bin/sunstone-server start
Stale .lock detected. Erasing it.
sunstone-server listening on 127.0.0.1:9869

利用firefox,網址如:http://127.0.0.1:9869/

Last modified 13 years ago Last modified on Sep 23, 2011, 3:45:12 PM

Attachments (3)

Download all attachments as: .zip