顯示具有 VM 標籤的文章。 顯示所有文章
顯示具有 VM 標籤的文章。 顯示所有文章

2012年6月17日 星期日

VirtualBox Screen Size adjusting

VirtualBox的VM視窗大小可拖拉視窗邊緣來調整,
但有時會當解析度太大時會造成VM視窗無法涵蓋整個VM裡頭原有的螢幕大小,
導致操作不便, 如下

此時可透過去調整VM OS的解析度來解決VMS1
找到顯示器的選項
解析度調整為800X600
保留組態並關閉顯示器的設定
完成後的VM視窗比例,含括了整個VM內部OS的視窗, 相較下操作性更為便利

2012年6月6日 星期三

VirtualBox install on ubuntu

VirualBox 要安裝在 ubuntu上非常簡單

[Version]
Ubuntu 12.04
VirtualBox

[Steps]
1. Download VirtualBox package
2. sudo apt-get install dkms
3. sudo dpkg -i VirtualBox-3.2_4.1.16_Ubuntu_karmic_i386.deb
4. 要開啟virtualbox也很簡單, 只要在terminal上執行 virtualbox
    就會開啟圖形介面

[Reference]
https://www.virtualbox.org/manual/ch02.html#idp12629648

Virtualbox-Build multiple VMs cross mutiple physical servers

[Motivation]
當想模擬數十台甚至數百台VM所組成的cluster時, 單一實體server會受限於cpu數量以及memory大小, 而無法建立如此多台VM, 所以必須跨連到其他實體的servers, 此時VM又該如何佈署及設置網路?

[Virtual Machine]
本篇使用的是VirtualBox4.1

[Physical Machine]
HP ProLiant DL380 G6 (2core, 20G mem, 500G hd ) X 3
各自OS為 Ubuntu 12.04

[Method]
1. Install virtualbox at each physical servers   在各個server上安裝virtualbox
    參考:http://lifenote332.blogspot.tw/2012/06/virtualbox-install-on-ubuntu.html

2. Start Virtualbox and Create a new VM   新增一個新VM
    a. 設定[名稱], 選擇[作業系統]及[版本]
        (在此的名稱與VM內的OS完全沒關, 只是Virtualbox辨識用)
    b. 設定[記憶體大小] (在這設1G)
    c. 啟動硬碟-->選擇[新建硬碟]
    d. 檔案類型-->選擇[VDI]
    e. 存放裝置選擇詳細資料-->選擇[動態配置]
    f. 虛擬磁碟檔案位置-->選擇(即將創造的vdi檔的存放位置), 大小-->選擇(在此設成50G)
    g. 完成建立

3. Set two network interface cards for the VM   給予此VM兩張網卡
    a. NAT(Network Address Translation):
        概念:模擬自身就是本台實體server(Host OS), 以便對外連線, 但會使得實體server無法偵測到自己(此VM即Guest OS), 也因此無法連線到其他實體server上的VM
        功用:便利此VM上網作些更新或下載的動作
       
    b. Bridge
        概念:模擬自身與本台實體server(Host OS)存在於同一個Hob or Router底下,使得實體server能偵測得到自己, 因此在其他實體server上的VM也同樣的設定下, 可偵測到彼此
        功用:讓VM不僅可在本台實體server上互連, 也可與其他台實體server上的VM互連
       

4. Install OS and set network configuration on the VM   安裝OS及設定網路
     a. 在此安裝linux OS(Ubuntu 11.10)
     b. 網路設定的部份, 選擇[編輯連線], 因為先前給予了兩張網卡所以會有兩個連線, 而連線對映的設置應為:
         I.  裝置的MAC Address : (eth0) 即為給予的NAT網卡 --> IPv4設定 :自動(DHCP)
         II. 裝置的MAC Address : (eth1) 即為給予的Bridge網卡 --> IPv4設定 :手動(manual)
             address : 192.168.X.X(X表示自行設置, 在此設成192.168.123.1)
             mask:      255.255.X.X(在此設成255.255.255.0)
             gateway:  192.168.X.254(在此設成192.168.123.254, 網路上似乎常用254)
             DNS server: (同gateway)

5. Clone VDI   複製vdi
    當一個VM建好時, 他所有的設定都包成了一個vdi檔, 當然也可以複製此vdi來開啟另一個新的VM, 使其具備與原始的VM有同樣的設定, 但無法直接複製, 必須透過VirtualBox上的指令
    a. 執行:vboxmanage clonvdi old.vdi new.vdi
        便會產生新的vdi來開啟新的VM
    b. 執行:vboxmanage internalcommands sethduuid new.vdi
        因為有可能新舊兩個VM的uuid重複導致Virtualbox無法去開啟, 所以需在給new.vdi一個隨機的新uuid

