2012年11月20日 星期二

Linux KVM基本操作


虛擬化技術
半虛擬化
XEN,改Kernel,直接改硬體,作業系統為Unix系列,Critix買走了XEN,台灣的代理商為精誠資訊,最大的使用者為Amazon
完全虛擬化
VirtualboxVMWare Worksation,直接使用VTx硬體功能


CPU內建虛擬化技術
Intel
 VT/EPT
AMD
AMD -V/RVI


Bare Metal裸機架構
作業系統(Unix)裝完,就支援虛擬技術
KVMVMWare ESXi (i即免費版),微軟的Hiper-V技術
使用VMFS檔案系統
台灣代理商:群環、零壹


Nested KVM (VMWorksation內建虛擬技術)
要支援此一系統,需要幾個條件
1. VMWare Worksation 8.0版本以後
2. 主要作業系統64位元
3. VMWorksation裡面啟動的系統也要64位元


VMWorksation 9中建立及操作Nested KVM (VMWorksation 9Ubuntu中啟用Tiny Server Core),使用環境如下
主要作業系統
Windows 2008 R2
VM工具
VMWorksation 9
VM中啟動的系統
Ubuntu 12.04 (LTS)UB641(陳松林老師提供)
VM中啟動的系統再下一層的系統
Tiny Server Core


安裝及測試KVM (12.04 LTS)
sudo apt-get install cpu
sudo kvm-ok
Your CPU supports KVM extensions (VT-x) -->亦即支援Nested VM


探索核心模組
modprobe -l | grep kvm
探索核心模組,列印出來,grep 提取KVM
kernel/arch/x86/kvm/kvm.ko 
kernel/arch/x86/kvm/kvm-intel.ko
kernel/arch/x86/kvm/kvm-amd.ko
作業系統安裝完就有的程式,確定可以再啟用一層虛擬技術


安裝QEMU  (12.04 LTS)
KVM不足,系統安裝完,KVM就裝好了
sudo apt-get install qemu-kvm
qemu專案,負責周邊裝置,Hard diskNetwork
kvm專案,負責cpumemory

 
掛載及啟動KVM
kvm -m 128 -cdrom ISO/tsc32.iso -boot d
啟動ko檔及qemu-m 設定memory128M,光碟的iso檔,d (cdrom開機)
kvm -m 128 -cdrom ISO/tsc32.iso -boot d &
掛載及啟動KVM,在背景執行


顯示開發虛擬應用平台QEMU
uname -r
3.0.21-tinycore (改裝Tiny Server Core)

 
幾個重要網路指令及網路測試
ifconfig -a | grep -A5 eth0
得知eth0網路卡資訊
A5 (After 5,後面五行我都要看)
route -n
查看default gateway,及routing table 
cat /etc/resolv.conf
查看DNS
sudo udhcpc -i eth0
udhcpc為最小的client程式,查看dhcp配置狀況
nslookup www.hinet.net
telnet 202.39.224.7 80


