文章目录
[隐藏]

1 系统分区引导方式

当启动Openstack虚拟机时,系统分区创建方式有以下五种:

  • 从虚拟机镜像引导:需要用户从Glance镜像库中指定一个镜像,并将其拷贝到临时磁盘;
  • 从虚拟机快照引导:需要用户指定一个虚拟机快照,并将其拷贝临时磁盘来系统分区;
  • 从Volume卷引导:需要用户来指定Cinder 卷,直接挂载为虚拟机系统分区,无需拷贝,因为卷是可引导磁盘,操作系统所需文件已经保存;
  • 从虚拟机镜像引导并挂载新建的Volume卷:需要用户从Glance镜像库中指定一个镜像,镜像内容会被拷贝到一个新创建的Cinder卷中,随后将其挂载为虚拟机的系统盘;
  • 从Volume卷快照引导并挂载新建的Volume卷:需要用户指定Cinder卷的快照,快照将被拷贝到一个新创建的Cinder卷中,随后将其挂载为虚拟机的系统盘。

后面三种与Volume卷相关的三种引导方式,通常系统分区的声明周期通常都比虚拟机的生命周期还要长,因为虚拟机停止时,卷没有被删除。与前两种方式对比,从卷中引导虚拟机系统具有更快的配置和启动速度。Nova存储后端配置为本地文件存储的话,性能方面要弱很多,因为不支持虚拟机的在线迁移,如果存储后端对接共享存储集群(NFS、Ceph等)可以支持虚拟机的在线迁移,因为虚拟机系统分区可以从多次存储节点上并发访问。

2 从卷中创建虚拟机

在通常情况下,从虚拟机镜像或虚拟机快照中创建虚拟机已经足够了,但有些时候我们想要持久化存储的系统盘时而临时盘时,从卷中启动虚拟机将变的非常有用,另外从卷中启动还有以下优点:

  • 可以不受云主机类型中磁盘配额的限制(甚至可以指定一个零磁盘的类型)
  • 持久化的卷生命周期比虚拟机实例的声明周期还要长
  • 可以从卷中直接创建镜像,无论卷是否已经挂载到虚拟机上

3 实践

3.1 创建可启动的卷

(1)从现存的镜像或快照中创建可启动的卷

从镜像创建可启动卷。传入“–image”参数可将一个卷设置为可启动。

格式:–image IMAGE_ID –size SIZE_IN_GB VOLUME_NAME

(2)从现存的虚拟机实例构建可启动的卷

首先创建一个卷,这里需要预估好目标虚拟机的大小

然后挂载到正在运行的虚拟机上,创建分区,创建文件系统,挂载的指定目录

拷贝当前虚拟机的操作系统到上面卷上,可以采用常规的备份方式,例如dd或rsync拷贝

然后再修改卷属性为可启动即可。

对比这两种方法,还是第一种方法较为简单,从现有虚拟机上创建快照,然后采用第一种方法制作可启动卷即可。

3.2 启动虚拟机

从可启动的卷启动虚拟机的方式

格式:–volume VOLUME_ID为可启动卷ID。

从镜像启动实例并连接非启动卷的方式

格式:–flavor 需要指定云主机类型的,但磁盘大小不受限制,这里磁盘类型为4GB,小于20GB仍可以创建,–image 这里必须要指定启动卷所对应的镜像UUID –block-device-mapping  <dev-name=mapping> dev-name为块设备名称,maping格式为<id>:<type>:<size(GB)>:<delete_on_terminate> (optional
extension),即id为可启动卷的UUID,type为类型,size(GB)为以GB计的卷大小,与卷大小一致,delete_on_terminate为是否终止虚拟机时删除卷,0或false为不删除,1或true为删除。

3.3 其他

利用卷启动虚拟具有一些其他新改变:

  • 给现有虚拟机快照会生成卷的快照
  • 可以通过扩展卷的方式给虚拟机系统盘扩容

4 参考文档

http://docs.clouda.ca/compute/boot-from-volume

http://www.aboutyun.com/thread-20390-1-1.html

http://www.openstack4j.com/learn/compute/servers/#boot-a-server-vm-create

https://docs.openstack.org/zh_CN/user-guide/cli-nova-launch-instance-from-volume.html

http://netapp.github.io/openstack-deploy-ops-guide/icehouse/content/section_nova-deployment-choices.html

OpenStack 存储热迁移