2013年11月12日 星期二

VMware 學習筆記 (四) VMware vCenter Server

Lession 1:vCenter Server Architecture


 vCenter 可安裝於Windows Server 64bits 或使用官方的 vCenter Server Appliance(SUSE Linux)來部屬。
下面列出 vCenter 可管理的額度:
1000 hosts / VC , 15000 VMs/VC,10000 Powered-On VMs/VC。

雖然 vCenter 看似可以管理的額度那麼大,但也要使用夠大的資料庫,在後面的章節會提到這部份的詳細資訊。
vCenter 在第一次連接管理 ESXi 時,使用 Root 登入 ESXi 建立 vpxuser 的帳號,並產生隨機的密碼,之後連接使用 vpxuser 來部屬指令。

ESXi 的進階功能需配合 vCenter 才能使用,例如 vMotionDRSvSphere HAvSwitch 等等。

vCenter Single Sign-On 需使用 Web Client才能使用,VMware 5.1的新功能只支援Web Client。

Lession 2:Managing vCenter Server Inventory

這部分主要著重在 vCenter 的操作,因此不做多介紹。

2013年11月10日 星期日

VMware 學習筆記 (三) Creating Virtual Machines

Lession 1:Virtual Machine Concept


介紹 VM由那些檔案組成:


Configuration file
<VM_name>.vmx
Swap file
<VM_name.vswp or vmx-VM_NAME>.vswp
BIOS file
<VM_name>.nvram
Log files
vmware.log
Raw Device map file
<VM_name>-rdm.vmdk
Disk descriptor file
<VM_name>.vmdk
Disk data file
<VM_name>-flat.vmdk
Template file
 <VM_name>.vmtx
Suspended state file
<VM_name>.vmss
Snapshot data file
<VM_name>.vmsd
Snapshot state file
<VM_name>.vmsn
Snapshot disk file
<VM_name>-delta.vmdk

vSphere 5.1 virtual machine hardware 支援規格如下圖,5.5支援的上限又會有變化,這邊就先只列5.1的。

VM virtual disk用到的三種型態:

  • Thick Provision Lazy Zeroed
  在建立Virtual Disk時會產生一個vmdk檔,而vmdk的容量等於設定的虛擬硬碟大小,整顆虛擬硬碟是固定大小,不會變動的,這虛擬硬碟會先將使用到的部份進行初始化(zero),其他沒使用的空間,則是等到有使用時再初始化(zero),因此只初始化時間較 Eager Zeroed 快速。
  • Thick Provision Eager Zeroed
  在建立Virtual Disk時會產生一個vmdk檔,而vmdk的容量等於設定的虛擬硬碟大小,整顆虛擬硬碟是固定大小,不會變動的,,這虛擬硬碟會先將整顆硬碟進行初始化(zero),初始化時間較久,
  • Thin Provision
  vmdk會隨著使用的情況增加並一邊初始化(zero),vmdk的大小不等於創建虛擬硬碟的大小,只會等於實際使用的大小,一般都使用此模式如下圖所示,可節省空間。

VM virtual network使用的網卡型態:

  • e1000: 模擬 Intel e1000 網卡,VM 為 64 bit 作業系統才有支援,不用安裝VMware Tools。
  • Flexible:模擬 AMD 網卡,不用安裝VMware Tools,同e1000為模擬,速度較vmxnet 慢。 
  • VMXNET: 第一代 vmxnet,安裝 VMware Tools 後便可使用。
  • VMXNET 2 (Enhanced): 第二代 vmxnet 支援 Jumbo Frames,安裝 VMware Tools 後便可使用。
  • VMXNET3: 第三代 vmxnet 支援 IPv6、TCP Segmentation Off-Loading、DirectPath、SR-IOV。

Lession 2:Creating a Virtual Machine

VMware 提供了RDM模式,原生設備對映(Raw Device Mapping)如下圖所示,讓 VM 可以掛載實體硬碟。


VMware Tools 安裝所提供的進階功能:


  • Device Driver: 提供 VMware 最佳化後的驅動程式。
  • Virtual Machine Heartbeat: 使用 VMware HA 時,vCenter 藉由 VMware Tools 偵測 VM 心跳 (Heartbeat) 運作,來決定該將 VM 是否移轉至其它 Host。
  • Improved Mouse:使用 VM Console 時,滑鼠使用更順暢。
  • Memory Management:ESXi 使用記憶體管理機制(Memory Reclamation Techniques)時,使用VMware Tools觸發。
  • Quiescing a Guest File System:ESXi Host 藉由此來為VM建立快照 (Snapshot)。
  • Time Synchronization:讓 VM 與 ESXi Host 進行時間校對,有 Windows AD 可進行同步校對的話,建議使用AD。
  • Gracefully Shutdown:Shutdown Guest。



