图解xenserver的SR,VDI,VBD之间的关系
今天在xenserver5.6下给一ubuntu VM添加virtual disk时提示不能添加,如下图
查了下文档原来是因为每个VM都有disk数量的限制
The current version of the XenServer product family has the following general limitations on virtual devices
for VMs. Note that specific guest operating systems may have lower limits for certain features. These
limitations are noted in the individual guest installation section.
*A maximum of 8 VCPUs are supported by XenCenter.
*except for SLES 10 SP1 and RHEL 4.x, which support 3. RHEL 5.0/5.1/5.2 support 3, but can support 7 when the kernel is patched with the Citrix Tools for Virtual Machines. The same applies for Oracle and CentOS 5.0/5.1/5.2
google了下,发现虽然不能通过xencenter添加,但是xenserver也支持CLI命令行的方式来管理。在使用xe命令添加vdisk时,首先需要理解xenserver下的SR,VDI,VBD这三个概念。如下图
存储库 (SR)
虚拟磁盘映像 (VDI)
物理块设备 (PBD)
虚拟块设备 (VBD)
下面就以图形来说明这些术语之间的关系。
1、SR
定义了一个名为存储库 (SR) 的容器来描述存储虚拟磁盘映像 (VDI) 的特定存储目标。SR 具有对本地连接的 IDE、SATA、SCSI 和 SAS驱动器和远程连接的 iSCSI、NFS、SAS 和光纤通道的内置支持,因而非常灵活。
利用xe命令看到如下信息,部分显示内容被省略
[root@xs-10 ~]# xe sr-list
[root@xs-10 ~]# xe sr-list name-label=xenserver
uuid ( RO) : 0554628e-448d-fbdf-4544-04cc4f390529
name-label ( RW): xenserver
name-description ( RW): iSCSI SR [172.20.10.107 (iqn.2007-10.uit.com:techtest.xenserver)]
host ( RO): xs-10.8
type ( RO): lvmoiscsi
content-type ( RO):
uuid ( RO) : c2b41896-467e-b936-6836-754eb22d36de
name-label ( RW): vmware vsphere
name-description ( RW): CIFS ISO Library [\\172.20.1.249\software\ISO\vmware vsphere]
host ( RO): xs-10.8
type ( RO): iso
content-type ( RO): iso
uuid ( RO) : 4188b1ee-76bc-10ed-dc15-6c7a236ce9aa
name-label ( RW): Ubuntu
name-description ( RW): CIFS ISO Library [\\172.20.1.249\software\ISO\linux\Ubuntu]
host ( RO): xs-10.8
type ( RO): iso
content-type ( RO): iso
结合图形,不难理解,所谓的SR就是一个存储仓库,里面存储了很多的ISO文件,你可以利用这些ISO文件来存储东西,如vmware vsphere、ubuntu这两个SR。又或者当做存储虚拟机文件的仓库,例如xenserver这个SR。下面接着看SR下一层的对象,叫做VDI
2、VDI
虚拟磁盘映像是显示给 VM 的存储抽象,VDI 是 XenServer 中的虚拟化存储的基本单元。
下面我们看一下Ubuntu这个SR存储库中有哪些VDI,即VDI是包含在SR中的。
[root@xs-10 ~]# xe vdi-list sr-uuid=4188b1ee-76bc-10ed-dc15-6c7a236ce9aa
uuid ( RO) : 5b5bd9b4-b061-4e55-ab8f-a6e685358357
name-label ( RW): ubuntu-11.04-desktop-i386.iso
name-description ( RW):
sr-uuid ( RO): 4188b1ee-76bc-10ed-dc15-6c7a236ce9aa
virtual-size ( RO): 718583808
sharable ( RO): false
read-only ( RO): true
uuid ( RO) : a81d7dcc-27bb-45cc-8c8b-c761cb1f1a04
name-label ( RW): ubuntu-11.10-desktop-amd64.iso
name-description ( RW):
sr-uuid ( RO): 4188b1ee-76bc-10ed-dc15-6c7a236ce9aa
virtual-size ( RO): 731164672
sharable ( RO): false
read-only ( RO): true
uuid ( RO) : 98354aff-f259-4ba4-8617-fb53cc6c08b7
name-label ( RW): ubuntu-10.04.3-server-i386.iso
name-description ( RW):
sr-uuid ( RO): 4188b1ee-76bc-10ed-dc15-6c7a236ce9aa
virtual-size ( RO): 704217088
sharable ( RO): false
read-only ( RO): true
部分省略。。。
ubuntu这个SR所包含的VDI截图如下
而xenserver这个SR下面含有如下的VDI
可以看到VDI。由截图不难看出,所谓的VDI就是里面的ISO文件或虚拟机的硬盘文件。下面我们继续vbd
3、VBD
虚拟块设备是连接器对象(与上述的 PBD 类似),可用于在 VDI 和 VM 之间进行映射。VBD 还可用于微调给定 VDI 的 QoS(服务质量)、统计数据和可引导性等相关参数。
上文中讲述的VDI只是一些ISO文件或虚拟机的硬盘文件,这些文件如果单独放在一起是没有任何价值的。正如描述中的那样,VBD是用在VDI和VM之间的映射,如果没了这层映射,光有VDI也是不行的。
利用xe命令查看“UCA-VM-10.24”这个主机含有哪些VBD,首先查看UCA-VM-10.24的UUID号
[root@xs-10 ~]# xe vm-list name-label=UCA-VM-10.24
uuid ( RO) : 89577946-f487-76a6-387e-86daaca15bef
name-label ( RW): UCA-VM-10.24
power-state ( RO): halted
再查看
[root@xs-10 ~]# xe vbd-list vm-uuid=89577946-f487-76a6-387e-86daaca15bef
uuid ( RO) : a798413b-df47-9fb5-4b4d-56539a26eaf2
vm-uuid ( RO): 89577946-f487-76a6-387e-86daaca15bef
vm-name-label ( RO): UCA-VM-10.24
vdi-uuid ( RO): 34fc2c1c-a3aa-43c7-95e4-b8bf6603e52f
empty ( RO): false
device ( RO): hda
uuid ( RO) : 5a702417-e40e-ac62-c282-9b89bf8cb7b6
vm-uuid ( RO): 89577946-f487-76a6-387e-86daaca15bef
vm-name-label ( RO): UCA-VM-10.24
vdi-uuid ( RO): <not in database>
empty ( RO): true
device ( RO): hdd
uuid ( RO) : 07fe6b36-c836-d99e-e3ea-8b8eda2fe134
vm-uuid ( RO): 89577946-f487-76a6-387e-86daaca15bef
vm-name-label ( RO): UCA-VM-10.24
vdi-uuid ( RO): 56c1b396-4776-4b43-ba8f-42870669055e
empty ( RO): false
device ( RO): hdc
uuid ( RO) : 49d4e02d-f7e6-ec4a-235e-16bcddb64a99
vm-uuid ( RO): 89577946-f487-76a6-387e-86daaca15bef
vm-name-label ( RO): UCA-VM-10.24
vdi-uuid ( RO): 6ee51222-6ae4-4614-b337-1b22bf340098
empty ( RO): false
device ( RO): hdb
可以看出上面的VBD其实将第2节中的VDI和UCA-VM-10.24这个虚拟机做了个映射。也就是说如果我将上图中的disk1这个VDI attach到另一个主机如SQL Server,则VDI不变,而你用xe vbd-list 这个命令查看UCA-VM-10.24这个主机时,会发现少了一个VBD,而SQL Server主机会多了一个VBD。
知道了如上的原理,接下来添加virtual disk就好办了,步骤很简单:
1、在某个SR下面建新的vdi,命名为disk3,其实就是创建虚拟机的硬盘文件
xe vdi-create name-label=disk3 type=user sr-uuid=0554628e-448d-fbdf-4544-04cc4f390529 virtual-size=4GiB
5b4dfa6a-17f0-4207-b7f2-9d205f4517a9--新的VDI的UUID
2、利用新得到的vdi号创建新的vbd,其实就是为上一步创建的硬盘文件和虚拟机之间做映射
[root@xs-10 ~]# xe vbd-create vdi-uuid=5b4dfa6a-17f0-4207-b7f2-9d205f4517a9 device=5 vm-uuid=89577946-f487-76a6-387e-86daaca15bef
9bcad328-4006-fb95-eea8-87de94bf0ff8
3、将创建的vbd plug即可。
[root@xs-10 ~]# xe vbd-plug uuid=9bcad328-4006-fb95-eea8-87de94bf0ff8
You attempted an operation on a VM which requires PV drivers to be installed but the drivers were not detected.
vm: 89577946-f487-76a6-387e-86daaca15bef (UCA-VM-10.24)
转载于:https://blog.51cto.com/taotao1240/888387