顯示具有 裸機 標籤的文章。 顯示所有文章
顯示具有 裸機 標籤的文章。 顯示所有文章

2011年6月12日 星期日

Linux KVM - 硬碟空間規劃與應用

針對 Linux KVM 來說,因為是裸機式的虛擬系統,所以可以直接利用實體電腦系統內的檔案系統,來建立與規劃虛擬電腦所需要的硬碟空間,或是虛擬電腦群的硬碟櫃(存放所有虛擬電腦的硬碟檔案),也可以將虛擬電腦,依照不同的屬性,如使用單位、服務類型等,來建立不同的存放位置(空間),方便管理與維護。


除了前面章節所介紹,利用〝kvm-img〞這個指令,可以直接在終端機之下建立虛擬電腦的硬碟檔案之外,最方便,也最為直接的,就是在圖形管理工具下操作,而在這邊就利用圖形管理工具來說明如何規畫、分割與應用 Linux KVM 的硬碟檔案。


備註1Linux KVM 可用的圖形管理工具其實有好幾套,只要符合 Open Cloud Computing InterfaceOCCI標準,所撰寫的套件,就可以管理 Linux KVM ,如 libvirt,就是符合 OCCI 標準的管理函式庫,而 virt-manager 就是使用此函式庫(libvirt)所撰寫的管理套件,就可以用來管理 Linux KVM



新增檔案櫃


開啟 virt-manager ,在中間名稱欄位的地方,也就是放置虛擬電腦圖示與狀態的地方,確認目前所在的位置是在「localhost」的地方,且是啟動的狀態, 如圖所示:



這邊要針對本機做設定,若是位置是在遠端機器的地方,則可是會設定到遠端的機器之上喔,確認之後,在工具列的地方,點選「編輯」Connection Details」,視窗開啟之後,接著點到「Storage」的頁面,而在這邊所謂的「Storage」,存放與顯示的是虛擬系統之中,所有的硬碟檔案(虛擬硬碟),或是光碟映像檔(ISO檔案)的位置與檔案資訊,Linux KVM 安裝完成,就會存在一個資料夾,這是系統預設的,不過,就實際使用與管理來說,是比較少使用到系統預設的資料夾,因為這樣比較不容易管理,按下右下方的加號按鈕,來新增一個檔案櫃(硬碟櫃),或是光碟櫃(ISO 檔案櫃)吧:



按下加號按鈕之後,會跳出後續的設定視窗,整個程序有兩個步驟:


第一、設定名稱與類型

名稱,指的就是此檔案櫃的名稱,如要設定一個專門存放 ISO 檔案的位置,可在Name」的位置填入〝ISO〞,而所謂的類型,指的則是〝儲存媒介〞,例如,若是使 用實體電腦系統內的檔案系統(這也是 Linux KVM / 裸機式的虛擬系統的特點),來當做儲存媒介,那麼類型就會是〝dir: Filesystem Directory〞,就 Linux KVM 來說,可用的儲存媒介有許多種類型,如下圖所示:




在這邊以選擇〝dir: Filesystem Directory〞為範例,設定完成之後,按下一步:



第二、指定路徑

這邊所謂的路徑,指的就是上述檔案櫃(如 ISO 檔案櫃)的絕對路徑,按下〝Browse,就可以搜尋並指定資料夾路徑,選擇完成,按下「完成(F):




設定完成,就可以看到新增的儲存位置與詳細資訊,以後,只要把相對應的檔案,存放到指定的位置,就可以輕鬆管理各種虛擬電腦的檔案了:




新增虛擬電腦硬碟檔


既然可以產生存放 ISO 檔案的檔案櫃,同樣的,也可以產生虛擬電腦硬碟存放的硬碟櫃,還記得,前面有提到, Linux KVM 安裝完成,就會產生一個「default」的資料夾(路徑:/var/lib/libvirt/images),任何新產生的虛擬硬碟,都會存放在這個資料夾內,雖然檔案都存在同一資料夾織內,但若是要對虛擬電腦進行管理,如區分部門、單位或樓層等,一旦檔案數目增多,就顯得不太方便了,所以可以依照前面新增檔案櫃的方式,做適當的區分,例如,可以在依照前面的步驟,新增一個「VM」的檔案櫃,來存放所有虛擬電腦的硬碟檔案。


