如何实现Openstack中镜像的在线lvm?

公司已部署一套基于OpenStack的云环境,计算虚拟化采用的是KVM, 存储采用cinder对接传统SAN存储,目前正在上线准备中。在镜像模版的制作过程中,发现有些操作系统的模版无法支持根分区的自动lvm模式。目前使用的模版都为linux,包括centOS,redhat,SUSE。采用什么方案能够使得模版支...显示全部

公司已部署一套基于OpenStack的云环境,计算虚拟化采用的是KVM, 存储采用cinder对接传统SAN存储,目前正在上线准备中。在镜像模版的制作过程中,发现有些操作系统的模版无法支持根分区的自动lvm模式。目前使用的模版都为linux,包括centOS,redhat,SUSE。采用什么方案能够使得模版支持在线lvm?

收起
参与8

查看其它 1 个回答Garyy的回答

GaryyGaryy系统工程师某保险

对于 镜像在启动时候resize根分区的需求,社区提供了如下的两种决方案(非xen虚拟化):
1)使用cloud-init/cloud-tools
对于image需要确定如下:
—镜像原始分区表
—镜像基于原始分区表的文件系统

然后在镜像启动过程中:
—修改分区表,使其识别到额外的分区——在分区表里,新增一个入口,创建一个lvm的物理卷,增加到VG里面,接下来就可以给root分区进行扩容了,并resize FS了

最简单的方法来实现这个以上的过程就是在image里面安装:
—cloud-utils包,通过growpart 工具来进行扩分区
—cloud-initramfs-growroot包,for Ubuntu/Debian/Fedora/CentOS/RHEL/SUSE,之类在第一次启动时候支持resizeFS的OS
—cloud-init包
在这些包安装后,在image启动的时候可以resize。建议原始的分区是ext3/ext4/xfs格式的非LVM分区。

2)不使用cloud-init/cloud-tools
如果无法安装cloud-init/cloud-tools,又要能够支持resize,那么就只有使用脚本在启动的时候进行分区表的修改。建议使用lvm来管理分区。由于linux内核的限制,对于raw格式的disk,是没有办法修改分区表的,但是可以作用于lvm分区。具体操作如下:
—检查disk是否有额外的可用空间,分析“parted /dev/sda”的输出,脚本—print free
—创建一个新的额外的lvm分区,例如“parted /dev/sda”—脚本mkpart lvm
—创建一个新的物理卷,例如“pvcreate /dev/sda6”
—对VG进行扩容,例如“vgextend vg00 /dev/sda6”
—对根分区lv进行扩容,例如“lvextend /dev/mapper/node-root /dev/sda6”
—对根分区进行resize,例如“resize2fs /dev/mapper/node-root”

保险 · 2018-09-20
浏览2294

回答者

Garyy
Garyy0410
系统工程师某保险
擅长领域: 云计算存储容器

Garyy 最近回答过的问题

回答状态

  • 发布时间:2018-09-20
  • 关注会员:2 人
  • 回答浏览:2294
  • X社区推广