云服务虚拟机创建(备忘一)

虚拟化服务器部分相关的内容,简单整理下创建虚拟机这块的业务。

用户购买完云服务虚拟机后,会调用commander(生成指令的项目)将用户购买的虚拟机的配置信息进行处理,此处的处理指的是生成虚拟机磁盘操作指令,cfg虚拟机的配置文件,以及执行开机指令创建虚拟机。

指令生成后,进行cfg配置文件的生成,cfg配置文件分为模板安装和光盘安装分为两种格式,使用Java自带的VelocityHelper进行数据的模板话替换,生成所需的cfg文件。(生成的cfg文件路径为物理机挂载路径)。

通过MQ消息中间件,将生成的指令信息,以及所需的其他参数,发送到对应资源满足的宿主物理机上的agent中,agent收到创建云服务的消息后,解析获得的消息信息,获取对应的指令和参数。直接执行指令操作,并将指令结果,即云服务虚拟机是否创建成功结果返回给commander系统。

commander收到云服务创建的结果后,根据回调URL,调用UCenter中接口修改云服务以及云服务操作记录表。

 

创建虚拟机,分为模板创建和光盘安装两种方式。

以模板创建,创建两块磁盘为例。第一块磁盘命名为sda,第二块磁盘命名为sdb,依此类推,最多三块磁盘。若为光盘安装,则在此基础上另加一块sdd的光盘对应的磁盘。

第一步先执行移动磁盘的指令,将模板池中对应的已经生成的磁盘模板,移动到要安装的路径(磁盘路径)下。如果是0 lvm块磁盘,则  磁盘路径 = 存储池路径 + /-  + 磁盘名称;如果是文件磁盘,则  磁盘路径 = 存储池路径 + 磁盘名称:

mv /storage/templatePool/sys/Windows2003_RD_Temp/Windows2003_RD_Temp_complete vg0/-server_a9o37pv26a8vya51_sda

mv /storage/templatePool/sys/Windows2003_RD_Temp/Windows2003_RD_Temp_complete /storage/nfs/server_a9o37pv26a8vya51_sda

第二步,执行创建磁盘的指令,块磁盘对应lvcreate指令 或 文件磁盘对应qemu-img指令:

lvcreate -L 10G -n server_8y2x916102u47zm1_sdb vg0

qemu-img create -f raw /storage/nfs/server_8y2x916102u47zm1_sda 10G

第三步,执行开机指令,xl create:

xl create /storage/nfs/XML/server_8y2x916102u47zm1.cfg

如果为光盘安装,则没有第一步mv移动磁盘的指令,直接根据文件磁盘或块磁盘执行创建磁盘指令,以及开机指令。

 

Commander发给agent要执行的指令示例如下:

{

    "dataDisk": [

        "lvcreate -L 10G -n server_a9o37pv26a8vya51_sdb vg0"

    ],

    "param": [

        {

            "memCapacity": "1024",

            "templatesPoolPath": "/storage/templatePool/sys/Windows2003_RD_Temp/"

        }

    ],

    "systemDisk": "mv <templatesPoolPath> /storage/nfs/server_a9o37pv26a8vya51_sda",

    "xenCommand": "xl create /storage/nfs/XML/server_a9o37pv26a8vya51.cfg"

}

 

{

    "dataDisk": [

        "lvcreate -L 10G -n server_8y2x916102u47zm1_sdb vg0",

        "qemu-img create -f raw /storage/nfs/server_8y2x916102u47zm1_sda 10G"

    ],

    "param": [

        {

            "memCapacity": "1024"

        }

    ],

    "xenCommand": "xl create /storage/nfs/XML/server_8y2x916102u47zm1.cfg"

}

 

指令格式示例:

xl create <cfgPath>                                                      

qemu-img create -f raw <diskPath> <diskSize>                                

lvcreate -L <diskSize> -n <diskName> <diskPath>                           

 mv <templatesPoolPath> <diskPath>

说明:

<cfgPath>:从vm表中取元数据文件路径,加上虚拟机名称.cfg                                         

<diskPath>:从vmDisk表中取磁盘路径                                                            

<diskSize>:从vm表中取硬盘容量                                                          

<templatesPoolPath>:从虚拟磁盘存储表中取模板池路径,加上从模版镜像表中取模版镜像文件名

 

cfg文件示例(变化部分):

# variable parameter

name = "server_ocmze1gb29k89nz7"

uuid = "47ec5a8e-b2dc-4f0f-9359-ed4b91efe0b4"

maxmem = 16284

memory = 1024

vcpus = 4

vcpu_avail = 16

vncdisplay = 4103

vncpasswd = "WR0ZZH"

vif = ["mac=00:16:3e:1f:f0:c0,bridge=xenbr0,rate=3Mb/s", "mac=00:16:3e:c0:08:d8,bridge=xenbr1"]

disk = ["phy:/dev/mapper/vg0-server_ocmze1gb29k89nz7_sdb,sdb,w", "tap2:/storage/nfs/server_ocmze1gb29k89nz7_sda,sda,w", "file:,sdd:cdrom,r"]

 

转载于:https://my.oschina.net/u/3037187/blog/810536

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值