== 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 安裝 ==
安裝openebula 所需要的套件
{{{
$sudo 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
{{{
$wget http://dev.opennebula.org/attachments/download/471/opennebula-2.9.85.tar.gz
$tar zxvf opennebula-2.9.85.tar.gz
}}}
編譯與安裝
{{{
$cd opennebula-2.9.85/
$scons
$mkdir /home/nchc/one
$./install.sh -d /home/nchc/one/
}}}
設定openebula路徑
{{{
$emacs /home/nchc/.bashrc
把以下的路徑加入進去.bashrc裡面
export ONE_LOCATION=/home/nchc/one
export ONE_XMLRPC=http://localhost:2633/RPC2
export PATH=$ONE_LOCATION/bin:$PATH
export ONE_AUTH=/home/nchc/one/.one/one_auth
$mkdir /home/nchc/one/.one
----------------------------------------------
$echo "nchc:ilovedrbl" >> /home/one/.one/one_auth (使用者與密碼)
$source ~/.bashrc
$echo $ONE_AUTH (下指令檢查路徑是否存在,若存在會出現如下)
/home/nchc/one/.one/one_auth
$echo $ONE_LOCATION (下指令檢查路徑是否存在,若存在會出現如下)
/home/nchc/one
}}}
設定oned.conf檔案 (這邊再2.9.85已經都把註解拿掉了,除了268-271被註解,需要把#拿掉)
{{{
#!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" ]
}}}
設定公鑰匙
{{{
$ssh-keygen
$cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
$ssh drbl002
會問你是否要連接,當你下指令yes,你會發現你不需要輸入密碼.
Are you sure you want to continue connecting (yes/no)? yes
$ssh drbl003
}}}
啟動 one或者結束 one
{{{
$one start
oned and scheduler start (1.4版會出現,2.9.85版不會出現任何訊息)
$one stop
oned and scheduler stopped (會出現訊息)
}}}
opennebula 開始
{{{
$one start
}}}
檢查 虛擬主機的狀況
{{{
$onehost list
會顯示出空白(因為都沒有設定虛擬主機)
ID NAME RVM TCPU FCPU ACPU TMEM FMEM AMEM STAT
}}}
建立三台虛擬主機(中間有修改一些東西因為drbl的關係,會產生一些err,這邊下次在寫)
{{{
$onehost create 192.168.1.1 im_kvm vmm_kvm tm_nfs
$onehost create 192.168.1.2 im_kvm vmm_kvm tm_nfs
$onehost create 192.168.1.3 im_kvm vmm_kvm tm_nfs
}}}
解法
{{{
server$ sudo service libvirt-bin start
會出現 Starting libvirt management daemon: libvirtd already running.
server$ cd /var/run/libvirt
server$ sudo chown nchc:nchc libvirt-sock
其實client端每台都要啟動,修改群組.我們可以利用drbl的指令讓每台電腦做修改.
server$ sudo /opt/drbl/bin/drbl-doit service libvirt-bin start
server$ sudo /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 192.168.1.1 0 400 399 400 7.7G 7.3G 7.7G on
41 192.168.1.2 0 400 400 400 7.7G 7.5G 7.7G on
42 192.168.1.3 0 400 400 400 7.7G 7.5G 7.7G on
}}}
{{{
sudo gem install sinatra thin json
sudo apt-get install rails thin
sudo gem install json sinatra thin rack
sudo cd /usr/bin/; sudo ln -s rackup1.8 rackup # 沒有用
}}}