server create (--image |--volume ) --flavor 选择使用的镜像 | 硬盘 | 云主机类型
--security-group 安全组
--key-name 添加一个秘钥
--file <dst-path=src-path> 将本地的<src-path>文件存储到虚拟机<dst-path>目录下。注射的文件收quota限制。
--user-data 云主机注入文件信息
--availablilty-zone 选择可用域
--block-device-mapping 块设备映射。格式:<dev-name>=<id>:<type><size(GB)>:<delete-on-terminate>
--nic 添加网卡信息。<net-id=net-uuid,net-name=network-name,port-id=port-uuid,v4-fixed-ip=ip-addr,v6-fixed-ip=ip-addr,tag=tag>
net-id,net-name,port-id分别为网络ID、网络名字、端口ID,三者配置一个即可
v4-fixed-ip: 配置ipv4固定IP
v6-fixed-ip:配置ipv6固定IP
-- network --port 与 --nic 用法相同,比其更简单一些。
--hint 调用server group。在调度过程中,增加一个ServerGroupAffinity/Anti-affinity Filter
--config-drive | Ture 使用指定的卷作为配置驱动器,或“True”使用临时驱动器。
--min —mix 启动的虚拟机最大/最小的数量。
部分不常用而又实用的功能详解:
--block-device-mapping 和--block-device
在animbus4.0中,在创建虚拟机时,可以设置云主机启动源“创建一个新云硬盘并启动”。 注:在animbus5.0中,在bashboard中创建云主机,默认使用这种方式。
如果想在命令行中以这个要求创建虚拟机,可以使用 nova boot --block-device,命令如下:
nova boot test --flavor <Flavor ID> --block-device source=image,id=<Image ID>,dest=volume,size=20,bootindex=0,shutdown=remove
—block-device:
参数如下:
id=UUID(image_id,snapshot_id,volume_id)
souce=源类型(image,snapshot,volume,blank)
dest=目的类型(volume,local)
bus=总线类型(uml,lxc,virtio等,常用virtio)
type=设备类型(disk,cdrom,Floppy,Flash,默认是disk)
device=设备名称(vda,xda)
size=块大小
format=格式(ext4,ISO,swap,ntfs)
bootindex=定义启动盘,是启动盘的话需要是0
shutdown=删除对应动作(prserve,remove)
在nova boot中,有两个参数,--block-device 和--block-device-mapping,前者是v1版,后者是v2版。
在代码novaclient/v2/shell.py的_boot方法中:
从block_device_mapping取出值放入block_device_mapping
从_parse_block_device_mapping_v2取出值放入block_device_mapping_v2
所以说明两者是不兼容的。也就是说指定了–block_device_mapping,就不能指定参数–boot_volume、–snapshot、–block_device。
因此想达到创建一个新云硬盘并启动的启动源,只能使用 nova boot --block-device, 而--block-device-mapping暂时是不支持的,只能将volume先创建好,在套入格式。
那为什么要并用两套不兼容的版本?
因为openstack兼容多种虚拟化方式,但有些虚拟化不支持指定虚拟机的挂载点。因此推出加强版块设备映射(--block-device-mapping)
下面是两种版本的例句:
--block-device:
nova boot test --flavor 39dc9f61-6334-4132-b987-5dc16ce0356b --block-device source=image,id=dac2fb66-257e-4396-8708-a09c37fd87e4,dest=volume,size=20,bootindex=0,shutdown=remove
--block-device-mapping:
nova boot --image dac2fb66-257e-4396-8708-a09c37fd87e4 --flavor 04a63ac9-45f7-4621-a109-fbc4c1f9a4ad --block-device-mapping vdc=dd066077-27b7-4da3-afa7-91da6d2b2f87:::0 device-mapping-test2
--block-device参数中,由于源类型(image,snapshot,volume,blank)有这么几种可选,目的类型(volume,local)有这两种可选
上面参数可以组合出几种形态,依据不同的形态有不同的含义:
dest |
source |
说明 |
简述 |
volume |
volume |
直接挂载到compute节点 |
当bootindex=0时,相当于--boot-volume<volume-id> |
volume |
snapshot |
调用cinder依赖快照创建新卷,挂在到compute节点 |
-snapshot<snapshot_id> |
volume |
image |
调用cinder依据镜像创建新卷,挂载到compute节点 |
当bootindex=0时,相当于 --image<image>
boot from image,create a new volume
|
volume |
blank |
调用cinder依据创建空白的卷,挂载到compute节点 |
|
local |
image |
在Hypervisor上创建ephemeral分区,将image拷贝到里面并且启动虚拟机 |
相当于普通的boot from image |
local |
blank |
format=swap时,创建swap分区,默认创建ephemeral分区 |
bootindex=-1 shutdown=remove format=swap时,相当于--swap=<swap size>。
bootindex=-1 shutdown=remove,相当于--ephemeral
|
--hint
用法如下:
openstack server create --image dac2fb66-257e-4396-8708-a09c37fd87e4 --flavor 04a63ac9-45f7-4621-a109-fbc4c1f9a4ad --hint group=df091317-0eb5-42b0-82a5-aa95846d0f1a serverGroup-test
在--hint后面加上server group ID。
创建server group
openstack server group create [—policy <policy>] <name>
Server group 有两种policy:affinity 和anti-affinity。
affinity:表示尽量把vm都安排到一个host上面。如果不添加policy选项,默认使用affinity。
anti-affinity:表示尽量把vm安排到不同的host上面。
在创建云主机中加入--hint选项,就会将云主机将入相应的ServerGroup的member中,相同server group的成员按照相应的策略进行调度。
在调度的过程中,会加入一个ServerGroupAntiAffinityFilter或者ServerGroupAffinityFilter。 如果是ServerGroupAntiAffinityFilter,那就会将虚拟机见到相同节点上
ServerGroupAffinityFilter与RetryFilter的功能类似,但是比RetryFilter更加细致,可以细分到各个ServerGroup。