完整建置一個Tiny Server Core系統
建立一個VM檔案
mkdir vmdisk
建立裝載VM檔案的目錄
kvm-img create -f raw vmdisk/tsc32.img 20m
kvm-img負責做硬碟虛擬檔,如VMWorksationvmdk檔,-f raw設定為一次到位(allocate all disk space now),而非隨需擴增。
kvm-img create -f vmdk vmdisk/tsc32.vmdk 20m
產生vmdk虛擬硬碟檔,但它是隨需擴增
fdisk,也包含Hiper-V的硬碟檔
掛載及啟動KVM
kvm -m 128 -cdrom ISO/tsc32.iso -hda vmdisk/tsc32.img -boot d &
tce-load -wi sudo.tcz
安裝sudo套件
分割及格式化虛擬硬碟檔 
sudo fdisk -l /dev/sda
查看磁碟分割的狀況
sudo fdisk /dev/sda
分割虛擬硬碟檔
n –-> 新的分割表
p –-> (primary)
1 –-> 第一個磁區
1 –-> 磁柱
1 –-> 磁頭
w –-> write,分割資料寫入硬碟裡
sudo mkfs.ext4 /dev/sda1
格式化檔案
mkfs → make file system
ext4 → Linux檔案格式
/dev/sda1 → 第一顆硬碟的第一個分割區(Partition)
sudo reboot
格式化檔案後,重新開機
sudo fdisk -l /dev/sda
查看磁碟分割的狀況
ll /mnt/sda1
檢視第一顆硬碟的第一個分割區
修改系統設定 - 固定 IP 設定 
sudo ifconfig eth0 10.0.2.15 netmask 255.255.255.0 up
設定 eth0 網卡 IP 位址
sudo route add default gw 10.0.2.2
設定 Default Gateway
sudo vi /etc/resolv.conf
增加內容如下:
nameserver 168.95.1.1
設定 DNS Server 
tce-load -wi nano.tcz
安裝nano套件以修改resolv.conf
sudo reboot
安裝完畢重新開機


重建兩個Tiny server core系統
kvm-img create -f raw vmdisk/abc.img 20m
kvm-img create -f raw vmdisk/xyz.img 20m
kvm -m 128 -hda vmdisk/abc.img  -cdrom ISO/tsc32.iso -boot d &
kvm -m 128 -hda vmdisk/xyz.img  -cdrom ISO/tsc32.iso -boot d &
兩個以上系統皆要建立以下步驟
sudo fdisk /dev/sda
sudo mkfs.ext4 /dev/sda1
sudo reboot
sudo ifconfig eth0 10.0.2.15 netmask 255.255.255.0 up
sudo route add default gw 10.0.2.2
sudo vi /etc/resolv.conf
增加nameserver 168.95.1.1


更改bootlocal.sh設定檔,在登入之前就會被執行,且使用root權限去執行,以啟動網路設定
ifconfig eth0 10.0.2.15 netmask 255.255.255.0 up
route add default gw 10.0.2.2
echo “nameserver 168.95.1.1” > /etc/resolv.conf
filetool.sh -b
設定修改時,儲存至硬碟的指令(Backing up files to /mnt/sda1//mydata.tgz Done)


建立一個Shell去建立多個VM環境
nano myring01.sh

[ ! -f vmdisk/myring01.img ]&& cp vmdisk/tc33.img vmdisk/myring01.img
kvm -m 64 -hda vmdisk/myring01.img -cdrom ISO/tsc32.iso -boot d &
[ ! -f vmdisk/myring02.img ]&& cp vmdisk/tc33.img vmdisk/myring02.img
kvm -m 64 -hda vmdisk/myring02.img -cdrom ISO/tsc32.iso -boot d &
[ ! -f vmdisk/myring03.img ]&& cp vmdisk/tc33.img vmdisk/myring03.img
kvm -m 64 -hda vmdisk/myring03.img -cdrom ISO/tsc32.iso -boot d &
[ ! -f vmdisk/myring04.img ]&& cp vmdisk/tc33.img vmdisk/myring04.img
kvm -m 64 -hda vmdisk/myring04.img -cdrom ISO/tsc32.iso -boot d &
[ ! -f vmdisk/myring05.img ]&& cp vmdisk/tc33.img vmdisk/myring05.img
kvm -m 64 -hda vmdisk/myring05.img -cdrom ISO/tsc32.iso -boot d &
filetool.sh -b
設定修改時,儲存至硬碟的指令


更改個人環境變數設定檔
cat /etc/passwd | grep tc
........../home/tc:bin/sh
作業系統開啟後,一開始就會去執行.ashrc
紀錄Linux所有帳號資料,Plipe line導至,提取tc帳號顯示出來
sudo nano .ashrc
Tiny core預設去執行的Shell環境為/bin/sh,其設定檔為.ashrc
重裝Shell環境為/bin/bash,其設定檔為.bashrc
filetool.sh -b