:::
針對查詢「virtualbox」依關聯性排序顯示文章。依日期排序 顯示所有文章

以VirtualBox架設Koha的緣由、過程與感想

以VirtualBox架設Koha的緣由、過程與感想

架設圖書館自動化系統Koha的方法,一般是從安裝作業系統、安裝並確認模組、設定資料庫、再來安裝Koha,整個安裝過程十分複雜且容易失敗(至少我灌了好幾台Linux都還沒成功過)。

儘管我國在毛慶偵教授、long_sam.tw 龍山與Thomas 育欽等人的努力之下,在網路上釋出了Koha 中文 WIKI 文件區 (技術文件)、Koha臺灣Google網上論壇KOHA 中文開發網站等資源,安裝檔過程也有自動設定的程式,然而我研究了好久卻還是裝不起來。

在這時候,Koha臺灣Google網上論壇裡面找到了一篇用虛擬機器VirtualBox架設的點子,Thomas也釋出了一個 VDI檔案(VirtualBox給虛擬機器使用的硬碟檔),讓正在使用VirtualBox架設Linux的我相當地感興趣。當然,VirtualBox是免費且跨平台的應用程式。

然而,之前也有看過用虛擬機器VMware Server或VMware Player架設Koha的介紹,這兩種的VMware也是免費軟體,但VMware Server需要免費註冊取得授權帳號。然而實際架起VMware之後,卻因為網路設定過於複雜,苦於不知該如何將虛擬機器(Guest)的網路與實體機器(Host)的網路連接而放棄。

話說回來,下載了Thomas的VDI檔之後,儘管是可以用VirtualBox成功開啟,然而卻遇到了網路卡找不到、需要修改koha-http.conf的設定等問題,再經過幾回跟Thomas通信請教與自己研究之下,終於一一克服。

在取得Thomas同意之下,我將修改過後的VDI檔再釋放出來供人下載,並撰寫修改過程與在Windows上的安裝方法,將從網路所學所得、回饋給網路社會。


好,在把Koha虛擬機器的架設方法說明完畢之後,我才打算要發佈這一篇。我本來是想說,應該要先把連結加上去再發佈,但其實先發佈也無所謂,有需要的人應該是一下子就能找到了,也不會特地來看這一篇感想。

Koha,從在輔大圖資的時候就常常聽得到這個名詞,跟毛慶禎老師上過課,也跟龍山學長見過面,Koha是個很常聽見、卻又不太熟悉的名詞。這次由於政大圖檔所授課編目教學,想效法毛老師用Koha來上資訊組織;另一方面是所上圖書室內的書目資料庫僅有儲存、查詢的功能,與現行圖書館所使用的自動化系統相距甚遠,因此希望改以Open Source的Koha圖書館自動化系統取代之;再加上其實之前就有同學跟學長有需要圖書館自動化系統,這些就是我這次研究Koha架設的原因。

剛開始,我需要一台伺服器安裝Linux,然而光這點就讓我為了調配電腦而煩惱半天。後來改用VirtualBox架設,安裝了不下數十次的Linux,每每卡在Perl模組遺失,至今這個問題還在Koha臺灣論壇等著解決。接著改嘗試以VMware架設,卻苦於網路設定搞不定而放棄。此時看到Thosmas釋出的VirtualBox VDI,解決了系統自身的網路問題之後,就順利運作了!此時才是我正式碰觸Koha的開始,雖然我目前還是不能成功安裝Koha。

接著熟悉系統操作,發現有許多不太習慣的設定,我從資料庫、從Perl程式一一地去修改,最後再把這些調整整理之後釋出。前前後後,我用了一個多月的時間才搞定。

我想說的有兩件事情。第一件事情是架設Koha這件事情,很難嗎?老實說,一再重灌Linux、安裝Koha,這過程很讓人絕望。有好幾天我都是過著一邊等安裝、一邊Google找解答、一邊整理問題狀況去問Koha臺灣的前輩們這種不斷重複的生活。架設Koha的過程,並不是努力做同一件事情就能夠成功,我用同種方法灌100次Linux,應該都架不起Koha。因此得要不斷地去找其他方法、詢問別人、再嘗試新的方法來解決。所以我也期許共同努力的同學、朋友們,不要懼怕這種連架都不知道能不能夠架起來的任務,其實我多少也抱著架不起來也沒關係的心態在做,即使架不起來,我還是學到了很多東西,在碰Koha之前,我連Perl都還沒寫過呢。

另一件事情,Koha我目前只有碰觸讀者、編目、系統設定這些部份,但我真的覺得,這是一個很不錯的系統。特別是編目的機讀格式功能,我感到與以往自己寫資料庫結構或是DSpace用的Dublin Core有著很大的差別。機讀格式這種複雜到讓人難過的Metadata,真的不能用普通的資料庫就草草了事。機讀格式的指標、分欄、資料代碼等處理,光是一個欄位就得花上好多功夫,這也只有Koha這種圖書館自動化系統才有量身打造。然而,Koha不能用預設值(允許値的選單又太過限制)、不能用自由填寫搭配選單、說明欄位太過簡短等缺點也是需要繼續改進的地方,期許毛老師與學長們繼續努力。即使如此,我希望我這次研究的結果能幫助其他人能夠更順利地架設Koha,推廣Koha的應用。