2013年11月6日 星期三

VMware 學習筆記 (二) Introduction to Virtualization


Lession 1:Introduction to Virtualization

講師定義虛擬化的概念為 資源分享,將各CPUs、Memory、Networks及Disks做資源分享。
Virtualization is not emulation

虛擬化的優點:
  1. Server Consolidation 伺服器合併、相容舊系統、節省空間
  2. 避免Service Combination
  3. 備份容易
  4. 移轉容易
  5. 擺脫硬體
講師定義Cloud Computing的基本概念是提供網路服務,而其解決方案solution每家公司各不同。
  • CPU
    • virtualization is not emulation
    • LCPU數 = Socket 數 * Core 數 * Hyper-Thread
  • Memory
    • Memory overcommit
    • Memory Reclamation Techniques
  • Networking
    • Vittual switches
    • VLAN
  • File System & VMFS
    • FC、FCoE、iSCSI、NFS
    • Datastore
Lession 2:vSphere User Interfaces

操控 ESXi 的方法大致有四種:
  • vSphere Client:透過vSphere Client連線至 ESXi ,Client將操控的指令傳給 hostd,hostd再分配給VMKernel執行。
  • Web Client:透過browser連線至vCenter,vCenter將操控各 ESXi 的指令依序傳遞給 vpxa、hostd,最後給VMKernel執行。
  • CLI:可透過PuTTy ssh、PowerCLI、vCLI等介面連線操控。
  • local:使用DCUI文字介面變更設定,或使用ESXi Shell 操控。

DCUI
  • Lockdown Mode 無法選取,則表示沒被 vCenter 管理。
  • Modify network settings(Host name、IP configuration、VLAN)。
  • Enable SSH / Shell
Lession 3: Overview of ESXi

VMware vSphere ESXi         :收費
VMware vSphere Hypervisor:免費,但不能被vCenter管理
  • Security
    • Memory handening:Kernel載入記憶體是隨機的,不會被猜到結構。
    • Kernel module integrity:Kernel module認證,有被變更則不被載入。
    • Trusted platform module:平台標章認證。
  • Small disk footprit:硬碟抄寫少,適合使用SAN/USB boot,可以運用AutoDeploy + PXE開機 + ESXi Image做部署。
P.S : VMware 建議NTP Server設定由VM向NTP Server 同步時間,不與ESXi 同步時間,尤其VM有與DC做認證時。

2013年10月31日 星期四

VMware 學習筆記 (一) Course Introduction

因工作任務需考取VCP-511,也順便寫個小筆記。

課堂總共分14 module。

Module 1 : Course Introduction

課程一開始介紹vSphere功能,如下圖所示。





名詞解釋:
vMotion: 可以讓您將一部執行中的VM從一台vSphere移到另一台vSphere。
DRS:  Distributed Resources Scheduler   自動化的負載平衡,DRS 能將虛擬機的工作負載分散至叢集內的各 vSphere 主機 。
DPM: Distributed Power Management  動態電源管理,資源需求量低時,DPM 會讓主機進入待命模式,需求高時,DPM 會啟動足夠的主機,以便因應該需求並保持服務可用性,需使用Auto Deploy,伺服器需支援PXE開機,適合用在SAN boot無硬碟的運算主機上。

課程中提到Memory overcommit (動態記憶體配置),是VMware的強項之一,Hyper-V在此方面較差。

ESXi 4.X Hardware Version 7
ESXi 5.0 Hardware Version 8
ESXi 5.1 Hardware Version 9
不同版本VM所包含的功能也會有所不同,後面章節會提到差別。
Fault Tolerance、HA在後面的章節才會詳做解釋。

2013年4月5日 星期五

Open vSwitch GRE Tunnel on Proxmox

使用VMware Workstation 建立實驗環境,建立 2台Proxmox 2.3 Host 並安裝Open vSwitch 和 1台POX controller 連接Open vSwitch,2台Proxmox 組成pve cluster並各建立1台VM,使用Open vSwitch GRE Tunnel 讓VM之間形成區網,架構如下圖所示。



