ProxmoxVE(PVE) 减小缩减虚拟机硬盘设置的空间大小
注意!!!操作有风险,一定要先备份!!!
Proxmox VE WEB UI上调整虚拟机磁盘大小只能增加,不能减小。
如果想减小空间设置,需要通过命令行调整
即是调整LV的大小,命令操作如下
以下命令需在节点得Shell中执行
查看虚拟机硬盘大小
先通过 lvs 命令查看虚拟机所设置的空间大小
root@pve:~# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
data pve twi-aotz-- <10.77t 0.72 0.63
root pve -wi-ao---- 96.00g
snap_vm-100-disk-0_Init pve Vri-a-tz-k 100.00g data vm-100-disk-0 4.82
snap_vm-101-disk-0_Init pve Vri---tz-k 500.00g data vm-101-disk-0
snap_vm-102-disk-0_Docker pve Vri-a-tz-k 500.00g data vm-102-disk-0 1.99
snap_vm-102-disk-0_Init pve Vri-a-tz-k 500.00g data vm-102-disk-0 1.89
snap_vm-102-disk-0_set_timezone pve Vri---tz-k 500.00g data vm-102-disk-0
snap_vm-103-disk-0_Init pve Vri---tz-k 500.00g data
snap_vm-103-disk-0_MariaDB pve Vri---tz-k 500.00g data vm-103-disk-0
snap_vm-105-disk-0_Init pve Vri---tz-k 1.00t data vm-105-disk-0
snap_vm-106-disk-0_Docker pve Vri---tz-k 100.00g data vm-106-disk-0
snap_vm-106-disk-0_Init pve Vri-a-tz-k 100.00g data vm-106-disk-0 2.28
snap_vm-107-disk-0_Rancher pve Vri---tz-k 100.00g data vm-107-disk-0
snap_vm-108-disk-0_Init pve Vri---tz-k 10.00g data vm-108-disk-0
snap_vm-108-disk-1_Init pve Vri---tz-k 52.00m data vm-108-disk-1
snap_vm-108-disk-2_Init pve Vri---tz-k 4.00t data vm-108-disk-2
snap_vm-108-disk-3_Init pve Vri---tz-k 4.00t data vm-108-disk-3
snap_vm-108-disk-4_Init pve Vri---tz-k 4.00t data vm-108-disk-4
swap pve -wi-ao---- 8.00g
vm-100-disk-0 pve Vwi-a-tz-- 100.00g data 4.82
vm-101-disk-0 pve Vwi-a-tz-- 500.00g data 1.71
vm-102-disk-0 pve Vwi-a-tz-- 500.00g data 1.99
vm-103-disk-0 pve Vwi-aotz-- 500.00g data snap_vm-103-disk-0_Init 2.02
vm-105-disk-0 pve Vwi-aotz-- 924.00g data 0.71
vm-106-disk-0 pve Vwi-a-tz-- 100.00g data 2.69
vm-106-state-Docker pve Vwi-a-tz-- <16.49g data 9.09
vm-107-disk-0 pve Vwi-aotz-- 100.00g data 7.46
vm-107-state-Rancher pve Vwi-a-tz-- <16.49g data 33.82
vm-108-disk-0 pve Vwi-aotz-- 10.00g data 16.56
vm-108-disk-1 pve Vwi-aotz-- 52.00m data 62.74
vm-108-disk-2 pve Vwi-aotz-- 4.00t data 0.15
vm-108-disk-3 pve Vwi-aotz-- 4.00t data 0.15
vm-108-disk-4 pve Vwi-aotz-- 4.00t data 0.15
vm-108-state-Init pve Vwi-a-tz-- <16.49g data 3.89
查看硬盘路径
然后执行 lvdisplay 来查看具体路径,我这个的路径是 /dev/pve/vm-105-disk-0
root@pve:~# lvdisplay
--- Logical volume ---
LV Path /dev/pve/vm-105-disk-0
LV Name vm-105-disk-0
VG Name pve
LV UUID NC8FS6-aT32-vKvd-Die0-LgDr-FHgS-16UVXd
LV Write Access read/write
LV Creation host, time pve, 2021-09-24 12:03:00 +0800
LV Pool name data
LV Status available
# open 1
LV Size 924.00 GiB
Mapped size 0.87%
Current LE 236544
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:24
--- Logical volume ---
LV Path /dev/pve/snap_vm-105-disk-0_Init
LV Name snap_vm-105-disk-0_Init
VG Name pve
LV UUID v5cCKU-Alrq-WnwA-L8dL-jaQp-7D5T-tUz4AA
LV Write Access read only
LV Creation host, time pve, 2021-09-24 12:07:48 +0800
LV Pool name data
LV Thin origin name vm-105-disk-0
LV Status NOT available
LV Size 1.00 TiB
Current LE 262144
Segments 1
Allocation inherit
Read ahead sectors auto
缩减虚拟硬盘容量
执行下边的命令将空间大小减小100G
root@pve:~# lvreduce -L -100G /dev/pve/vm-105-disk-0
WARNING: Reducing active and open logical volume to 824.00 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce pve/vm-105-disk-0? [y/n]: y
Size of logical volume pve/vm-105-disk-0 changed from 924.00 GiB (236544 extents) to 824.00 GiB (210944 extents).
Logical volume pve/vm-105-disk-0 successfully resized.
注意!!! 有网友在后台反馈,在执行lvreduce
命令时,需要增加参数--resizefs。下面是网友反馈的内容
lvreduce --resizefs -L 30G /dev/pve/vm-120-disk-0
lvchange --refresh /dev/pve/vm-120-disk-0
# 一定要增加--resizefs参数,也一定要refresh,
# 第一个命令如果不加resizefs会导致数据截断,丢失数据,如果是新机器,没有什么数据,可能不会促发,如何是曾经使用满磁盘,后来删除数据,大概率挂掉
# 第二个命令是map对齐的,不然会导致数据写到莫名奇妙的地方,大概率在新数据写入后那次就不能正常开机了
以上网友的反馈我这边并没有进行实际测试,需自行判断。
关于--resizefs
和--refresh
命令解释(来自AI)
lvreduce --resizefs
命令概述
lvreduce 命令的用途是缩减逻辑卷(Logical Volume)的大小。--resizefs 是 lvreduce 命令的一个参数,它会在缩减逻辑卷大小的同时,对逻辑卷上的文件系统进行同步调整。
作用原理
当你执行 lvreduce --resizefs -L 30G /dev/pve/vm-120-disk-0 时,该命令会把 /dev/pve/vm-120-disk-0 这个逻辑卷的大小缩减至 30GB。与此同时,--resizefs 参数会确保逻辑卷上的文件系统也随之调整大小,从而保证文件系统能适配新的逻辑卷大小。若没有此参数,逻辑卷的大小虽会改变,但文件系统的大小仍保持不变,这可能会引发文件系统损坏或无法正常挂载等问题。
lvchange --refresh
命令概述
lvchange 命令用于改变逻辑卷的属性,而 --refresh 是 lvchange 命令的一个参数,其作用是刷新逻辑卷的状态信息。
作用原理
在执行了 lvreduce 命令缩减逻辑卷大小之后,系统可能未能及时更新逻辑卷的相关状态信息。此时执行 lvchange --refresh /dev/pve/vm-120-disk-0 命令,能够让系统重新读取逻辑卷的元数据,更新内核中关于该逻辑卷的状态信息,保证系统获取到的逻辑卷信息是最新的。这样做有助于避免因系统缓存的旧信息而产生的问题,例如在后续的操作中对逻辑卷大小的误判等。
综上所述,--resizefs 保证了文件系统和逻辑卷大小的一致性,--refresh 则确保了系统能正确识别逻辑卷的最新状态。
以前按这么操作导致vm挂了,今天脑子一热又试了一次,再次挂掉
启动报错如下:
un_buffer: 321 Script exited with status 32
lxc_init: 847 Failed to run lxc.hook.pre-start for container "101"
__lxc_start: 2008 Failed to initialize container "101"
TASK ERROR: startup for container '101' failed未能解决,幸好有备份,用备份恢复了,提醒看客请做好备份/快照!!!
@莫里 : 医生给病人开了一个药方药到病除,但是另一位病人反而越吃越严重,有没有可能是药不对症?