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上使用的。