話說回來,研究Koha這件事情,我是把它當作所上事務在看,而不是個人研究。老闆也在跟我說,希望我能把所上事務脫手,儘可能回到自己研究。其實不只如此,這段時間沉溺於Koha,又好久沒讀paper了,不振作不行啊......

(more...)

用EaseUS Todo Backup Free 4.0.0.2實作實體機器轉成虛擬機器(P2V)

用EaseUS Todo Backup Free 4.0.0.2實作實體機器轉成虛擬機器(P2V)

image

最近在重灌電腦的時候試著用用看其他的備份軟體,意外地發現EaseUS Todo Backup Free 4.0.0.2具備P2V功能。我一直以來都對虛擬機器相當感興趣,P2V──實體機器虛擬化當然也是其中一個關切重點。

使用EaseUS Todo Backup Free備份電腦並轉換成虛擬機器的過程並沒有很困難。更重要的是,這些工具全部都是免費可取得的!非常適合虛擬機器入門者拿來練習P2V。

在此記錄使用EaseUS Todo Backup Free來實作P2V的過程。


什麼是P2V?

摘要Wikipedia的介紹:

計算機集群中,許多小型伺服器正在被一個大型伺服器取代以增加硬體資源的利用率(如CPU等)。雖然硬體正在被整合,但是典型的作業系統仍然是獨立的。取而代之地,每一個運行在獨立的伺服器上的作業系統被轉移到在虛擬機中。大型的伺服器可以「寄宿」許多這樣的「客戶」虛擬機。這就是物理到虛擬(Physical-to-Virtual, P2V)的轉換。

早期我們大部分的系統都是以實體機器建立:在實體機器上安裝Linux、架設網站、實作系統。但是一旦這個系統已經不常使用時,它卻仍佔用了這個實體機器。這不僅造成維護上的困難,後面的人也無法有效地利用這台實體機器的資源。

這時我們採取的作法就是上述的P2V,把實體電腦直接虛擬化,然後擺到虛擬機器運作環境下讓它繼續運作,而實體電腦就可以騰做其他利用。

關於P2V的技術與工具非常多,有興趣的話可以先看一看王偉任寫的一次學會虛擬化P2V與V2V轉移,可以有更全面的基本概念。

使用工具

這一篇介紹使用了三種工具,一個是主角EaseUS Todo Backup,一個是P2V的輔助函式庫VMware Virtual Disk Development Kit,最後一個是虛擬化環境VirtualBox。

EaseUS Todo Backup 4.0.0.2

image

EaseUS這家公司出的備份軟體EaseUS Todo Backup主要是用於硬碟映像檔備份上。類似功能的產品有早期的Norton Ghost、現在知名的Acronis True Image與國網中心整合多種開放原始碼工具組成的再生龍CloneZilla

在雲端平台虛擬化技術熱潮之下,這些軟體也不只有單純地用在實體機器上,而也對應到虛擬機器的備份與還原。當然,實體機器可以用的備份工具,虛擬機器也可以用。而為了因應虛擬機器的管理需求,各種功能就因應而生。

P2V就是其中的一種虛擬機器技術。然而由於虛擬機器運作環境並非個人、家庭常見的東西,大部分免費、個人與家用版的備份軟體都不具備P2V功能。

EaseUS Todo Backup在很早以前的免費版本4.0.0.2中卻擺上了P2V這個企業級的功能,但是在後面的免費版本中卻都將它移除掉了。EaseUS Todo Backup 4.0.0.2版本在官方網站已經消失已久,不過網路上依然可以找到這個版本。我把它上傳到SkyDrive供其他人利用,如果有所侵權,請再告知我吧。

VMware Virtual Disk Development Kit

EaseUS Todo Backup的P2V功能需用到VMware的Virtual Disk Development Kit,這也是VMware上可以免費下載的工具,不過需要先註冊免費帳號登入之後才能使用就是了。我也將它備份如下:

VMware-vix-disklib-5.1.0-774844.i386.exe

Orcale VM VirtualBox

image

EaseUS Todo Backup使用P2V最後輸出的會是VMware的虛擬機器格式,而這個幾乎已經成為業界標準的VMware虛擬機器也是能在免費的Orcale VM VirtualBox上運作。

VIrtualBox到現在還是我個人認為練習架設虛擬機器的首選,到目前版本在網路設定上已經友善許多,不輸給VMware Workstation,而且還是免費的喔!

備份檔案如下:


P2V實作過程

Ashampoo_Snap_2013.01.06_16h07m03s_008_EaseUS Todo Backup

裝好EaseUS Todo Backup(以下簡稱EaseUS)之後你可以看到上面的主畫面。

要做P2V我們必須經過兩個步驟:

  1. 將實體機器備份成硬碟映像檔
  2. 將硬碟映像檔轉換成虛擬機器
備份實體機器

image

我現在就以我目前在操作的電腦來做練習,按下「Data backup (File, Disk/Parititon)」進入備份功能。

Ashampoo_Snap_2013.01.06_16h08m18s_010_EaseUS Todo Backup

