夸克之书

  • 首页
  • 科普
  • 笔记
  • .NET/C#
  • 物联网
  • 算法
  • Linux
  • 树莓派
夸克之内,别有洞天
  1. 首页
  2. 默认
  3. 正文

PVE重启后LVM Thin数据丢失,错误:Volume group "****" has insufficient free space (128 extents): 4048 required.

2021-02-18 14839点热度 0人点赞 0条评论

先聊一点题外话,感觉PVE这玩意儿还不是很稳啊。除本篇文章记录的错误之外,还遇到不少不大不小的问题了。甚至一度想换回ESXI,毕竟ESXI稳的一笔。但ESXI唯一的缺点就是不支持CPU虚拟化和直通同时开启。

故障:重启后lvm thin容器在pve管理界面中显示使用容量为0(实际上已经使用100多个G了),导致虚拟机无法启动。

第一次出现此问题的时候,使用lvconvert命令可以修复。修复命令如下:

lvconvert --repair /dev/local-vd1r1-hdd/local-vd1r1-hdd   #local-vd1r1-hdd为vg名称和lv名称

但是过了没多久,我重启PVE服务器之后再次出现此问题,然而这次使用lvconvert无法修复了,报错如下:

Volume group "******" has insufficient free space (128 extents): 4048 required.

第二次再次出现此问题,就不敢大意了。虽然说现在机器里面的数据少,但是如果以后频繁出现此问题,那就比较糟糕了。

使用vgdisplay查看卷组状态.。

root@cn-hk1:/var/log# vgdisplay
  --- Volume group ---
  VG Name               local-vd1r1-hdd
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  1966
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                452
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <6.52 TiB
  PE Size               4.00 MiB
  Total PE              1708391
  Alloc PE / Size       1708263 / <6.52 TiB
  Free  PE / Size       128 / 512.00 MiB
  VG UUID               ***********************

vgdisplay显示Free PE只有128个区块可用。但是这个vg分明就是在pve管理界面自动创建的,怎么会出现溢出的情况。反正写这篇博客为止,翻遍baidu和google都未找到相关资料,如果有小伙伴知道原因,不妨留言告诉我一下,一定执经叩问。

不管怎么说,至少原因是找到了。既然空闲区块不够,那就给它加上呗。好在LVM的一大特性就是方便扩展。

第一种扩展方式是添加硬盘,加一块硬盘上去,使用fdisk创建Linux LVM分区,然后创建PV,将PVE中创建的VG用vgextent扩展到新加的硬盘即可。

第二种是在pve更目录下创建一个虚拟磁盘。容量不用太大,32G足够。然后将虚拟磁盘挂载到loop,再用fdisk创建Linux LVM分区。这样的好处就是不用新加一块硬盘,缺点就是必须保证pve根目录空间够大。

这里重点讲一下第二种方式,第一种方式就是常规的硬盘挂载和分区,没有什么需要注意的地方。直接挂载虚拟磁盘文件在手里面没有多余的储存设备的情况下非常有用。

1、首先创建一个32G的虚拟磁盘文件

dd if=/dev/zero of=~/temp.img bs=1024M count=32       #count大小为32G,可以修改为自己需要的

2、为虚拟磁盘文件创建分区

fdisk ~/temp.img

在创建分区时,注意将Linux filesystem转换为Linux LVM。

%title插图%num

3、挂载虚拟磁盘文件

losetup -Pf --show ~/temp.img

命令完成后,将显示挂载到的loop设备,一般是loop0。

其中参数

-P 强制要求核心扫描loop设备中的分区表
-f 自动寻找并使用第一个未用的loop设备
--show 输出所分配的loop设备

可以使用lsblk命令查看loop0挂载情况,可以看到loop0和分区loop0p1已经挂载到系统上。操作结束后,可以使用losetup -d /dev/loop0卸载虚拟磁盘文件。

4、创建PV

pvcreate /dev/loop0p1

之后就按照lvm扩展的步骤进行扩展,具体扩展方法,就不赘述了,网上有很多相关资料。扩展完成之后,再次使用lvconvert修复lv。

lvconvert --repair /dev/local-vd1r1-hdd/local-vd1r1-hdd

有一点需要注意的就是,如果出现本文中的情况,千万不要去操作虚拟机或者更改出现问题LVM中的虚拟磁盘文件。我手贱去点了一哈恢复快照,然后......血的教训啊。

通过扩展LVM的vg,我是解决了上面的问题,然后火速备份虚拟机中的文件。重装了PVE,然后手动创建LVM分区和LVM-thin瘦池,手动创建的时候,预留了足够的硬盘空闲空间。

希望以后不会再次出现这种问题吧。

本作品采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可
标签: 暂无
最后更新:2021-03-22

管理员

这个人很懒,什么都没留下

打赏 点赞
< 上一篇
下一篇 >

文章评论

您需要 登录 之后才可以评论
放松一下
https://www.quarkbook.com/wp-content/uploads/2021/05/凤凰传奇-海底(Live).flac
分类
  • .NET/C#
  • Linux
  • 树莓派
  • 物联网
  • 科普
  • 笔记
  • 算法
  • 默认
最新 热点 随机
最新 热点 随机
在代码中判断龙芯新旧世界平台 Windows获取固定后缀的IPv6地址 目前为止,你可能找不到第二台支持志强的1L小主机(P350 Tiny+W-1350+ECC+双NVME+PCIE扩展)!!! iKuai(爱快)实现成都移动IPTV IPoE拨号 Linux EXT4分区误删除后数据恢复 C#连接到巴法云
在代码中判断龙芯新旧世界平台
树莓派.Net Core Iot入门系列篇(6):PWM JQuery中arrt()和prop()的区别 火狐浏览器禁止缓存 薛定谔的猫通俗解释 在.NET 6中System.Drawing.Common引发的“The type initializer for 'Gdip' threw an exception.”异常 Visual Studio 2022(VS2022) 密钥/激活码
最近评论
Eagle 发布于 8 个月前(10月21日) 参考博主教程成功搞定了成都移动IPTV组播转单播,电脑、手机都可以播放了。但目前有个问题,原IPTV...
rundoze 发布于 10 个月前(08月31日) 牛逼
cc21216695 发布于 2 年前(09月27日) 试了一下,加入启动项也无效,压根没有用
afirefish 发布于 3 年前(11月28日) 非常感谢,非常棒!
》随缘《 发布于 3 年前(11月20日) 最新【一键处理】方法: https://github.com/MrXhh/VSTools/rele...
书签
  • 打赏
  • 毒鸡汤
  • 米店
  • 金鱼直播间

COPYRIGHT © 2023 quarkbook.com. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

蜀ICP备15036129号-9

登录
注册|忘记密码?