既然可以產生檔案櫃來存放個是虛擬電腦的相關檔案,那麼,是否可以預先產生硬碟檔案,以提供未來虛擬電腦的使用呢?當然是可以的,首先,回到「Storage」的頁面,點選「VM」的檔案櫃,並按下下方「New Volume」的按鍵:



這時系統會跳出一個〝新增儲存卷冊〞的視窗,這就是要用來設定虛擬硬碟相關參數的視窗:



這邊有四個設定欄位,右方的灰色區域有相對應的說明,這邊再次說明一下:
  • Name:填入硬碟檔案的名稱
  • Format:這邊指的是硬碟檔案的格式,而在 Linux KVM 之中,有提供許多可通用的虛擬系統的檔案格式,如下圖:



這邊針對其中幾個類型做說明,〝raw〞的類型,指的是一次格式化到最大指定硬碟容量,例如,若指定虛擬硬碟最大容量為 8G,則格式化時,會一次劃分完整 8G 的容量出來,這比較適合用在硬碟資料讀取量大與容易快速成長的系統類型,像是資料庫,就比較適合這種硬碟格式;〝qcow〞與〝qcow2〞的類型,則是屬於〝隨需擴增〞的檔案類型,簡單來說,就是硬碟容量會隨著資料量的增加而慢慢成長,直到當初所設定的最大硬碟容量為止,適合用在一般作業的電腦或實體電腦硬碟空間比較吃緊的狀況下,而者兩的差別,只是版本的不同;至於〝vmdk〞與〝vpc〞,則是大家比較熟悉的兩套虛擬系統,VMware Virtual PC 的硬碟檔案
  • Max Capacity:最大硬碟容量,也就是虛擬電腦的硬碟所能使用的容量上限
  • Allocation:起始硬碟容量,指的是一開始虛擬硬碟的容量大小
例如,這邊新增一個名稱為〝UbuntuServer〞的硬碟,要拿來安裝 Ubuntu Server,指定硬碟格式為〝qcow2〞,並設定硬碟容量上限為〝8000 MB〞,起始硬碟大小為〝256 MB〞:



按下「完成(F)」之後,在「VM」的檔案櫃,就會看到剛剛新增的虛擬硬碟:



不過,您可能會發現,硬碟容量怎會直接到 8GB7.81 GB)的大小呢?剛剛不是指定使用 qcow2 的格式,並設定起始硬碟大小才 256 MB 嗎?別緊張,在「Storage」內的硬碟資訊,顯示的硬碟的最大容量上限,並不是最初設定的起始大小,若要確認目前實際虛擬硬碟的容量大小,則需要到終端機之下,切換到虛擬硬碟所在的目錄,如「VM」,並輸入以下指令:


