Proxmox VE等虚拟化平台下qcow2类型磁盘文件瘦身命令随记:修订间差异
来自三线的随记
(创建页面,内容为“先确保相关的磁盘关联的虚拟机已经关机 Proxmox VE(又简称 pve) 等虚拟化管理平台建虚拟机的时候,有的不支持设置磁盘创建…”) |
小无编辑摘要 |
||
(未显示同一用户的9个中间版本) | |||
第1行: | 第1行: | ||
先确保相关的磁盘关联的虚拟机已经关机 | 先确保相关的磁盘关联的虚拟机已经关机 | ||
Proxmox VE(又简称 pve) | Proxmox VE(又简称 pve) 等基于qemu的虚拟化管理平台建虚拟机的时候,有的不支持设置磁盘创建模式为精简置备模式 (精简置备模式是vmware的磁盘磁盘置备模式描述,pve目前似乎没找到类似的概念) | ||
这种情况下在<code>ls -lh</code> | 这种情况下在<code>ls -lh</code> 命令中,文件size大小会跟平台上对应磁盘的总体大小基本一致,但是与 <code>du -sh</code> 下显示的大小相差特别大( du -sh 才是实际的占用大小) | ||
这种文件一般又称为: 稀疏文件(sparse file) | 这种文件一般又称为: 稀疏文件(sparse file) | ||
第27行: | 第27行: | ||
在这种情况下,如果需要在pve平台中对虚拟机进行节点间的迁移(虚拟机磁盘文件没有放在分布式存储上),有可能带来较长的耗时 | |||
(vm migration任务可能一直卡在Formatting '/vm-files/images/xxx/xxx.qcow2'状态) | |||
第43行: | 第47行: | ||
root@pve-211:/vm-files/images/103# lsattr | root@pve-211:/vm-files/images/103# lsattr | ||
----i---------e------- ./base-103-disk-0.qcow2 | ----i---------e------- ./base-103-disk-0.qcow2 | ||
一般是由于该文件属性被设置了i属性(immutable, | 一般是由于该文件属性被设置了i属性(immutable, 在文件上启用这个属性时,不能更改、重命名或者删除这个文件)导致的,只需要移除 i 属性然后再删除即可 | ||
chattr -i ./base-103-disk-0.qcow2 | chattr -i ./base-103-disk-0.qcow2 | ||
对于此类重命名后的瘦身磁盘文件,也可以顺手把i属性加回去以保护文件 | |||
chattr +i ./base-103-disk-0.qcow2 | chattr +i ./base-103-disk-0.qcow2 | ||
=== 一键命令(对模板类型虚拟机无效) === | === 一键命令(对模板类型虚拟机无效) === | ||
进入到相应的磁盘文件目下下后 | 进入到相应的磁盘文件目下下后 | ||
ls -1|awk '{print "qemu-img convert -O qcow2 "$1" "$1"_prune && rm -vf "$1" && mv -v "$1"_prune "$1}'| | ls -1|awk '{print "qemu-img convert -O qcow2 "$1" "$1"_prune && rm -vf "$1" && mv -v "$1"_prune "$1" && chmod 640 "$1}'|sh | ||
效果如下 | |||
root@pve-211:/vm-files/images/110# ls -lh | |||
total 3.6G | |||
-rw-r----- 1 root root 33G Apr 3 20:16 vm-110-disk-0.qcow2 | |||
root@pve-211:/vm-files/images/110# ls -1|awk '{print "qemu-img convert -O qcow2 "$1" "$1"_prune && rm -vf "$1" && mv -v "$1"_prune "$1" && chmod 640 "$1}'|sh | |||
removed 'vm-110-disk-0.qcow2' | |||
renamed 'vm-110-disk-0.qcow2_prune' -> 'vm-110-disk-0.qcow2' | |||
root@pve-211:/vm-files/images/110# ls -lh | |||
total 3.6G | |||
-rw-r----- 1 root root 3.6G Apr 3 21:58 vm-110-disk-0.qcow2 | |||
[[分类:Linux]] | [[分类:Linux]] | ||
[[分类:PVE]] | [[分类:PVE]] |
2023年5月14日 (日) 20:29的最新版本
先确保相关的磁盘关联的虚拟机已经关机
Proxmox VE(又简称 pve) 等基于qemu的虚拟化管理平台建虚拟机的时候,有的不支持设置磁盘创建模式为精简置备模式 (精简置备模式是vmware的磁盘磁盘置备模式描述,pve目前似乎没找到类似的概念)
这种情况下在ls -lh
命令中,文件size大小会跟平台上对应磁盘的总体大小基本一致,但是与 du -sh
下显示的大小相差特别大( du -sh 才是实际的占用大小)
这种文件一般又称为: 稀疏文件(sparse file)
example:
root@pve-211:/vm-files/images/110# ls -lh total 3.6G -rw-r----- 1 root root 33G Apr 3 20:16 vm-110-disk-0.qcow2 root@pve-211:/vm-files/images/110# du -sh vm-110-disk-0.qcow2 3.6G vm-110-disk-0.qcow2 root@pve-211:/vm-files/images/110# stat vm-110-disk-0.qcow2 File: vm-110-disk-0.qcow2 Size: 34365243392 Blocks: 7359256 IO Block: 4096 regular file Device: 812h/2066d Inode: 25559069 Links: 1 Access: (0640/-rw-r-----) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2022-04-03 20:16:28.146186594 +0800 Modify: 2022-04-03 20:16:27.638194604 +0800 Change: 2022-04-03 20:16:27.638194604 +0800 Birth: 2022-04-03 20:13:59.396532193 +0800
可以看出id为110的虚拟机,disk-0在创建的时候声明了约33G的容量,目前实际占用约3.6G
在这种情况下,如果需要在pve平台中对虚拟机进行节点间的迁移(虚拟机磁盘文件没有放在分布式存储上),有可能带来较长的耗时
(vm migration任务可能一直卡在Formatting '/vm-files/images/xxx/xxx.qcow2'状态)
使用以下命令可以进行文件瘦身
qemu-img convert -O qcow2 base-103-disk-0.qcow2 base-103-disk-0.qcow2_new rm base-103-disk-0.qcow2 mv base-103-disk-0.qcow2_new base-103-disk-0.qcow2
如上即可完成磁盘文件的瘦身
额外的情况
部分磁盘文件会出现无法删除的情况(特别是pve中template类型虚拟机的关联磁盘文件),会提示
rm: cannot remove 'base-103-disk-0.qcow2': Operation not permitted
这时候需要检查一下磁盘文件属性
root@pve-211:/vm-files/images/103# lsattr ----i---------e------- ./base-103-disk-0.qcow2
一般是由于该文件属性被设置了i属性(immutable, 在文件上启用这个属性时,不能更改、重命名或者删除这个文件)导致的,只需要移除 i 属性然后再删除即可
chattr -i ./base-103-disk-0.qcow2
对于此类重命名后的瘦身磁盘文件,也可以顺手把i属性加回去以保护文件
chattr +i ./base-103-disk-0.qcow2
一键命令(对模板类型虚拟机无效)
进入到相应的磁盘文件目下下后
ls -1|awk '{print "qemu-img convert -O qcow2 "$1" "$1"_prune && rm -vf "$1" && mv -v "$1"_prune "$1" && chmod 640 "$1}'|sh
效果如下
root@pve-211:/vm-files/images/110# ls -lh total 3.6G -rw-r----- 1 root root 33G Apr 3 20:16 vm-110-disk-0.qcow2 root@pve-211:/vm-files/images/110# ls -1|awk '{print "qemu-img convert -O qcow2 "$1" "$1"_prune && rm -vf "$1" && mv -v "$1"_prune "$1" && chmod 640 "$1}'|sh removed 'vm-110-disk-0.qcow2' renamed 'vm-110-disk-0.qcow2_prune' -> 'vm-110-disk-0.qcow2' root@pve-211:/vm-files/images/110# ls -lh total 3.6G -rw-r----- 1 root root 3.6G Apr 3 21:58 vm-110-disk-0.qcow2