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
在使用diskimage-builder生成qcow2 镜像时,磁盘空间足够,但是执行到中间时会报
No space left
用df -h 查看时,/目录下的空间足够。
于是再执行,在执行过程中发现,diskimage-builder在执行过程解包和拷贝过程是会将一个/tmp/dib_build.xxxxxx的临时目录挂载在tmpfs上,而当前系统的tmpfs 只有3.9G 。
root@vm1:~# df -h| grep tmpfs
tmpfs 797M 3.3M 793M 1% /run
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
tmpfs 797M 0 797M 0% /run/user/0
tmpfs 3.9G 3.8G 154M 97% /tmp/dib_build.whmZyNdv
tmpfs 3.9G 0 3.9G 0% /tmp/dib_image.6Jdr8dSL
了解tmpfs是在哪里分配及分配规则:
https://wiki.archlinux.org/index.php/Tmpfs
tmpfs is a temporary filesystem that resides in memory and/or swap
partition(s). Mounting directories as tmpfs can be