$ du -h UbuntuServer.img (若顯示權限不足,則需要在指令最前面加入 sudo



然而,在這邊您可能還是會疑惑,怎不是 256 MB 呢?其實系統本身會有個運算機制,會產生一個趨近當初設定的最小值,雖然與最初的設定不相同,但目的一樣是有達到的。而若要檢視虛擬硬碟的詳細資訊,則可以輸入以下指令就可以得知:


$ sudo kvm-img info -f qcow2 UbuntuServer.img






直接使用新增的虛擬硬碟


規劃好了硬碟檔案,新增的虛擬電腦,要怎樣使用這個硬碟呢?其實,只要在新增虛擬電腦第四步驟的地方(參照 Linux KVM - RedHat 圖型管理工具),就可以不需要再產生新的虛擬硬碟,而可以直接選取剛剛新增的虛擬硬碟,並使用此硬碟檔案來安裝作業系統:




縮小日益增長的虛擬硬碟


前面有提到,若當初硬碟格式規劃為〝qcow2〞的類型時,由於此種硬碟格式是屬於〝隨需擴增〞的檔案類型,所以當資料越來越多時,虛擬硬碟的檔案大小也會日益增加,直到最初設定的容量上限為止,然而,資料可以增加,當然也會減少,但即使資料減少,虛擬硬碟的空間卻不會因此隨之縮小,若日後需要針對虛擬電腦進行備份或異地重建時的時候,過大的硬碟檔案,就會增加備份或搬移上的困難與耗時,其實,有個小小的技巧,可以釋放虛擬電腦閒置的硬碟空間,步驟如下:

  • 關閉虛擬電腦
  • 開啟終端機,並切換到虛擬硬碟所在的目錄(〝default〞的 Storage 目錄區,或是前面設定中,所自定的 Storage 目錄區,如上述的〝VM〞)
  • 縮小虛擬硬碟檔案:在終端機內,輸入以下指令:

    $ sudo kvm-img convert -O qcow2 UbuntuServer.img temp.ing

    (其中,〝UbuntuServer.img〞為目標虛擬硬碟名稱,而〝temp.img〞則是縮小空間後的虛擬硬碟名稱)

  • 刪除舊有虛擬硬碟檔案,如〝UbuntuServer.img
  • 重新命名縮小後的虛擬硬碟檔案為此來的的名稱,指令如下:

    sudo mv temp.ing UbuntuServer.img

這樣整個虛擬硬碟檔案縮小化的步驟就完成了!

2011年6月2日 星期四

Linux KVM - RedHat 圖型管理工具

virsh 指令搭配 xml 檔案,對虛擬電腦的建置、操作與管理的能力,都遠優於 Linux KVM 原生的 kvm 指令,但即使如此,卻還是指令模式的操作方式,有就是必須在終端機之下,敲打一堆的指令與參數,才能使虛擬電腦正常運作,除此之外,如果虛擬電腦本身沒有提供 console 的連線模式,即使利用 virsh 啟動了虛擬電腦,還是無法連線到虛擬電腦之內(相對來說, kvm 指令還會跳出虛擬電腦的視窗畫面),這就顯得無法利用虛擬電腦來做任何事,更別說要提供服務了。


不過,如果真的是這樣,那麼 RedHat 這家公司,就不需要花費力氣來維護它了,還記得,前面有提到,virsh 是由 libvirt 所提供的操作指令,而 libvirt 則是由 RedHat 公司所維護,既然知道 virsh 本身存在使用上的缺陷,RedHat 當然不會放著不管,而 virt-manager 就是 RedHat 針對 Linux KVM 所提供的視窗管理工具,本身也是 Open Source ,一樣依循 libvirt 所制定的標準,所以可以完整的操作 Linux KVM



安裝 virt-manager(以 Ubuntu Desktop 10.04 為例)


開啟終端機,並輸入以下指令:


sudo apt-get install virt-manager


按下 Enter 之後,若系統提示輸入密碼,請輸入管理者密碼,系統會顯示要安裝的套件與函 式庫,並會提示是否要安裝以上套件,請輸入 y ,讓安裝程序可以順利安裝下去。


備註1:上述是利用 Ubuntu 套件庫來進行線上安裝,不過,這種安裝方式有一個缺點,就是所安裝的套件,往往不會是最新版本,以 virt-manager 來說,由於版本更新速度很快,相對來說,程式的 Bug 也相對應的比較少,因此,有時候,以手動編譯的模式來安裝套件,是必要的!以 virt-manager 來說,若需要以手動編譯來安裝,必須先利用 Ubuntu 線上套件庫安裝一些必要的套件(build-essential python-libvirt python-gtk-vnc python-gnome2-desktop-dev python-urlgrabber intltool libxml2-dev libvirt-dev libgtk2.0-dev libglade2-dev libgtk-vnc-1.0-dev)之後,才下載 virt-manager 的原始碼來編譯安裝,這樣 virt-manager 才能正常運作。而必要套件安裝完之後,再下載 virt-manager-0.8.7.tar.gzvirtinst-0.500.6.tar.gzvirt-viewer-0.2.0.tar.gz ,依序下載、編譯與安裝(上述版本為撰寫此文時的最新版本,而利用線上安裝的方式,則 virt-manager 的版本則為 0.8.2)。



檢視圖形視窗管理工具


安裝完成之後,第一件事,就是修改 virt-manager (中文介面翻譯為〝虛擬機器管理員〞)的啟動權限,原因是因為 virt-manager 的許多設定與檔案讀取、寫入的路徑,都需要管理員的權限,所以先設定 virt-manager 的啟動權限,以減少日後不必要的困擾。由工具列的「系統」「偏好設定」「主選單」,開啟設定視窗,點選「選單(M)」欄位的〝系統工具〞,接著在「項目(E)」欄位點選〝虛擬機器管理員〞,再按下「屬性(P)」:



在跳出的視窗中,在「指令(A)」的欄位修改為〝gksudo virt-manager〞,按下「關閉(C)」後跳出設定:




權限設定完成之後,可以由工具列的「應用程式」「系統工具」「虛擬機器管理員」,來啟動 Linux KVM 的圖形視窗管理程式,第一次開啟,系統會提示輸入管理者密碼,如下圖:




管理者密碼輸入之後,按下確定,就會出現 Linux KVM 的圖形視窗管理程式:




不過,這時,如上圖紅色框框的區域,顯示目前虛擬系統是〝Not Connectedt〞的狀態,這時並無法使用虛擬系統,將〝localhost〞的名稱反白之後,按下滑鼠右鍵,點下「連線(O)」之後,虛擬系統才能正常運作:






接著點選「名稱」欄位內的〝localhost〞之後,再點選工具列上的「編輯(E)Connection Details」,就可以開啟整個 Linux KVM 的環境設定頁面,包含「簡介」、「虛擬網路」與「Storage」三大頁面:


簡介:主要在說明目前虛擬系統所在主機的基本架構與資源使用狀況

虛擬網路:虛擬系統所能使用的網路設備與該設備的網路設定

Storage:虛擬系統所能使用的儲存空間大小與檔案位置



新增虛擬電腦


回到虛擬機器管理員,現在我們要利用此視窗管理工具來新增虛擬電腦,按下工具列上的有亮點的電腦圖示,這就是新增虛擬電腦的地方:




一、定義名稱


按下之後,系統會跳出一個〝New VM〞的獨立視窗,上面也有說明,只要五個步驟,就可以新增一台虛擬電腦,首先在「Name」的欄位,填入虛擬電腦的名稱,而這個名稱,會顯示在〝virsh list --all〞指令輸出的畫面上,也是日後控制虛擬電腦的主要名稱,名稱設定完成之後,下方有三種作業系統的安裝模式可以選擇,分別為:


1. 本機安裝媒體( ISO 映像檔或光碟):就是一般利用光碟或是 ISO 檔案來安裝作業系統

2. Network Install HTTP, FTP, or NFS):利用網路磁碟裝置來安裝作業系統

