# 先增加实例文件大小,可以使用dd命令
dd if=/dev/zero of=/tmp/temp_expand bs=1M count=4096(增加4G)
cat /tmp/temp_expand >>/var/lib/libvirt/images/my_vm.img
# 挂载文件至系统,以便找出是否有swap device
kpartx -a -p p /var/lib/libvirt/images/my_vm.img
# If has swap device, del the swap device
swapDevice=`sfdisk -s -l /dev/loop1 | grep -e 'Linux swap' |awk '{print $1}'`
# Del swap
parted -s ${loop} rm ${swap_part_num}
# If does't have, add the new swap device
parted -s /dev/loop1 "unit mb mkpart primary linux-swap -2048MB -0"
或者先只划分空间,再用mkswap进行操作
可选的:mkswap -v1 /dev/mapper/loop1p3
# 重新刷新新增加的swap设备
kpartx -d -p p /var/lib/libvirt/images/my_vm.img
kpartx -a -p p /var/lib/libvirt/images/my_vm.img
# 将新的lo设备分区进行打印
sfdisk -d $dev_name >/tmp/sfdisk_dump
# 如果有swap分区,则root分区为(root start), (swap start - root start);如果没有,则为(root start),
new_root=401625,14227239(例子)
converted_root_device=`echo "/dev/loop1p2" | sed -e 's/\//\\\\\//g'`
sed -e "s/^${converted_root_device}.*$/$new_root/" /tmp/sfdisk_dump | sfdisk --no-reread --force /dev/loop1
# 重新刷新新变更的分区
kpartx -d -p p /var/lib/libvirt/images/my_vm.img
kpartx -a -p p /var/lib/libvirt/images/my_vm.img
# fs resize
e2fsck -pv /dev/mapper/loop1p2
resize2fs -f /dev/mapper/loop1p2