XenServer部署系列之03添加本地存儲
作業環境
服務器#1
OS:XenServer 6.2
Hostname:xsr01
Eth0 IP:192.168.0.241/24
Gateway:IP:192.168.0.1/24
一、關于XenServer存儲
XenServer的安裝過程,沒有分區的操作,系統安裝完成后,查看磁盤情況,會發現,即便是1T的硬盤,也只留了4G的空間,并且XenServer系統文件就已經占用了其中的1.9G,只剩下2G的小得可憐的空間,連一個CentOS6.5的系統鏡像都放不下。放不了ISO鏡像文件,那怎么能安裝虛擬機呢?對于初學者而言,這是個頭疼的問題。
據資料介紹,XenServer的默認分區一般由三部分組成:第一個4G分區為XenServer根分區;第二個4G分區為升級操作的備份分區;第三個分區一般為磁盤的剩余空間,用于Local Storage使用。后兩者都是看不見、不用作于其他存儲的。
那么,XenServer如何實現存儲擴充呢?在XenServer中的引入存儲倉庫的概念,存儲倉庫(SR - Storage Repositories)是用來存儲ISO或者VDI的。Citrix官方推薦使用共享存儲,這也是XenServer設計的初衷和目標,與VMWare的產品設計很不相同。目前XenServer支持FC SAN、ISCSI SAN和NFS三種存儲類型,根據虛擬化類型不同,劃分不同的LUN類型來滿足使用。此處涉及到存儲服務器,對設備成本是有要求的。
如果應用環境相對簡單,比如說,只有一臺Dell R720服務器,那又該如何把XenServer玩起來呢?方法當然是有的,就是通過添加一個硬盤,來達到擴充存儲的效果。
二、添加第二塊硬盤
本案中,添加一個大小為300G的SAS硬盤,現要將其劃分兩個分區,分別掛載到/iso和/data兩個目錄,前者用于存放iso鏡像存儲,以作為本地ISO存儲庫;后者用作數據存儲,用于存放導出的虛擬機模板。
添加硬盤的操作命令及過程,跟Red Hat Linux是一樣的,按劃分分區、激活分區、格式化分區、加載分區的步驟操作一遍,屬于基本操作,就不詳述了。
以下是本案添加硬盤、分區的命令,沒用到lvm,操作相對簡單。
fdisk -l
fdisk /dev/sdb
partx -a /dev/sdb (在這里將sdb劃分為sdb1、sdb2兩個分區)
cat /proc/partitions
mkfs.etx3 /dev/sdb1
mkfs.ext3 /dev/sdb2
mkdir /iso
mkdir /data
vi /etc/fstab (在這里將sdb1、sdb2寫入到加載列表)
mount –a
操作完成后,結果顯示如下(注:我這里兩個分區都已經裝有數據了):
三、添加本地ISO儲存倉庫
下面為該XenServer服務器建立一個本地iso檔型式的儲存倉庫。其實也很簡單。
首先,登入console,執行以下指令,創建存儲倉庫,
xe sr-create name-label=< Name of the SR > type=iso device-config:location= device-config:legacy_mode=true content-type=iso
再執行以下命令,重啟toolstack,
xe-toolstack-restart
這樣XenCenter中才會同步顯示iso檔。但筆者在實踐中,發現很多時候不執行該命令也無所謂。注:執行這個命令,網絡會掉線3秒左右,然后自己恢復。
本案中具體的命令下圖所示,這里定義項目名稱為“boot-iso”,其對應的存儲目錄為“/iso”。系統返回一個UUID(這個UUID在XenCenter上選擇對應的SR然后選擇“常規”選項可以看到),表示操作成功。
新增成功,在XenCenter中,可以看到多了一個名為“boot-iso”的項目,在其右側內容框,切換到“Storage”選項,此時框內的列表內容為空,點擊“Rescan”按鈕,可以看到已上傳到目錄/iso的iso鏡像以列表形式顯示。此后,新上傳iso鏡像到/iso目錄,在XenCenter中,點擊此處的“Rescan”重新掃描,即可看到。
筆者在實踐過程中,曾出現過以下情況:
Rescan后,列表內容仍然為空,到系統中一查,發現目錄/iso對應的/dev/sdb1已經自動被umount了,使用命令mount /dev/sdb1或mount –a(前提是已經在/etc/fstab文件中填寫了掛載目錄),再在XenCenter中Rescan,可看到鏡像列表。
這種情況是在執行命令xe sr-create name-label=boot-iso type=iso device-config:location=/iso device-config:legacy_mode=true content-type=iso后發生的。之后,即使是重啟系統,也不會再出現自動umount的情況。當然,如果是在/iso下再建一個iso文件夾,將目錄/iso/iso作為boot-iso的話,在執行以下xe sr-create命令時,就不會出現這種情況了。
另外,有些資料說到,在添加本地ISO儲存的操作前,要在XenServer本地開啟nfs服務,把寫/iso目錄寫入到/etc/exports文件里,以使得該目錄成為nfs共享目錄。但是筆者在實踐中,這個操作不做,并沒影響。
本地ISO存儲庫添加成功后,通過XenCenter新建虛擬機時,在“Installation Media”一步中,便可以選擇里面的本地ISO鏡像進行系統安裝了。如下圖所示。
四、刪除本地ISO儲存倉庫
這里先科普一下。
在XenServer中,基本的存儲庫(SR)、物理塊設備、虛擬磁盤映像、虛擬塊設備之間的關系如下圖:
其中,PBD為物理存儲設備的抽象,基本無法改變,SR為XenServer對物理存儲設備的抽象,起到組織管理的作用,SR的類型對虛機VDI的格式以及性能有一定的影響,但是SR的類型受限制于物理存儲的形式,所以,暫停也跳過,VBD與VDI對應,而最終VM拿到的虛擬塊設備VBD,則為VDI的虛擬,所以,SR中VDI的格式對存儲空間消耗以及性能產生比較重要的影響。
存儲倉庫通過物理塊設備(PBD)與XenServer相連接,PBD包含了存儲倉庫(SR)的配置信息。當要從XenServer主機上分離或者刪除SR之前,很有必要先將PBD斷開。
如果建立錯誤,或要重復新增,想刪除儲存倉庫時,在CenCenter中,右擊對應的SR選擇Detach。如果Detach不是一個可選項,那么這個SR正被占用著(對ISO類型的SR來說有DVD掛載著,或者說有虛擬機正在其上運行著)。如果你已經分離了所有DVD驅動上的ISO并且停止了所有運行在此SR上的所有虛機,按照以下命令進行操作即可刪除本地ISO存儲庫。
首先, 運行下面的命令來確定SR的UUID:
xe sr-list name-label=
其次,確定對應PBD的UUID:
xe pbd-list sr-uuid=
再次,斷開PBD:
xe pbd-unplug uuid=
最后,刪除記錄
xe sr-forget uuid=
注,也可以在XenCenter上右擊對應的SR,如果Forget是可選項的話,點擊Forget即可。
本案中具體的命令如下圖所示。
五、添加本地虛擬機儲存倉庫
本案中,安裝XenServer系統的硬盤大小為1T,自身存放10來個虛擬硬盤為50G的虛擬機不成問題。但在實際應用中,由于通過nfs等方式使用異地存儲,本地硬盤用作存放虛擬機的元數據,因此安裝XenServer系統的硬盤,即sda,一般都不會用大容量硬盤,以免浪費。
但是,假如只有一臺服務器用來搭建XenServer平臺,且作為系統使用盤的sda容量比較小的話(比如說是一個146G的SAS硬盤),就需要通過增加硬盤設備(比如增加一個大小為300G的SAS硬盤,即sdb),以提供足夠的存儲空間給新增的虛擬機。
本案中已增加了一個硬盤sdb,并劃分了兩個分區sdb1和sdb2,格式化并掛載了,sdb1被用作ISO存儲倉庫,下面以sdb2來演示如何增加本地lvm儲存倉庫(通常把這個操作說成是,增加本地存儲Local Storage)。本地Lvm儲存倉庫,是可以被用來存儲新增的虛擬機的。
操作其實也很簡單,與增加ISO存儲庫類似。
首先,登入console,執行以下指令,查看本機的host uuid,
xe host-list
然后執行創建存儲倉庫的命令
xe sr-create content-type=user device-config:device=/dev/ host-uuid= name-label="Local Storage 2" shared=false type=lvm
注,另一種方法,可通過分區的序列號來實現,
xe host-list
ll /dev/disk/by-id (這一步查看硬盤的信息)
xe sr-create content-type=user device-config:device=/dev/disk/by-id/ host-uuid= name-label="Local Storage 2" shared=false type=lvm
本案中具體的命令下圖所示,這里定義項目名稱為“Local Storage 2”,其對應的設備分區為sdb2。系統返回一個UUID(這個UUID在XenCenter上選擇對應的SR然后選擇“常規”選項可以看到),表示操作成功。
注:這里由于sdb2在開始時,作為數據空間被加載了,導至sr-create命令無效。需要先把sdb2 umount,再進行操作。
新增成功,在XenCenter中,可以看到多了一個名為“Local Storage 2”的項目。XenServer的默認Storage是“Local Storage”,即sda,在“Local Storage 2”右擊工菜單中有一個選項“Set as Default”可將其設置為默認存儲。
以后,在新建虛擬機時,在為其分配虛擬硬盤時,既可以選擇存儲在Local Storage上,也可以選擇存儲在Local Storage 2上。如下圖所示。關于如何創建虛擬機,后續篇章再述,此處略過。
六、刪除本地lvm儲存倉庫
操作過程,與刪除本地iso儲存倉庫相同,使用前文已述的命令:
首先, 運行下面的命令來確定SR的UUID:
xe sr-list name-label=
其次,確定對應PBD的UUID:
xe pbd-list sr-uuid=
再次,斷開PBD:
xe pbd-unplug uuid=
最后,刪除記錄
xe sr-forget uuid=
本案中具體的命令如下圖所示。
七、其他
本案中,sdb2的定位本是作為單純的數據存儲的,用于存儲導出的后綴為.xva的虛擬機文件的。也就是常規Linux系統中的數據空間。因此XenServer默認的可用數據空間實在太小了,只有4G。
在筆者的實驗環境中,sdb2是一直作為數據存儲空間用的,存放了很多資料,但經過上述第五、六兩步的操作,再試圖將sdb2 mount到系統作為數據空間里,出錯,系統提示說“mount: you must specify the filesystem type”。悲劇啊,這個分區的格式被改了。
xe sr-create content-type=user device-config:device=/dev/disk/by-id/ host-uuid= name-label="Local Storage 2" shared=false type=lvm
這條命令指定sdb2的類型為lvm,但lvm顯然不是分區格式,不能被掛載。暫時沒找到解決的方法,只好使用命令mkfs.ext3 /dev/sdb2將其重新格式化了。
注,在以后的篇章中,sdb2均是作為數據存儲空間,被掛載到目錄/data上使用的。