6. Deploy new VM    開始佈署VM
    複製好的vdi, 可在本機開啟成新的VM, 亦可透過scp傳給其他台實體server 來開啟新的VM
    a. 再次實行2. , 只是到2. c.時, 選擇[使用現有硬碟], 然後選取要使用的vdi檔
        (因為在"啟動硬碟"此步驟時, virtualbox會建立一個新VM的資料夾, 我習慣先把要開啟的vdi檔先移到此然後在選取開啟, 這樣新VM的資料夾就對應新vdi, 比較方便管理)
    b. 執行3.
    c. 執行4. , 但不用在裝OS(因為已經有了), 只需調整網卡的部份及IP
        (IP一樣設成192.168.X.X)
    d. 修改hostname, 執行:sudo gedit /etc/hostname  修改完要重開VM
        (不要跟其他VM重複, 自己容易辨識的就行)

    重複5., 6. 即可佈署大量的VM

[Recommendation]
A. 假設想要所有VM都裝一些相同套件(ex. hadoop and Java)或設定, 可在一開始建第一個VM就都先下載安裝好, 如此複製此VM所產生的vdi也會具有相同的套件安裝

B. 想建立ssh免密碼連線, 可以先在第一台VM做好自己連自己的免密碼

C. 若想建立一個大型互連的cluster, 在host設定上為了減少麻煩, 可在第一台VM先設置好
    /etc/hosts, 將想要互連的host全部設進去, 之後的VM建立就不用在一個個去修改hosts

D. 當每次新建好一個VM時(就是網卡及hostname等全部設好),
    1. 先ssh 到先前已經建好的VM, 若OK則表示Bridge設置沒問題
    2. 然後開啟網頁瀏覽器, 若能正常開啟連外網頁, 則表示NAT沒問題

[延伸]
X. 曾經想過, 若VMs分佈在很多台physical machines上時, 控管每個VM要不斷轉換去使用各個physical machine, 這樣顯得很麻煩, 後來有找到一套軟體可以在單一一台server上就可去連到各個physical machine上的VM,  叫做"RemoteBox",  不過在嘗試使用下, 雖確實可以連到各台的VMs, 但卻無法開啟該VM的視窗畫面, 這點尚未突破

RemoteBox官網:
remotebox.knobgoblin.org.uk/downloads.cgi

[Reference]
多台實體machine建VM hadoop cluster
http://changyy.pixnet.net/blog/post/25612440-%5Blinux%5D-%E5%AE%89%E8%A3%9D-hadoop-0.20.1-multi-node-cluster-@-ubuntu-9.1

remotebox相關介紹
http://www.openfoundry.org/index.php?option=com_content&task=view&id=8319&Itemid=40

vboxmanage 指令doc
http://www.virtualbox.org/manual/ch08.html#vboxmanage-clonevm

vboxmanage clonevdi指令介紹
http://lbt95.pixnet.net/blog/post/30970746-%5Bvirtualbox%5D-%E4%BD%BF%E7%94%A8vboxmanage-%E8%A4%87%E8%A3%BD%E5%87%BA%E7%AC%AC%E4%BA%8C%E5%80%8B%E4%BD%9C%E6%A5%AD%E7%B3%BB%E7%B5%B1

virtualbox 網卡type介紹
http://www.wretch.cc/blog/mk99/22949462

2012年5月20日 星期日

Virtualbox的VM開多cpu

想要在Virtualbox上已經建好設定好的VM(其實新開的也一樣), 增加大於一顆的cpu數量時,
發現無法開啟, 並出現以下錯誤:

開啟虛擬機器 hdp1master 的工作階段失敗。

VT-x features locked or unavailable in MSR. (VERR_VMX_MSR_LOCKED_OR_DISABLED).

結果碼(&N): NS_ERROR_FAILURE (0x80004005)
元件: Console
介面: IConsole {1968b7d3-e3bf-4ceb-99e0-cb7c913317bb}

重新於設定處去觀察, (設定值 > 系統 > 處理器)
會發現當cpu數量調成2顆以上時,
底下會有個警示說"未偵測到最佳值",
並且訊息顯示" 控制在虛擬機器中的虛擬CPU數, 您需要在您的主機系統支援硬體虛擬化以使用一個以上的CPU"

上網去找解:
1.  執行 sudo /etc/init.d/vboxdrv setup
     重開virtualbox再去調cpu數時, 不再有"未偵測到最佳值"的警訊
     但仍有錯誤訊息.

     [Reference]
     http://www.ubuntu-tw.org/modules/newbb/viewtopic.php?post_id=88236

2. 後來發現主機要重新去調整Bios, 開啟CPU的虛擬功能(前提是本身主機板有提供此能力)
    以自己電腦為例,
    按delete 進Bios後 > 進階 > 監控 > CPU > Intel 虛擬化技術 > (原本關閉) 開啟
    然後再進作業系統重新開啟virtualbox 後就可以了!

    [Reference]
    http://ckwsteven.pixnet.net/blog/post/29109830-virtualb    o%8C%AF%E8%AA%A4%E8%A8%8A%E6%81%AF-vt-x-features-locked-or-unavailable-i