记一次lvm故障

用于openstack的节点,发现宿主机磁盘空间不够用了。由于系统分区使用了lvm,想着把lvm扩展一下就ok了。

[root@Caron cinder]# df -h
Filesystem                       Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00  640G  611G  695M 100% /
devtmpfs                         126G     0  126G   0% /dev
tmpfs                            126G     0  126G   0% /dev/shm
tmpfs                            126G  4.1G  122G   4% /run
tmpfs                            126G     0  126G   0% /sys/fs/cgroup
/dev/sda1                        283M  100M  164M  38% /boot
tmpfs                            126G  4.1G  122G   4% /run/netns
tmpfs                             26G     0   26G   0% /run/user/0

通过命令查看后,发现vg中也没有剩余空间了,因此需要新的pv加入。

瞄中了/dev/sdh 盘,没有被使用。先用fdisk /dev/sdh 进行分区。

[root@Caron ~]# fdisk -l /dev/sdh 

Disk /dev/sdh: 399.4 GB, 399431958528 bytes, 780140544 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x93026f38

   Device Boot      Start         End      Blocks   Id  System
/dev/sdh1            2048   780140543   390069248   8e  Linux LVM

Note: 设置分区类型为linux LVM. 当别人需要操作磁盘的时候,提醒这盘已经用作lvm了。

创建pv, 加到对应的vg中:

[root@Caron ~]# pvcreate /dev/sdh1
[root@Caron ~]# vgs
  VG         #PV #LV #SN Attr   VSize   VFree 
  VolGroup00   3   2   0 wz--n- 650.81g     0 
  ss-volumes   9  22   0 wz--n-   3.27t 57.96g
[root@Caron ~]# vgextend VolGroup00 /dev/sdh1

加入之后,通过命令查看:

  WARNING: Device for PV J7U4NX-OkZt-yahj-AyHw-UYJm-xaEn-UoAndI not found or rejected by a filter.
  --- Volume group ---
  VG Name               VolGroup00
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  6
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                3
  Act PV                2
  VG Size               950.78 GiB
  PE Size               32.00 MiB
  Total PE              30425
  Alloc PE / Size       20826 / 650.81 GiB
  Free  PE / Size       9599 / 299.97 GiB
  VG UUID               BoJaAa-2cQ5-Fov5-6zY9-Bn33-CG1g-XdU1Yr

发现可用大小增加了,但是提示某个pv设备丢失。

在执行lvm扩展命令lvextend -l +100%FREE /dev/VolGroup00/LogVol00的时候,出现了如下错误:

Cannot change VG VolGroup00 while PVs are missing.

应该是由于VolGroup00 VG组的pv缺失所造成的。

一般没人去拔服务器上的盘,那可能就是被lvm的配置过滤掉了。遂打开lvm的配置文件查看:

[root@Caron ~]# cat /etc/lvm/lvm.conf
...
 filter = [ "a/sda/", "a/sdb1/", "a/sdc1/","a/sdd1/","a/sde1/","a/sdf1/","a/sdg1/","a/sdi1/","a/sdj1/","a/sdk1/","a/sdl1/","a/sdm1/","a/sdn1/","a/sdp1/","r/.*/"]
...

发现有些盘符被lvm所忽略掉了

可以看到,sdh是是用于逻辑卷的。因此在过滤规则中加上/dev/sdh。然后重启systemctl restart lvm2-lvmetad.service

再次执行lvextend -l +100%FREE /dev/VolGroup00/LogVol00的时候,出现了如下错误:

Device still marked missing because of allocated data on it, remove volumes and consider bgreduce --removemissing.

此时pv /dev/sdh 已经不再丢失,且已经成功加入到VG组.但是由于分配的数据,设备仍然标记为丢失。

在查阅许多资料之后,发现可以使用restoremissing 参数来恢复:

vgextend --restoremissing VolGroup00 /dev/sdh1

再次执行lvextend命令的时候,提示成功。
重新resize一下lvm大小:

[root@Caron ~]# resize2fs /dev/VolGroup00/LogVol00
[root@Caron ~]# df -h | more
Filesystem                       Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00  936G  612G  283G  69% /
devtmpfs                         126G     0  126G   0% /dev
tmpfs                            126G     0  126G   0% /dev/shm
tmpfs                            126G  4.1G  122G   4% /run
tmpfs                            126G     0  126G   0% /sys/fs/cgroup
/dev/sda1                        283M  100M  164M  38% /boot
tmpfs                            126G  4.1G  122G   4% /run/netns
tmpfs                             26G     0   26G   0% /run/user/0

可以看到lvm扩展成功。

### LVM逻辑卷扩容过程中硬盘故障修复方案 #### 故障现象描述 当尝试对LVM逻辑卷进行扩容时,如果操作不当可能会导致元数据丢失或其他严重问题。例如,在一次MySQL binlog占用过高的情况下进行了直接的云盘操作而非分区操作,并随后执行了`partprobe`和`resize2fs`命令,最终未能成功完成扩容并引发了文件系统错误以及LVM信息丢失的情况[^3]。 #### 数据备份与安全措施 面对此类情况,首要任务是对现有数据实施保护措施。建议立即停止所有写入操作以防止进一步的数据覆盖风险。对于重要业务环境中的服务器,应尽快联系专业的数据中心支持团队获取帮助。在此之前,尽可能创建一份完整的磁盘镜像副本用于后续分析和测试恢复方法。 #### 使用TestDisk工具扫描与重建分区表 为了找回可能被误删除或修改过的分区结构,可以借助开源软件TestDisk来进行深入检测: ```bash sudo apt-get install testdisk # 安装TestDisk工具 sudo testdisk # 启动程序向导界面 ``` 按照提示选择受损设备并让其自动查找丢失的分区录。一旦找到疑似目标,则可将其保存回磁盘从而恢复正常访问路径。 #### 手工修正LVM配置文件 假如上述手段仍无法解决问题,那么就需要考虑手动编辑 `/etc/lvm/backup/*` 下面的相关备份档案来重置PV(物理卷), VG (卷组),LV (逻辑卷)之间的关联关系。此步骤非常复杂且具有高度破坏性,因此务必谨慎行事并且确保已经做好充分准备(比如拥有最新的LVM状态快照)。 #### 验证修复效果 经过一系列补救之后,应当小心地验证各项服务能否正常启动运行,特别是那些依赖特定挂载点的应用实例。可以通过如下方式检查当前LVM布局是否合理有效: ```bash pvs # 查看所有的物理卷详情 vgs # 列举现有的各个卷组概况 lvs # 展示各逻辑卷的状态参数 vgchange -ay # 激活全部可用的卷组成员 mount /dev/vgname/lvname /mntpoint # 尝试重新挂接指定位置 ``` 以上就是针对LVM逻辑卷扩容失败所引发的一系列潜在问题及其对应的解决方案概述[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值