3. Network Boot PXE ):網路開機


在這邊選擇「本機安裝媒體」的方式來安裝作業系統,選擇之後,按下〝下一步〞:




二、選擇作業系統來源與系統類型


由於上一步驟選擇以本機安裝媒體來安裝虛擬電腦的作業系統,事先已經在系統內放置了 Ubuntu Server ISO 檔案,所以就選擇「Use ISO image」來安裝作業系統,而按下〝Browse〞來選擇 ISO 檔案的所在位置,這時系統會跳出另一個設定視窗,來選擇(找尋)ISO 檔案,系統預設會存在一個〝default〞的 Storage,這是 Linux KVM 一安裝完成就會產生的預設資料夾,其資料夾位置在〝/var/lib/libvirt/images〞,不過,這裡並不只可以存放 ISO 映像檔,當虛擬電腦產生之後,其預設的硬碟檔案也會存放在這個位置,所以,就管理的角度來說,若將所有的檔案全部放在這裡,是會造成日後管理上的困難,這點之後再詳述,直接往下找〝Browse Local〞的按鍵,按下之後,會出現類似檔案總館的視窗,找尋並點選實際 ISO 檔案的位置,之後按下〝開啟〞就好,接著在「OS type」的地方,選擇作業系統的類型,而「Version」則選擇作業系統的版本,接著按下〝下一步〞:




三、設定記憶體大小與可用 CPU 的數量


在「Memory」的地方,設定虛擬電腦的記憶體大小,而「CPUs」則設定 CPU 的數目(若實體電腦為雙核心 CPU 以上時,才可選擇),接著按〝下一步〞:




四、設定硬碟檔案的大小


這邊就要設定虛擬電腦可運用的硬碟空間大小,系統預設為 8GB ,而〝Allocate entire disk now〞這個選項如果勾選(預設),就表示要將硬碟空間一次就切割到指定的大小(如預設的 8GB ),基本上,除非此虛擬電腦日後要運作資料流量大的服務(如資料庫),或者你的硬碟空間真的大到用不完,一般倒是可以不需要勾選此項,取消勾選之後,再接著按〝下一步〞:




備註2:另一個選項「Select managed or other existing storage」,這是在已經存在可利用的硬碟檔案時,才選此項,並指定硬碟檔案。


五、偏好設定


最後一個步驟,若沒有特別需求,是可以直接按下「完成(F)」,就結束虛擬電腦的建立,進入安裝作業系統的階段,不過,下方〝Advanced options〞,可是包含蠻重要的設定選項,點開之後,就可以看到如下圖的資訊:




這裡包含了網路連線方式的選擇、MAC address 的設定,以及虛擬系統的運作類型(Virt Type)和系統平台類型(Architecture


備註3:若實體電腦支援 Linux KVM ,則預設 Virt Type 是〝kvm〞,反之則是〝qemu


最後按下「完成(F)」,虛擬電腦就新增完成,並且進入作業系統安裝的階段,由視窗管理工具就可以知道:




或者點一下虛擬電腦的圖示:




再按下工具列上「開啟」的電腦圖示,就可以看到整個虛擬系統的運作畫面:





檢視虛擬電腦資訊


雖然,在建立虛擬電腦的過程中,我們清楚了解到虛擬電腦的各項硬體設定(是自己設定的,當然清楚),不過,難免會有需要異動或需要修改的時候,那麼該怎麼進入設定頁面呢?很簡單,在剛剛啟動虛擬電腦之後,按下「開啟」的電腦圖示,不是就可以看到整個虛擬系統的運作畫面,接著在此頁面上方的工具列,依序「檢視(Y)Toolbar」,就可以叫出工具列,而按下工具列上「i」的圖示(如下圖紅色框框所示),就可以看到完整虛擬電腦的硬體資訊了:





關閉虛擬電腦


而除了正常在虛擬電腦內執行關機動作之外,視窗管理工具也可以直接關閉整在運作的虛擬電腦,但有意思的是,實際關閉的指令,卻不是大家熟悉的「Shut Down」,而是更為強烈的字眼,「Force Off」,操作順序為點選要關閉的虛擬電腦,按下滑鼠右鍵,選擇「Shut DownForce Off」,就可以在視窗管理工具上關閉虛擬主機,不過,讀者們可能會發現,不是在「Force Off」 之上,有「Shut Down」的選項嗎?不過,至少在目前 Linux KVM 的視窗管理工具上,這個選項是沒有作用的!





「Shut Down」選項的限制

其實,virt-manager 的「Shut Down」選項,之所以無法使用,原因在於虛擬電腦的作業系統之內,缺乏〝acpid〞這一個套件,且並不是目前所有的 Linux 發行套件預設都會安裝,以 Ubuntu 發行套件來說,系統預設就沒有安裝此一套件,若要 virt-manager 能夠針對安裝 Ubuntu 系統的虛擬電腦,利用「Shut Down」的選項來關閉虛擬電腦,就必須在虛擬電腦之內安裝〝acpid〞這一個套件,其安裝方式如下:

$ sudo apt-get install acpid

安裝完成,將虛擬電腦重新開機,之後若要利用 virt-manager 來關閉虛擬電腦,就可以使用「Shut Down」的選項了。


遺失安裝訊息處理方式


有時在安裝的過程中,或者一開始尚未安裝作業系統的時候,就關閉了虛擬電腦,下次在開機的時候,一般會看到如下的訊息:




這是什麼原因呢?說穿了,就是遺失開機訊息,這是因為硬碟檔案內沒有作業系統與開機訊息,加上前次關閉虛擬電腦之後,光碟或 ISO 檔案就已經退出虛擬電腦,再次開機,當然找不到可開機的媒體,就會出現上圖的訊息。


處理方式為,先進入虛擬電腦硬體資訊頁面,並點選左側「IDE CDROM 1」的選項,在這邊可以發現到右側資訊頁面,並沒有存在任何光碟或 ISO 檔案的訊息,接著按下「連線(O)」:




就可以選擇光碟或找尋可開機的 ISO 檔案,選擇完成,訊息頁面就會出現光碟或 ISO 檔案的資訊:




還沒結束喔,接著再點選左側「Boot Options」的選項,並在右側訊息頁面的「開機裝置」,選擇〝CDROM〞,並按下右下方的「套用」,這一步驟可不要忘記喔,不然剛剛所有的設定可是會消失的,這樣就白做工了:




最後,按下工具列上「」的圖示,就可以正常開機啦。