[root@pveNode ~]$ ovs-vsctl add-br vmbr1
[root@pveNode ~]$ ovs-vsctl add-port vmbr1 gre0 -- set interface gre0 type=gre options:remote_ip=192.168.88.141
[root@pveNode ~]$ ovs-vsctl set-controller vmbr1 tcp:192.168.88.140:6633
[root@pveNode2 ~]$ ovs-vsctl add-br vmbr1
[root@pveNode2 ~]$ ovs-vsctl add-port vmbr1 gre0 -- set interface gre0 type=gre options:remote_ip=192.168.88.142
[root@pveNode2 ~]$ ovs-vsctl set-controller vmbr1 tcp:192.168.88.140:6633
Open vSwitch 設定結果如下,tap 是VM使用自動建立的:
[root@proxNode2 ~]# ovs-vsctl show
81be08ee-471b-45a0-acb7-f2e30782eeca
    Bridge "vmbr0"
        Port "eth0"
            Interface "eth0"
        Port "vmbr0"
            Interface "vmbr0"
                type: internal
    Bridge "vmbr1"
        Controller "tcp:192.168.88.140:6633"
            is_connected: true
        Port "tap100i0"
            Interface "tap100i0"
        Port "gre0"
            Interface "gre0"
                type: gre
                options: {remote_ip="192.168.88.141"}
        Port "vmbr1"
            Interface "vmbr1"
                type: internal
接下來安裝POX controller,需要python 2.7以上:
[root@ubuntu ~]$ wget http://python.org/ftp/python/2.7.3/Python-2.7.3.tgz
[root@ubuntu ~]$ tar -xvf Python-2.7.3.tgz 
[root@ubuntu ~]$ cd Python-2.7.3/
[root@ubuntu ~]$ ./configure 
[root@ubuntu ~]$ make
[root@ubuntu ~]$ sudo make altinstall
[root@ubuntu ~]$ sudo apt-get install python-pastescript
[root@ubuntu ~]$ git clone https://github.com/MurphyMc/poxdesk
[root@ubuntu ~]$ cd poxdesk/
[root@ubuntu ~]$ wget http://downloads.sourceforge.net/qooxdoo/qooxdoo-2.0.2-sdk.zip
[root@ubuntu ~]$ unzip qooxdoo-2.0.2-sdk.zip
[root@ubuntu ~]$ mv qooxdoo-2.0.2-sdk qx
[root@ubuntu ~]$ cd poxdesk
[root@ubuntu ~]$ ./generate.py
[root@ubuntu ~]$ cd ../../..
[root@ubuntu ~]$ ./pox.py forwarding.l2_learning samples.pretty_log web messenger messenger.log_service /
                    messenger.ajax_transport openflow.of_service poxdesk

網頁連接http://192.168.88.140:8000/ 選poxdesk 結果如下圖。

VM網路測試結果如下圖:


2013年4月3日 星期三

configure OpenvSwitch on Proxmox VE

使用 Proxmox VE 2.3 來安裝 OpenvSwitch

  • Build kermel module "bridge"


[root@pveNode ~]$ apt-get install build-essential autoconf libtool pkg-config openssl libssl-dev bridge-utils
[root@pveNode ~]$ apt-get install git-core rpm2cpio lintian ncurses-dev
[root@pveNode ~]$ git clone git://git.proxmox.com/git/pve-kernel-2.6.32.git pve-kernel
[root@pveNode ~]$ mv pve-kernel /usr/src
[root@pveNode ~]$ cd /usr/src/pve-kernel
##修改Makefile  gcc --version|grep "<b>4.4.5</b>" || false
[root@pveNode /usr/src/pve-kernel]$ make
[root@pveNode /usr/src/pve-kernel/linux-2.6-2.6.32]$ cd linux-2.6-2.6.32
[root@pveNode /usr/src/pve-kernel/linux-2.6-2.6.32]$ make mrproper
[root@pveNode /usr/src/pve-kernel/linux-2.6-2.6.32]$ make clean
[root@pveNode /usr/src/pve-kernel/linux-2.6-2.6.32]$ make menuconfig
Networking support ->  bridge  改為 M 退出儲存 
[root@pveNode /usr/src/pve-kernel/linux-2.6-2.6.32]$ make bzImage
[root@pveNode /usr/src/pve-kernel/linux-2.6-2.6.32]$ make modules
[root@pveNode /usr/src/pve-kernel/linux-2.6-2.6.32]$ make modules_install
[root@pveNode ~]$ cp /usr/src/pve-kernel/linux-2.6-2.6.32/arch/x86_64/boot/bzImage  /boot/vmlinuz-2.6.32-20-pve
[root@pveNode ~]$ cp /usr/src/pve-kernel/linux-2.6-2.6.32/.config /boot/config-2.6.32-20-pve
[root@pveNode ~]$ mkinitramfs -o /boot/initrd.img-2.6.32-20-pve 2.6.32-20-pve
[root@pveNode ~]$ cp /usr/src/pve-kernel/linux-2.6-2.6.32/arch/x86_64/boot/bzImage  /boot/vmlinuz-2.6.32-20-pve
[root@pveNode ~]$ cp /usr/src/pve-kernel/linux-2.6-2.6.32/.config /boot/config-2.6.32-20-pve
[root@pveNode ~]$ mkinitramfs -o /boot/initrd.img-2.6.32-20-pve 2.6.32-20-pve

