diskimage-builder code
https://opendev.org/openstack/diskimage-builder官方分区设置
https://docs.openstack.org/diskimage-builder/latest/user_guide/building_an_image.html
If you wish to customise the top-level block-device-default.yaml file
from one of the block-device-* elements, set the environment variable
DIB_BLOCK_DEVICE_CONFIG. This variable must hold YAML structured
configuration data or be a file:// URL reference to a on-disk
configuration file.
在自己自定义的element 的根目录下,创建一个文件block-device-default.yaml,将分区方案按yaml 文件格式配置其中,如果element 下方有一个block-device-default.yaml,则会优先使用用户定义的分区配置,如果用户无定制,则使用默认配置:
https://opendev.org/openstack/diskimage-builder/src/branch/master/diskimage_builder/elements/block-device-mbr/block-device-default.yaml
或使用变量DIB_BLOCK_DEVICE_CONFIG定义分区配置,将block-device-default.yaml的文本赋值给DIB_BLOCK_DEVICE_CONFIG
磁盘全部容量分配r
背景: 使用kvm 安装 qcow2 文件 ,启用一个ubuntu 虚拟机。
qemu-img info a.qcow2
qemu-img create -f qcow2 -o preallocation=metadata b.qcow2 60G
virt-resize --expand /dev/sda1 a.qcow2 b.qcow2
#第一个命令查看a.qcow2 镜像磁盘有多大(a 包含我们要安装系统镜像)
#第二个命令创建一块 60G 的镜像磁盘文件(即最终磁盘容量,b须比a大)
#第三个命令,将a 镜像内容拷到b镜像中,并将空闲空间(b'size-a'size)扩展到/dev/sda1 分区上。
#即,如果a.qcow2 原磁盘大小是50G ,执行完命令后b.qcow2 除了是a.qcow2 的完整拷贝外,b.qcow2中的/deb/sda磁盘大小为60G,其中/dev/sda1 分区 比a.qcow2 中/dev/sda1 多了10G.
qemu-img resize a.qcow2 +5G
virsh destroy vm
virsh start vm
## enter vm
fdisk -l | grep sda (/dev/sda 磁盘大小增加了5g, 但是分区 /dev/sda1 未拿到这些空间)
parted /dev/sda (将磁盘的未分配空间,分配给分区sda1)
(parted) p
(parted) resizepart 1
(parted) quit
## 执行log 如下:
root@CASA-MOBILE:~# parted /dev/sda
(parted) p <== remember space of all disk /dev/sda ,and remember the Number of sda1
https://cloudinit.readthedocs.io/en/latest/topics/modules.htm
https://cloudinit.readthedocs.io/en/latest/topics/examples.html
安装工具:
apt-get install cloud-init
使用cloud-localds命令生成一个seed.img , 然后在virt-install qcow2 image 的时候同时指定这个seed.img
即 把初始化镜像时的自定义修改放到seed.img中, 然后将它作为一个参数传给kvm 。
cloud-localds seed.img user-data meta-data
这个命令是指user-data meta-data 中的配置加载到seed.img ,并生成seed.img 。 所以首先我们要编辑user-data meta-data 。格式与yaml相同。用法参见https://cloudinit.readthedocs.io/en/latest/topics/examples.html
注意,write file 是生成新文件,会覆盖。如要修改已有文件的个别部分,应该修改后的全文贴入对应部分
生成seed.img 之后,virt-install 时加上--disk path=/vob/cloud-init/seed.img,bus=virtio,format=raw
qemu-img resize xxxx.qcow2 +30G virt-install -d --connect qemu:///system --name casa-mobile-a -r 61440 --vcpus 4 --cpu host \ --disk path=/vob/cloud-init/xxxxxxx.qcow2,format=qcow2,bus=virtio --import \ --disk path=/vob/cloud-init/seed.img,bus=virtio,format=raw \ --autostart --noautoconsole
user-data 的一个示例,必须是以#cloud-config 开头
还可用于修改root 密码之类的变更,用passwd 。
写