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

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

2 則留言:

  1. 可否請問,如果指定虛擬電腦的磁碟容量(增量模式)大於實體磁碟的容量,會出現什麼問題?

    回覆刪除
  2. 想請問一下 KVM 有 support HOST failover 嗎?
    找了一些資料 只找到對於share storage 做failover

    回覆刪除