在 /boot/grub/grub.cfg 改開機選單 範例如下
menuentry 'Proxmox Virtual Environment GNU/Linux, with Linux 2.6.32-20-pve' --class proxmox --class gnu-linux --class gnu --class os {
        insmod part_msdos
        insmod ext2
        set root='(hd0,msdos1)'
        search --no-floppy --fs-uuid --set 9cc709ff-7275-461e-8e91-505d0b1c158f
        echo 'Loading Linux 2.6.32-20-pve ...'
        linux /vmlinuz-2.6.32-20-pve root=/dev/mapper/pve-root ro quiet
        echo 'Loading initial ramdisk ...'
        initrd /initrd.img-2.6.32-20-pve
}


  • Open vSwitch install

[root@pveNode ~]$ wget http://openvswitch.org/releases/openvswitch-1.4.0.tar.gz
[root@pveNode ~]$ tar zxvf openvswitch-1.4.0.tar.gz
[root@pveNode ~]$ cd openvswitch-1.4.0
[root@pveNode openvswitch-1.4.0]$ ./boot.sh
[root@pveNode openvswitch-1.4.0]$ ./configure --with-linux=/lib/modules/`uname -r`/build CC=gcc-4.4
修改 datapath/linux/compat/include/linux/skbuff.h 的函式 skb_frag_page 跟 skb_reset_mac_len
修改 datapath/linux/compat/include/linux/if.h 的變數 IFF_OVS_DATAPATH
修改 datapath/linux/compat/include/linux/if_vlan.h 的函式 vlan_set_encap_proto
將上述更名或註解
[root@pveNode openvswitch-1.4.0]$ make 
[root@pveNode openvswitch-1.4.0]$ make install
[root@pveNode openvswitch-1.4.0]$ rmmod bridge
[root@pveNode openvswitch-1.4.0]$ insmod ./datapath/linux/openvswitch_mod.ko
[root@pveNode openvswitch-1.4.0]$ insmod ./datapath/linux/brcompat_mod.ko

  • Open vSwitch Setup

[root@pveNode ~]$ mkdir -p /usr/local/etc/openvswitch
[root@pveNode ~]$ ovsdb-tool create /usr/local/etc/openvswitch/conf.db ./vswitchd/vswitch.ovsschema
[root@pveNode ~]$ ovsdb-server ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock \
        --remote=db:Open_vSwitch,manager_options \
        --private-key=db:SSL,private_key \
        --certificate=db:SSL,certificate \
        --bootstrap-ca-cert=db:SSL,ca_cert \
        --detach
[root@pveNode ~]$ ovs-vswitchd unix:/usr/local/var/run/openvswitch/db.sock --detach
[root@pveNode ~]$ ovs-brcompatd --pidfile --detach 
#set Network
[root@pveNode ~]$ ovs-vsctl add-br vmbr0
[root@pveNode ~]$ ovs-vsctl add-port vmbr0 eth0
[root@pveNode ~]$ ovs-vsctl show
[root@pveNode ~]$ ifconfig eth0 0
[root@pveNode ~]$ ifconfig vmbr0 192.168.88.100 netmask 255.255.255.0
[root@pveNode ~]$ route add default gw 192.168.88.2

參考 configure Openvswitch on Proxmox VE