選擇你要備份的硬碟,我主要的系統都安裝Disk 2,你可以看到上面的路經是「C: (NTFS)」。選擇Disk 2,然後在下面設定備份映像檔的儲存位置(Destination,我目前設定是D:\My Backups),最後按下右下角的「Proceed」開始備份吧。

在備份的時候電腦不需要關機,這種模式叫做「熱備份(Hot Cloning)」,而用在P2V術語上,則叫做「熱遷移(Hot Migration)」。相較於備份時必須關機的模式「冷備份(Cold Cloning)」或是「冷遷移(Cold Migration)」來說,「熱備份」其實是比較高難度的作法喔。

備份需要花點時間。如果你硬碟非常大,那就要花更久的時間。我的硬碟為60GB大小,備份過程會壓縮處理,最後產生了9GB的備份檔。

Ashampoo_Snap_2013.01.06_16h02m39s_003_Disk and Partition backup 2013-1-6 AM 08-00

備份完成之後,你就可以在備份檔的儲存位置找到你硬碟的備份檔。為了方便燒錄,所以我把映像檔做了分割,上圖中才會看到那一堆的映像檔資料,但其實都是同一顆硬碟Disk 2的備份檔案。

轉換映像檔成為虛擬機器

image

再回到EaseUS的主畫面,這次我們要用的是轉換映像檔(Convert image)的功能,將備份的硬碟映像檔轉換成虛擬機器。

除了VMware之外,你也可以轉換成Microsoft虛擬機器VirtualPC。而這篇主要展示的是轉換成VMware的功能。請注意,在用這功能之前必須先安裝VMware Virtual Disk Development Kit,不然會無法執行喔。

Ashampoo_Snap_2013.01.06_16h03m30s_005_EaseUS Image Converter

轉換映像檔功能操作也很簡單:

  1. 選擇你要轉換的映像檔(Backup image)
  2. 設定你要輸出的虛擬機器檔案名稱(Image name)、類型(Type: VMWare)與位置(Destination)

設定完成之後按下「Proceed」開始轉換吧。

Ashampoo_Snap_2013.01.06_16h03m07s_004_Disk and Partition backup 2013-1-6 AM 08-00

虛擬機器跟硬碟映像檔放在同一個位置,就只有那一個檔案而已喔。我9GB的備份檔案轉換成虛擬機器之後大小增至22GB,但還是比原本60GB小很多。耗時很短,只有15分鐘左右。

在VirtualBox上運作

為了測試我們轉換完成的虛擬機器是否能正常運作,在此是使用VirtualBox來進行。

image

在建立虛擬機器那邊,要使用現有的虛擬硬碟檔案,並指向你剛剛轉換完成的虛擬機器。

image

在這邊要注意一下。VirtualBox預設建立虛擬機器掛載虛擬硬碟檔案的時候,會將硬碟連接為SATA硬碟。如果你原本實體機器硬碟就是用SATA,那沒有問題;如果是IDE裝置(PATA)的話,要記得到設定值的存放裝置中,把你的硬碟掛載在「控制器:IDE」底下,這樣子Windows開機才會正常運作喔。

Ashampoo_Snap_2013.01.06_16h18m40s_015_

設定完成之後,打開VirtualBox中的虛擬機器,整個就是正常運作。畫面中出現錯誤是因為我沒有另外備份另一個磁碟,導致Windows找不到資料而已。


結語:EaseUS Todo Backup的優缺點

經過這一番P2V的練習之後,我可以發現EaseUS一些優缺點。

優點部分很明顯:

  • EaseUS Todo Backup是免費的,很適合作為推廣入門的工具。
  • 先將實體機器轉換成映像檔、再轉換成虛擬機器的過程十分穩定,比VMware vCenter Converter Standalone透過連線做Hot Cloning還要來得穩定得多。
  • 結合原本實體機器的備份策略

缺點部分也不少:

  • 兩階段轉換手續難以自動化。如果P2V需求相當大的話,這就比較麻煩了。
  • EaseUS Todo Backup Free 4.0.0.2沒有「增量備份」的功能。

特別是增量備份的功能,這對定時要進行系統備份的任務來說是非常必要的。增量備份的意思是,第一次備份檔案時備份了完整的硬碟映像檔,而第二次之後則是備份前一次差異的檔案,不必再次備份完整的整顆硬碟。這種技術可以省下許多硬碟空間,並將多個版本保持在同一個備份檔案中,以方便管理。

之前我大多使用Acronis TrueImage作為備份工具,也是因為它具備了增量備份功能。

而後來我又發現到原來VMware vCenter Converter Standalone能夠將Acronis TrueImage備份的tib硬碟映像檔轉換成VMware虛擬機器。這樣就能做到跟上述使用EaseUS相同的效果,還能繼續使用增量備份的功能,實為更佳的方案。我們下次再來聊聊怎麼用Acronis TrueImage來實作P2V吧。

(more...)

連接VirtualBox主端介面的網路橋接器,讓網路不能連線的問題

布丁布丁吃布丁

連接VirtualBox主端介面的網路橋接器,讓網路不能連線的問題

VBox_connect

