XenServer部署系列之03添加本地存儲服務器
做業環境網絡
服務器#1ide
OS:XenServer 6.2性能
Hostname:xsr01ui
Eth0 IP:192.168.0.241/24spa
Gateway:IP:192.168.0.1/24設計
1、關於XenServer存儲3d
XenServer的安裝過程,沒有分區的操做,系統安裝完成後,查看磁盤狀況,會發現,即使是1T的硬盤,也只留了4G的空間,而且XenServer系統文件就已經佔用了其中的1.9G,只剩下2G的小得可憐的空間,連一個CentOS6.5的系統鏡像都放不下。放不了ISO鏡像文件,那怎麼能安裝虛擬機呢?對於初學者而言,這是個頭疼的問題。rest
據資料介紹,XenServer的默認分區通常由三部分組成:第一個4G分區爲XenServer根分區;第二個4G分區爲升級操做的備份分區;第三個分區通常爲磁盤的剩餘空間,用於Local Storage使用。後二者都是看不見、不用做於其餘存儲的。
orm
那麼,XenServer如何實現存儲擴充呢?在XenServer中的引入存儲倉庫的概念,存儲倉庫(SR - Storage Repositories)是用來存儲ISO或者VDI的。Citrix官方推薦使用共享存儲,這也是XenServer設計的初衷和目標,與VMWare的產品設計很不相同。目前XenServer支持FC SAN、ISCSI SAN和NFS三種存儲類型,根據虛擬化類型不一樣,劃分不一樣的LUN類型來知足使用。此處涉及到存儲服務器,對設備成本是有要求的。
若是應用環境相對簡單,好比說,只有一臺Dell R720服務器,那又該如何把XenServer玩起來呢?方法固然是有的,就是經過添加一個硬盤,來達到擴充存儲的效果。
2、添加第二塊硬盤
本案中,添加一個大小爲300G的SAS硬盤,現要將其劃分兩個分區,分別掛載到/iso和/data兩個目錄,前者用於存放iso鏡像存儲,以做爲本地ISO存儲庫;後者用做數據存儲,用於存放導出的虛擬機模板。
添加硬盤的操做命令及過程,跟Red Hat Linux是同樣的,按劃分分區、激活分區、格式化分區、加載分區的步驟操做一遍,屬於基本操做,就不詳述了。
如下是本案添加硬盤、分區的命令,沒用到lvm,操做相對簡單。
fdisk -l
fdisk /dev/sdb
partx -a /dev/sdb (在這裏將sdb劃分爲sdb一、sdb2兩個分區)
cat /proc/partitions
mkfs.etx3 /dev/sdb1
mkfs.ext3 /dev/sdb2
mkdir /iso
mkdir /data
vi /etc/fstab (在這裏將sdb一、sdb2寫入到加載列表)
mount –a
操做完成後,結果顯示以下(注:我這裏兩個分區都已經裝有數據了):
3、添加本地ISO儲存倉庫
下面爲該XenServer服務器創建一個本地iso檔型式的儲存倉庫。其實也很簡單。
首先,登入console,執行如下指令,建立存儲倉庫,
xe sr-create name-label=< Name of the SR > type=iso device-config:location=<Storage Directory> 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鏡像進行系統安裝了。以下圖所示。
4、刪除本地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=<Name of the SR>
其次,肯定對應PBD的UUID:
xe pbd-list sr-uuid=<UUID of SR>
再次,斷開PBD:
xe pbd-unplug uuid=<UUID of PBD>
最後,刪除記錄
xe sr-forget uuid=<UUID of SR>
注,也能夠在XenCenter上右擊對應的SR,若是Forget是可選項的話,點擊Forget便可。
本案中具體的命令以下圖所示。
5、添加本地虛擬機儲存倉庫
本案中,安裝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/<sdbx> host-uuid=<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/<scsi-xxxxxxxxxxxxxx> host-uuid=<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上。以下圖所示。關於如何建立虛擬機,後續篇章再述,此處略過。
6、刪除本地lvm儲存倉庫
操做過程,與刪除本地iso儲存倉庫相同,使用前文已述的命令:
首先, 運行下面的命令來肯定SR的UUID:
xe sr-list name-label=<Name of the SR>
其次,肯定對應PBD的UUID:
xe pbd-list sr-uuid=<UUID of SR>
再次,斷開PBD:
xe pbd-unplug uuid=<UUID of PBD>
最後,刪除記錄
xe sr-forget uuid=<UUID of SR>
本案中具體的命令以下圖所示。
7、其餘
本案中,sdb2的定位本是做爲單純的數據存儲的,用於存儲導出的後綴爲.xva的虛擬機文件的。也就是常規Linux系統中的數據空間。所以XenServer默認的可用數據空間實在過小了,只有4G。
在筆者的實驗環境中,sdb2是一直做爲數據存儲空間用的,存放了不少資料,但通過上述第5、六兩步的操做,再試圖將sdb2 mount到系統做爲數據空間裏,出錯,系統提示說「mount: you must specify the filesystem type」。悲劇啊,這個分區的格式被改了。
xe sr-create content-type=user device-config:device=/dev/disk/by-id/<scsi-xxxxxxxxxxxxxx> host-uuid=<host-uuid> name-label="Local Storage 2" shared=false type=lvm
這條命令指定sdb2的類型爲lvm,但lvm顯然不是分區格式,不能被掛載。暫時沒找到解決的方法,只好使用命令mkfs.ext3 /dev/sdb2將其從新格式化了。
注,在之後的篇章中,sdb2均是做爲數據存儲空間,被掛載到目錄/data上使用的。