== 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系統的過程已經非常人性化了.[[br]]
可參考 wiki中的 debian安裝如 http://wiki.linux.org.hk/w/Install_Debian [[br]]
[[PageOutline]]
{{{
#!html
KVM 安裝和操作
}}}
== KVM 原理 ==
KVM(Kernel-based Virtual Machine)是一個全虛擬化的技術,基於在x86硬體虛擬化下包含了(Intel VT或AMD-V) [[br]]
主要技術是可以載入kernel module(kvm.ko)來提供了虛擬化的基礎設施與特定的模組(kvm-intel,kvm-amd.ko).[[br]]
硬體設備支援虛擬化的CPU也透過kernel module來支援KVM,然而KVM只有負責核心與硬體HVM(hardware-assisted virtualization)[[br]]
支援,也就是KVM負責VMM(Hypervisor)的事項,至於其他的硬體設備需要由qemu來模擬.[[br]]
== qemu 原理 ==
qemu是由GNU所開發出來的一個模擬器,主要有兩種模擬的方式:machine emulator (User mode emulation),virtualizer(System mode).[[br]]
1.machine emulator模式主要在linux下處理Wine Windows API emulator(目的是在Unix系統上提供Windows API,也就可以在Unix系統上使用Windows程式)[[br]]
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
}}}
[[PageOutline]]
{{{
#!html
DRBL 說明與操作
}}}
== DRBL 說明 ==
說明引用網址如下 http://drbl.nchc.org.tw/introduction/ [[br]]
DRBL (Diskless Remote Boot in Linux)是一個自由軟體,由國家高速網路與計算中心所開發,主要功能是安裝了此軟體的 [[br]]
Linux伺服器,就可以同時提供數十台電腦操作與使用管理者所需要做得就是在伺服器上安裝好Linux之後,再裝好DRBL, [[br]]
用戶端電腦不需要有硬碟,不需安裝軟體,只要透過PXE網路開機,就可以直接使用了伺服器端提供的Linux了。DRBL的特色包含: [[br]]
* 支援多元化的資訊教育,與現有系統共存,電腦教室可以很方便與快速的切換作業系統 * 用戶端電腦可以不需要有硬碟,有硬碟DRBL也可以充分利用
* 集中管理,安裝1台就等於安裝多台(~40台),下一個指令就可以對多台電腦做動作
* 內建回復系統,可以同時複製或是還原多台(~40台)用戶端電腦硬碟裡的作業系統(Linux, MS Windows 9X/2K/XP皆可)
== 安裝步驟 ==
* 網路設定如下:
準備兩張網路卡,一張為eth0,另外一張eth1 [[br]]
[[Image(DRBL.jpg)]]
設定網路卡,編輯/etc/network/interface設定如下 [[br]]
auto lo [[br]]
iface lo inet loopback [[br]]
auto eth0 [[br]]
iface eth0 inet static [[br]]
address 140.110.134.53 [[br]]
netmask 255.255.255.0 [[br]]
gateway 140.110.134.254 [[br]]
auto eth1 [[br]]
iface eth1 inet static [[br]]
address 192.168.1.1 [[br]]
netmask 255.255.255.0 [[br]]
編輯/etc/resolv.conf,內容如下 [[br]]
nameserver 140.110.16.1 [[br]]
* 安裝流程
如果你的套件支援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開機畫面如下[[br]]
[[Image(PXE_menu.jpg)]]
* 注意!!!當你進去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. [[br]]
{{{
client$ sudo modprobe kvm-intel
server$ sudo /opt/drbl/bin/drbl-doit modprobe kvm-intel
}}}
以上步驟可以讓kvm在每台機器運作.oned and scheduler started
[[PageOutline]]
{{{
#!html
opennebula 說明與操作
}}}
== openebula 介紹 ==
openebula 可以自己打造基礎設施即服務(Iass)或者Hybrid cloud,一般而言會建立私有雲(Private Cloud),結合一些本地的資源延伸到Hybrid cloud.通常會是在私有雲上跑虛擬化的服務.
openebula 主要可以管理功能,例如:管理虛擬化,網路,印象檔,管理資源..等等. [[br]]
== 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
{{{
#!sh
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$ vi /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
}}}
檢查 虛擬主機的狀況
{{{
$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
}}}
在檢查一次虛擬主機狀況
{{{
$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/ [[br]]
[[Image(sunstone.jpg)]]