我在電腦教室裡面安裝了VirtualBox 1.6.2版本,並先安裝好「VirtualBox主端介面」、設定網路橋接器,再對網路橋接器的設定IP,以讓電腦可以上網。詳細的設定步驟,可以參考VirtualBox用網路橋接器設定虛擬機器的固定IP這篇。

設定完畢了一台電腦之後,接著用CloneZilla Live複製到多台電腦上面。

整個動作完成之後,卻發現其他電腦無法順利上網。

後來發現是那個「VirtualBox主端介面」的問題,移除掉、並重新設定網路橋接器,便可以順利上網。

此篇作為一個記錄,給後面用VirtualBox又做硬碟複製的管理者一個參考。

(more...)

安裝Proxmox VE遇到「command 'chroot /target dpkg --force-confold --configure -a' failed with exit code 1 at /usr/bin/proxinstall line 177」錯誤時的解決方法

安裝Proxmox VE遇到「command 'chroot /target dpkg --force-confold --configure -a' failed with exit code 1 at /usr/bin/proxinstall line 177」錯誤時的解決方法

2013-06-16_14-39-23

如果在安裝P`roxmox VE 3.0的時候遇到了「command 'chroot /target dpkg --force-confold --configure -a' failed with exit code 1 at /usr/bin/proxinstall line 177」的錯誤訊息,表示你的伺服器記憶體不足512MB。讓伺服器記憶體超過512MB就沒問題了。

When installing Proxmox VE 3.0, if you encounter the error “command 'chroot /target dpkg --force-confold --configure -a' failed with exit code 1 at /usr/bin/proxinstall line 177”, please increase server’s memory more than 512MB. Proxmox VE need 512MB memory at least.


為何使用Proxmox VE與OpenVZ / Why I use Proxmox VE and OpenVZ?

190px-OpenVZ-logo

我從2011年開始安裝Proxmox VE(以下簡稱Proxmox) 1.9版開始,就深深地受到OpenVZ的魅力所吸引。OpenVZ是一種非主流的虛擬化技術,它是將Linux的執行緒(process)分隔成不同的容器(container),每個容器都執行完整的Linux作業系統。因此它的缺點在於只能限制於Linux、硬體環境配置較難,但是它在執行效率上的優點卻是其他技術所遠遠不及的。也因為OpenVZ執行時就像是在容器裡面運作一樣,所以Proxmox把它簡稱為CT,意即ConTainer。

proxmox-logo

Proxmox VE是一款整合OpenVZ與KVM的虛擬機器管理平台,並以開放原始碼的形式釋出。安裝時僅需要從光碟直接安裝即可,安裝過程不到三十分鐘,一台可以建置OpenVZ與KVM的虛擬機器環境就可以上線運作了。

不過那是安裝1.9版時的經驗,現在安裝更新的版本時,似乎遇到了一些問題。

使用VirtualBox安裝Proxmox VE發生錯誤 / Install Proxmox VE failed on VirtualBox

那時我安裝1.9版時並沒有遇到什麼問題,倒是後來想用VirtualBox來安裝2.3與3.0版時就發生了錯誤。

VirtualBox的機器配置參數如下圖:

image

安裝3.0版時的錯誤訊息是:

command 'chroot /target dpkg --force-confold --configure -a' failed with exit code 1 at /usr/bin/proxinstall line 177

而安裝2.3版時也會遇到一樣的錯誤,錯誤訊息只有行數的差別:

command 'chroot /target dpkg --force-confold --configure -a' failed with exit code 1 at /usr/bin/proxinstall line 172

如果要安裝Proxmox VE,記憶體必須是512MB以上 / If you want to install Proxmox VE, server’s memory must be more than 512MB.

經過Proxmox的論壇解答之後,我才知道原來記憶體要設成512MB以上。仔細一看,Proxmox VE的系統安裝需求中,記憶體居然要求要1GB耶。而VirtualBox建立Debian作業系統時,預設只會給予384MB而已,這樣子難怪會失敗。

所以我調整了記憶體數量到896MB(隨便設的),設定細節如下圖:

2013-06-17_201318

然後再安裝Proxmox VE,這次就能順利成功了。

2013-06-17_201348

謝謝Proxmox Staff Member的dietmar回答,真是幫了很大的忙啊。


結語:證實了虛擬機器中的虛擬機器不能使用KVM的疑惑 / Conclusion: VM in VM could not use KVM.

其實這次主要要測試一件事情。那就是即使在Intel VT-x指令集的支持中,在VirtualBox裡面使用Debian 64Bit的Proxmox VE,依然不能使用KVM。終於解決了我長久以來的疑惑了,雖然中間花了不少時間就是。

(more...)

讓VirtualBox的VRDP連線的滑鼠同步

布丁布丁吃布丁

讓VirtualBox的VRDP連線的滑鼠同步

image 

一般來說,要操作VirtualBox建立的虛擬機器時,必須先連到安裝VirtualBox的Host OS,再連到虛擬機器Guest OS。作法如上圖中左邊的流程,整個步驟要兩次。此作法最大的問題在於Host OS限制連線使用者端,連帶影響Guest OS的使用者人數。

VirtualBox提供了VRDP的方法,讓你簡單地能夠利用遠端桌面直接操作虛擬機器(Guest OS),而不需要透過Host OS主機(如上圖中,右邊的方法)。

image

開啟VRDP的功能也很簡單,只要在VirtualBox對每一台虛擬機器的設定值裡面,切到「遠端顯示」,「啟用VRDP伺服器」並設定「伺服器埠」便可以了。當然,別忘了打開Host OS的防火牆喔。


VirtualBox VRDP 2009-03-10_145626

雖然這是很簡單也很確實的解決方法,不過不知道為什麼似乎很少人提出來講。在這邊佔個版面,特地拿出來講一下。

(more...)

VirtualBox擴大CentOS的LVM硬碟筆記

布丁布丁吃布丁

VirtualBox擴大CentOS的LVM硬碟筆記

image

前言

VirtualBox使用虛擬動態映像檔(vdi),VDI的好處在於你能夠保留最大到2TB的擴增空間,但卻又只會佔用實際儲存的資料。具體來說,vdi可以讓GuestOS(在此指虛擬機器)當中讀取起來有到2TB(大概2024GB)的硬碟,但在HostOS(在此指實際安裝虛擬機器的本機端)中只會佔用vdi中實際儲存的檔案,可能只需要23GB。當你發現VDI的大小超過HostOS所能允許的空間的話,就直接更換VDI儲存位置,放在更大的硬碟空間裡面就行了,非常方便。

問題敘述

之前在建立VDI時的錯誤決定,讓他的實體空間只有8GB,這對於我系統的要求是不夠的。所以得想辦法讓他擴大才行。

HostOS是Windows XP,GuestOS則是Linux CentOS 5 final。

GuestOS的硬碟在一開始安裝CentOS時都被切割成LVM(Logical Volume Manager)格式——而我後來才知道,這真是個麻煩的格式。因此調整大小的步驟就會多了很多繁雜的步驟。

那麼,接下來我就一步一步地去記錄我是怎麼調整VDI大小的吧。

擴大VDI虛擬大小空間

一、取得Clonezilla

VirtualBox並沒有直接擴大VDI的功能,網路上大部分的教學都是使用GPart Live CD來複製硬碟分割。但很遺憾的,GPart沒辦法讀取LVM (是的,真的很煩人),所以我採用國人自製的自由軟體Clonezilla Live

  • image下載Clonezilla Live,請選擇iso檔案下載,或是下載zip之後解壓縮成為iso。

image

在VirtualBox當中利用掛載光碟映像檔的方式將Clonezilla掛載上去之後,就可以利用Clonezilla開機來複製硬碟資料。

二、建立新的VDI硬碟

我建立一顆新的VDI硬碟,這次把大小提昇到極限值2TB。然後把舊的8GB VDI硬碟跟2TB VDI硬碟都掛到同一台虛擬機器上。

三、使用Clonezilla複製硬碟

我利用Clonezilla將舊硬碟複製到新硬碟去,細節我沒有特別記錄。但是必須讓它保持原本的分割區,不要放大分割區。因為對LVM來說,放大分割區並沒有意義。整個複製作業大概花了我30分鐘。

複製完成之後關掉虛擬機器,卸載就VDI硬碟跟Clonezilla,再以新硬碟開啟,可以成功啟動。而且利用「fdisk -l」的指令查詢,會發現到除了原本的分割區之外,還有很多空間可以利用。

四、擴大LVM的空間

鳥哥的fdiskLVM教學中還蠻詳細的,在此我僅節錄指令步驟:(我的LVM主要空間是「/dev/VolGroup00/LogVol00」,VDI硬碟代號是「/dev/hdb」)

  1. 進入fdisk,用「n」新增分割,選擇「p」主分割,編號為「3」(因為我原本系統中1為boot,2為其他空間),然後指令「w」建立分割並離開。
  2. 使用「partprobe」讓核心重新抓取一次硬碟分割表,成功建立第三個分割,代號是「/dev/hdb3」。
  3. 用「pvcreate /dev/hdb3」建立新的PV,然後用「pvscan」檢查。
  4. 用「vgextend /dev/VolGroup00/LogVol00」來加大VG。
  5. 用「vgdisplay」檢查,注意訊息中會有類似「Free  PE / Size       16486 / 2 TB」(正確數字我有點忘了),那個「16486」就是待會可以新增的空間。
  6. 用「lvresize –l + 16486 /dev/VolGroup00/LogVol00」加大空間。
  7. 用「resize2fs /dev/VolGroup00/LogVol00」把LV的容量擴大到整個檔案系統可以允許的上限。需要耗費一段時間,此時VDI實際大小也會逐漸加大。
  8. 完成後可以用「df -h」來檢查是否有真的擴大了。

到目前為止,儘管VDI的虛擬大小總算擴大到2TB了,但實體大小卻也從7GB增大到23GB。進去虛擬機器中查詢使用量,卻也只有5GB多的用量而已。我猜可能是2TB所需要得區塊量(blocks)比較多,所以也佔去了不少空間。這就跟「買了80G硬碟,實際上可用只有75G」的道理一樣。詳細的原理請回去查查「作業系統」的課本吧。

即使如此,現在VDI的實際大小還是太大了,我們下一節就來談談如何減少VDI的實體大小。

縮小VDI實際檔案大小

image

VirtualBox的VDI的實際大小似乎是取決於虛擬機器當中動到的區塊量。也就是說,即使你在虛擬機器當中刪除了檔案,但VDI的實際大小並不會因此減少。因此VDI只會越用越多,並不會縮小。

在此有兩種方法可以使用:VirtualBox的VBoxManage提供了「modifyhd」來清除被設為0的區塊以壓縮VDI的實際大小;或用檔案壓縮工具7-zip來減少檔案大小。以下一一介紹作法。

VBoxManage的modifyhd

自由流浪的心靈世界中介紹縮小VirtualBox VDI檔案的作法十分詳細,我參考其他資料之後整理的大致上步驟如下

  1. 先刪除虛擬機器裡面不需要的檔案。
  2. 安裝「zerofree」這個工具,RPM Search裡面可以找到給Red Hat/CentOS的版本。RPM安裝方法可以參考鳥哥,指令是「rpm –ivh [*.rpm]」。
    安裝完畢之後,可以用「/usr/sbin/zerofree」來使用他
  3. 重新啟動虛擬機器,進入CentOS的單機模式(single user mode)。具體作法是開機時按esc進入選單,按e編輯選單內容,再選擇有「kernal」那一項按e編輯開機參數。進入指令列之後再原有指令最後加上「singel」,然後按b開機即可。
  4. 執行init 1 (還沒去查這到底是什麼功能)
  5. 將硬碟以ro模式掛載:mount -n -o remount,ro -t ext3 /dev/VolGroup00/LogVol00 /
  6. 執行zerofree:/usr/sbin/zerofree /dev/VolGroup00/LogVol00。他需要花上好長一段時間來作這個動作,請慢慢等待。
  7. 完成zerofree之後關閉虛擬機器。
  8. 在HostOS底下執行壓縮指令:VBoxManage modifyhd 你的VDI位置.vdi compact。當然,VBoxManage的執行位置你也要修改成你安裝VirtualBox的位置才行。
    整個壓縮過程大概耗費2小時完成。

完成之後,原本在虛擬機器中刪除檔案所減少的空間,也讓VDI實際大小減少了。

7-zip壓縮

image 使用modifyhd之後讓VDI的實體大小從23GB減到22GB,但這大小對我來說仍然是過大的負荷。當我架設完虛擬機器而不需要執行時,可以考慮採用7-zip之類的壓縮軟體來壓縮檔案。我選擇使用7-zip Portable,一來這是開放原始碼的自由軟體;二來7-zip可以壓縮超過2GB大小的檔案,而且壓縮比例又很高,儘管比較需要花時間;最後Portable則是不需要安裝即可執行的版本,下載下來馬上就可以使用。

利用7-zip壓縮了22GB的VDI檔案之後,我取得了2GB的壓縮檔,成果讓我非常滿意。


一邊找尋資料、一邊實際操作,然後又來不斷修改這篇Blog。這一篇是我大概一天多的成果,又是一篇用時間跟精力換來的筆記記錄,還好最後有達到我想要的成效,真是可喜可賀。

(more...)

在VirtualBox建立Ezilla 2.0 Cluster記錄 / Setup Ezilla 2.0 Cluster on VirtualBox

在VirtualBox建立Ezilla 2.0 Cluster記錄 / Setup Ezilla 2.0 Cluster on VirtualBox

Ezilla_logo_all_big

Ezilla國家高速網路與計算中心發展出來的簡易雲端平台。為了測試安裝過程,我使用VirtualBox建立master跟slave兩台虛擬主機來架設Ezilla。這篇是簡單記錄建立Ezilla Cluster架構的安裝記錄。

Ezilla is developed by National Center for High-Performance Computing for deploying cloud platform. I try to setup Ezilla cluster on VirtualBox. Following is my setup process.


安裝環境 / Installation Environment

image

跟前一篇安裝Proxmox VE時一樣,這次我也是用VirtualBox 4.2.6來安裝。一開始建立兩台伺服器,命名為master跟slave兩種不同的伺服器角色。

這次安裝的系統是Ezilla v 2.0,帳號設定很多東西跟前一版v1並不相同,安裝時請特別注意到版本的問題。


安裝master虛擬機器 / Install “master” Virtual Machine

因為Ezilla的Linux發行版是CentOS 6.3,所以我安裝時選用RedHat 64bit來安裝。記憶體跟硬碟大小都用預設,但是網路的部份則是設定成「內部網路」,取名為「ezilla」。

安裝Ezilla,設定網路 / Install Ezilla and Setup Network

掛載ezilla-disk-2.0.1-3.iso進行安裝,安裝步驟中只有決定網路設定而已。在這邊要特別注意,網路請用手動設定(Manual configuration)。安裝時的選項如下:

image

因為master要擔任DHCP的角色,IP的尾碼必須要用254,例如「10.0.0.254」,設定如下圖:

image

安裝之後master會重開機。第一次開機時還要執行很多安裝腳本,會花相當久的時間。但是第二次之後開機速度就很快了。

增加master網路卡 / Add Network Card for “master”

安裝時讓master主要使用內部網路,可是為了讓其他人能夠開啟Ezilla的網頁管理介面,我們還需要幫master加裝一張網路卡。

我安裝一張NAT網路卡給master,設定如下圖:

image

因為Ezilla的管理介面是使用9869連接埠,所以我們還要設定連接埠轉遞為9869,如下圖:

image

設定master網路卡 / Setup Network in “master”

裝了NAT網路卡,master也不會自動把它啟動,這邊還需要額外的軟體設定。

我們先開啟master,然後登入作業系統。

  • 登入帳號:root
  • 登入密碼:release_v2_master

master跟slave都會用相同的帳號密碼喔。

image

接著我們用「ifconfig –a | more」來調查NAT網路卡的編號。我們可以從VirtualBox上看到NAT網路卡的MAC碼為「08002759679F」,比對ifconfig列出的網卡(如下圖),我們可以知道NAT網路卡的編號是eth1。

image

接著編輯以下檔案,注意最後是檔案的編號:

/etc/sysconfig/networking/devices/ifcfg-eth1

設定網卡為DHCP,並將ONBOOT=yes設為開機時自動啟動。全部如下圖:

image

然後我們用ifup指令開啟eth1:

ifup eth1

這樣子Host OS就能夠連線到master了。


安裝 slave / “slave” Installation

接著我們要準備安裝slave節點,而master還必須多做一點設定。

開啟master的網頁管理介面 / Open “master”’s Web Administration GUI

透過以下網址,我們可以開啟Ezilla的網頁管理介面:

  • 預設登入帳號:oneadmin
  • 預設登入密碼:release_v2_ezilla

你可以注意到這裡的帳號密碼跟Linux端的帳號密碼是分開的。

image

設定slave節點安裝 / Set up Slave Node

進入左邊的「Set up Slave Node」,把Ezilla Auto-Installation Service for Slave node打開到ON。

image

然後進入Set up Your Slave environment設定。如果要配置長久可運作的雲端架構,請將檔案系統設成MooseFS

image

建立slave虛擬機器與自動安裝Ezilla / Create “slave” Virtual Machine and Install Ezilla Automatically

slave的建立跟master都一樣是RedHat 64bit,網路也設成Ezilla內部網路。需要特別注意的是開機順序要把「網路」打勾並調到第一順位,如下圖:

image

這樣子slave開機的時候,會以網路連線狀態自動去抓取master的Ezilla安裝資訊。slave安裝大概也只要五分鐘不到就可以完成。

完成之後,先不要把slave重開機,我們要先做個動作:

關閉master的slave節點安裝功能 / Disable Slave Node Installation

回到master的網頁管理介面,我們把Ezilla Auto-Installation Service for Slave node關閉成OFF。

image

這個步驟可以防止slave重開機的時候會再次抓取master的安裝資訊並安裝Ezilla。

關閉slave的網路開機功能 / Disable “slave”’s PXE

接著我們把slave關機,然後關閉開機順序中的「網路」。

image

因為已經安裝好Ezilla了,slave只要正常開機即可。

slave自動加入到master當中 / Join “slave” to “master”’s Cluster Automatically

最後我們把slave開機。slave會自動抓取master的DHCP來配置網路,然後master也會偵測到slave的加入。

我們可以從master的網頁管理介面中看到slave加入的情況。選取「基礎設施」中的「主機」之後,就可以看到剛剛加入的slave,名稱預設使用IP:10.0.0.3,

image

因為在VirtualBox中slave沒有能力執行KVM,所以也不能建立任何虛擬機器。到此為止只能算是練習安裝Ezilla而已。


結語:Ezilla好像省略很多控制功能 / Conclusion: Ezilla Hides Many Functions.

為了方便使用者安裝,Ezilla省略了很多原本網管會很在意的功能。像是安裝時的密碼設定,網頁管理介面也需要網路卡的設定。而且Ezilla預設似乎只有一張網卡,所以我這種兩張網卡、一張給slave連線、一張給其他人的網路配置,就需要額外去做設定。

操作介面雖然簡單好用,不過沒能真正架一個KVM來試,到這邊為止也算是白搭。

其他的有機會弄到實體電腦再練習吧。

(more...)

解決Proxmox VE KVM虛擬機器硬碟與光碟常見問題 / The solution for KVM virtual machine’s hard drive and ISO mount misconfiguration in Proxmox VE

解決Proxmox VE KVM虛擬機器硬碟與光碟常見問題 / The solution for KVM virtual machine’s hard drive and ISO mount misconfiguration in Proxmox VE

proxmox-logo

最近我們在大規模地遷移Proxmox VE中的虛擬機器,其中KVM類型的虛擬機器在轉移時常常會遇到許多各種不同的問題,像是硬碟設定或是光碟設定錯誤。我將這些問題的處理方式記錄如下。

When I migrated KVM virtual machines at Proxmox VE, I encountered many problems, such as hard drive or CD/DVD drive misconfigured. This article I describe the solutions for those problems.


硬碟驅動錯誤 / Hard Drive Misconfigured

Image 3

最常見的就是硬碟驅動配置錯誤。有段時間我常常先在VirtualBox建立虛擬機器,再轉移到Proxmox VE。這種轉移方式通常只是上傳最重要的硬碟映像檔,像是vmdk或是qcow2 (但是在VirtualBox上運作qcow2的效率其差無比就是了)。

從VirtualBox到Proxmox VE的配置 / Configuration From VirtualBox to Proxmox VE

如果只是轉移硬碟映像檔的話,必須特別注意他們的硬碟驅動設定必須一致。如果當初建立的時候使用IDE,在轉移之後建立也就必須使用IDE。

2014-03-04_063543

舉例來說,這是VirtualBox的操作介面,你可以看到這台虛擬機器的硬碟是被設定成SATA

Image 5

但是在Proxmox VE上,這臺虛擬機器的硬碟卻被設成了IDE。在Windows XP或是Linux卻使用LVM的情況下,往往會造成開機失敗。

Image 6

因此,在建立虛擬機器的硬碟時,必須特別注意其使用的硬碟驅動器。

解決方式:修改硬碟控制器 / Solution: Modify Hard Drive Controller

如果你已經將硬碟安裝成錯誤的硬碟驅動器,那Proxmox VE網頁介面上是無法直接修改。我建議是使用SFTP直接操作伺服器的檔案系統,作法如下:

  1. 先以正確的硬碟驅動器新增一個硬碟映像檔,檔案大小不拘。
  2. 以SSH登入Proxmox VE:預設連接埠22。
  3. 進入KVM的硬碟擺放位置:以VMID為260的虛擬機器為例,路徑位置就是/var/lib/vz/images/260
  4. 新建立的硬碟映像檔檔名通常會是「vm-260-disk-2.vmdk」,而用錯誤方式建立的硬碟映像檔通常會是「vm-260-disk-1.vmdk」。
  5. 記住新映像檔檔名,把新的硬碟映像檔刪除,再把舊的硬碟映像檔換個名字
  6. 回到Proxmox VE網頁介面,刪除舊硬碟映像檔的設定,只留下新建立正確的硬碟設定

這樣就完成了。


CD/DVD光碟掛載錯誤 / CD/DVD Drive ISO Mount Misconfigured

Image 7

前一種情況大多是只轉移硬碟映像檔的時候,這一種情況則是使用Proxmox VE的備份功能vzdump匯出虛擬機器之後、再匯入新的Proxmox VE的情況。細節作法可以看我寫的另一篇「Proxmox VE用備份(vzdump)與還原(restore)複製虛擬機器」。

使用vzdump的時候,虛擬機器的設定會鉅細靡遺地被保留,並還原到新的虛擬機器環境中。問題是在於新的環境中可能使用的Storage ID(儲存空間名稱)不一樣,就會導致無法正常開機的問題。

Image 8

以上圖為例,當Storage設定錯誤時,發生錯誤訊息就會是:

TASK ERROR: storage 'proxmox-nas' does not exists

這是因為這個Proxmox VE虛擬機器環境下沒有名為「proxmox-nas」的Storage的緣故。

解決方式:取消掛載映像檔 / Solution: Unmount ISO

Image 9

解決方式很簡單,就是把掛載的映像檔取消掉就好了。

  1. 指定該硬碟,按下Edit
  2. 設定Do not use any media,或是重新掛載正確的ISO映像檔,按下OK即可

這個問題警惕了我們,如果虛擬機器設定完畢之後,記得取消掛載安裝時使用的映像檔設定。


結論:不要害怕使用虛擬機器 / Conclusion: Embrace Virtual Machine

每次遇到虛擬機器的各種問題,我常常聽到的抱怨都是:「為什麼要用這種東西?你就不能裝在實體機器上嗎?」就我個人來看,這種抱怨是一種誤解。

如果你仔細看看這篇敘述的兩種問題,其實是很容易類比到實體機器上──就像是拿著SATA線去接一顆IDE硬碟,或是在光碟機裡面指定放進一片不存在的光碟。儘管實體機器操作中,有些常識的網管可能不會卡在這麼奇怪的問題上,但這的確是可以從實體機器類推到虛擬機器上的情況。

我想說的是,其實虛擬機器的設定跟實體機器沒有這麼大的差別,但比實體機器設定更為容易。以硬碟控制器的問題來說,實體機器的情況可能是一顆舊的IDE硬碟要裝到新的伺服器上,如果伺服器只剩下SATA線,那要裝IDE硬碟還必須搭配張SATA to IDE的轉接卡才能使用,安裝時還得考量到轉接卡阻礙線材空間等問題,處理起來挺費工夫的。但是虛擬機器只要設定幾項參數即可完成調整,方便許多。

虛擬機器除了有助於網管之外,快速還原的能力還能夠用於程式開發上。在「成为一个PHP专家:缺失的环节」一文中建議PHP時使用虛擬機器建立個Linux,以方便隨時重新開始或還原到程式開發的某個狀態。這些都是非常有用的功能。

因此,我會對VirtualBox、Proxmox VE、OpenVZ、KVM等多種開放自由的技術抱持最高的敬意,並繼續擁抱虛擬機器。

(more...)