PVE_LXC_CT_VM_虚拟机的空间扩容
转载注明来源: 本文链接 来自osnosn的博客,写于 2023-04-12.
参考
查看
- 物理磁盘,被分区。
- 然后用pvcreate,将物理分区创建为PV,PV是由若干个PE组成。
PE为物理扩展块。相当于一个block。 - 用vgcreate,把PV组合成 VG。VG就是个虚拟大磁盘。
- 用 lvcreate,从VG中划分一部分,创建一个虚拟分区 lv。
- 然后 格式化 lv 分区,创建文件系统。使用 lv 分区。
- 或者,用
lvcreate --size xx --thinpooll poolName VGname
在VG上创建 精简卷池 thin-pool。 - 然后用
lvcreate --thin --size xx -name lvName VGname/poolName
,创建虚拟分区 精简卷 thinLV。 - 然后 格式化 thinLV,创建文件系统,使用 thinLV。
- 然后用pvcreate,将物理分区创建为PV,PV是由若干个PE组成。
- 查看物理硬盘上,物理分区中的剩余空间,
pvs
显示剩余空间大小。
pvdisplay
显示 剩余的 PE 数量。 - 查看虚拟大磁盘 VG 的剩余空间,
vgs
显示剩余空间大小。
vgdisplay
显示 剩余的 PE 数量,和 剩余空间大小。 - lv 能不能扩容,看 vg 有无剩余空间。
lvs
如果显示,对应的 lv,Attr的第一位是"V" (thinLV),Attr第7位是"t" (thin)。就看不出了。
thinLV 精简卷(廋卷),是可以超量分配空间 (分配 超出物理磁盘空间)。
【LVM精简卷】。
LXC CT 扩容
-
pct list
列出 ct 容器。记录下<vmid>
。 -
pct shutdown <vmid>
正常关机,pct stop <vmid>
强制关机。停掉要扩容的 容器运行。 -
lvs
查看对应容器id<vmid>
的虚拟分区 LV 名称,类似vm-<vmid>-disk-0
。 -
e2fsck -f /dev/pve/vm-<vmid>-disk-0
检查 ext4 文件系统无错误。 -
lvextend --size +8G /dev/pve/vm-<vmid>-disk-0
对 LV 扩容。也可以用
pct resize <vmid> <disk> <size>
命令扩容。(未测试)
也可以在pve的web管理页面,点击CT容器->"Resources"->"Root Disk"->"Volume Action"->"Resize" 扩容。只能按1GB的倍数扩容。(未测试)lvs
查看/检查扩容结果。 -
修改
/etc/pve/local/lxc/<vmid>.conf
文件中,对应的配置... vm-<vmid>-disk-0,size=xxG
。
把 size 改为扩容后正确的大小,即 上一步lvs
看到的大小。
或者执行pct rescan
-
如果 LV 中的文件系统是 ext4,
resize2fs /dev/pve/vm-100-disk-0
对文件系统扩容。
如果不是 ext4,自己查找对应的文件系统扩容指令。 -
去 pve 的 web 管理页面,虚拟机的 resources 中,查看容量正确。
启动 这个 ct 虚拟机。 -
扩容完成。
扩容成功。
VM 虚拟机扩容
-
这里测试的是 openwrt 虚拟机的扩容。
之前安装,是用qm importdisk <vmid> /mnt/pve/.../iso/openwrt-23.05.0-rc4-x86-64-generic-squashfs-combined.img local-lvm
导入的映像。 -
qm list
查看虚拟机列表。 -
pvesm status
查看 storage id -
pvesm list local-lvm
查看在local-lvm中的列表。 -
qm shutdown <vmid>
正常关机,qm stop <vmid>
强制关机。关闭虚拟机。 -
qm config <vmid>
查看配置,比如disk类型。 -
lvs
查看对应容器id<vmid>
的虚拟分区 LV 名称,类似vm-<vmid>-disk-0
。 -
lvextend --size +100M /dev/pve/vm-<vmid>-disk-0
对 vm 扩容。增加100M。
x86的官方版op,总容量190MB就足够用了。lvresize --size 190M /dev/pve/vm-<vmid>-disk-0
也可以用
qm disk resize <vmid> <disk> <size>
命令扩容。(测试OK)
也可以在pve的web管理页面,点击vm(qemu)虚拟机->"Hardware"->"Hard Disk"->"Disk Action"->"Resize" 扩容。只能按1GB的倍数扩容。(未测试)lvs
查看/检查扩容结果。 -
执行
qm disk rescan
,修正/etc/pve/qemu-server/<vmid>.conf
中disk的大小。 -
参考【openwrt_21.02_img_空间扩容_分区扩容_改分区表大小】根据openwrt的img类型进行处理。
- 我的是 squashfs-combined.img
losetup -f
挂载,partx -a
刷新,fdisk
或cfdisk
更改分区2。
apt install squashfs-tools
安装工具 (按需)。
如要保留原来的配置,mount分区2,用tar
或cpio
备份原有配置。umount分区2。
unsquashfs /dev/loop0p2
然后mksquashfs squashfs-root /dev/loop0p2 -comp xz -noappend
mount分区2,用tar
或cpio
恢复备份。umount分区2。
partx -u
,losetup -d
, 卸载。扩容完成。
qm start <vmid>
启动openwrt虚拟机。扩容成功。
因为是squashfs的文件系统,我忘了备份原来的配置,openwrt恢复出厂设置了。IP变成192.168.1.1。要重新配置。
- 我的是 squashfs-combined.img
其他
- 【lxd容器运行dmesg权限问题】
目前"非特权容器",不支持dmesg。"特权容器"可以。 - LXC 容器中的debian,实际执行的内核是pve的kernel,不是/boot/目录中的内核。
所以,LXC中的debian无法加载kmod,比如不能加载 tun.ko,没有 /dev/net/tun 设备。 - LXC中(非特权)的debian,配置wireguard,似乎不太稳定。vm中的debian,配wg比较稳定。
----end----
转载注明来源: 本文链接 https://www.cnblogs.com/osnosn/p/17318202.html
来自 osnosn的博客 https://www.cnblogs.com/osnosn/ .