pvresize --setphysicalvolumesize 300G /dev/sda

pvresize --setphysicalvolumesize 300G /dev/sda

我试图在 /datos 留下更多可用空间,但却破坏了我的服务器的配置。

  • 首先,我发现了 LVM 配置。

  • 然后在 VMWARE 客户端上我单击编辑设置并向虚拟磁盘添加 50GB。

  • 然后 pvresize 300G /dev/sda2 唯一的 PV,属于 vg_admision1vm

  # pvdisplay

  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               vg_admision1vm
  PV Size               249.51 GiB / not usable 2.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              63874
  Free PE               0
  Allocated PE          63874
  PV UUID               dQO15U-Zyhb-LSSY-P7do-BXnj-3PC5-E127UE

  # pvresize --setphysicalvolumesize 300G /dev/sda

  WARNING: /dev/sda2: Overriding real size. You could lose data.
  Physical volume "/dev/sda2" changed
  1 physical volume(s) resized / 0 physical volume(s) not resized


  # pvdisplay 

  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               vg_admision1vm
  PV Size               300.00 GiB / not usable 3.00 MiB
  Allocatable           yes
  PE Size               4.00 MiB
  Total PE              76799
  Free PE               12925
  Allocated PE          63874
  PV UUID               dQO15U-Zyhb-LSSY-P7do-BXnj-3PC5-E127UE
  • 最后,我在 vg_admision1vm 上执行了扩展逻辑卷的操作。
 # lvextend -L+30G /dev/mapper/vg_admision1vm-LogVol04 
  Size of logical volume vg_admision1vm/LogVol04 changed from 140.38 GiB (35938 extents) to 170.38 GiB (43618 extents).
  device-mapper: resume ioctl on  failed: Invalid argument
  Unable to resume vg_admision1vm-LogVol04 (253:2)
  Problem reactivating LogVol04
  Releasing activation in critical section.
  libdevmapper exiting with 1 device(s) still suspended.
  • 出现该错误后,我读到,调整 LV 大小时必须调整 fs 大小。但我没有这样做。之后,任何 lv 命令都挂起,然后我重新启动机器,在启动时我得到:
/dev/mapper/vg_admision1vm-LogVol04 is mounted.
e2fsck: Cannot continue, aborting.
  • 我认为重新调整大小LogVol04是个好主意,因为我的理解是设备映射器无法创建设备,/dev/mapper/vg_admision1vm-LogVol04因为文件系统和逻辑卷的大小不同。如何再次调整大小vg_admision1vm-LogVol04以减少 30GB?

  • 我还认为可以使用 dmsetup 以某种方式正确配置设备映射器。

  • /dev/mapper/vg_admision1vm-LogVol04 曾经安装在 /datos 上。

  • 在 vg_admision1vm 中属于更多的逻辑卷但显然没有受到影响。

  • 不知道如何工作,但我注意到 logVOl04 的表是空的,也许定义一个表可以工作,但我不知道如何根据给定的逻辑卷定义一个表。

  • 我也尝试了这个,并注意到这个奇怪的状态:

    # umount /datos
    unmount: /datos: not mounted
    # mount -t ext4 /dev/sda2 /datos
    /dev/sda2 already mounted or /datos busy
    mount: according to mtab, /dev/mapper/vg_admision1vm-LogVol04 is already mounted on /datos
    

答案1

我认为以下是答案:

pvresize --setphysicalvolumesize 300G /dev/sda

警告:/dev/sda2:覆盖实际大小。您可能会丢失数据。

您应该在调整 PV 大小之前调整分区大小。现在您在 250GB 分区上有 300GB PV。我很惊讶这是在没有--force选项的情况下允许的。

幸运的是,您没有扩展 FS。LV 目前不可用 - 它无法激活并保持暂停状态:

设备映射器:失败时恢复 ioctl:参数无效,无法恢复 vg_admision1vm-LogVol04(253:2)重新激活 LogVol04 时出现问题,在关键部分释放激活。libdevmapper 退出,仍有 1 个设备暂停。

减少 LV 对我来说很有效:只需lvresize -L-30G /dev/vg_admision1vm/LogVol04对这个可怕的问题回答“是”,设备就会恢复。

现在您应该扩展分区(当设备正在使用它时可能无法实现)或者减少 PV 并重新启动。

有大量教程教你如何调整分区大小。这是一个容易出错的过程。你最好备份一下。使用时fdisk你需要删除分区,然后以最大尺寸重新创建它。(g)parted后台会为你完成这些操作。

一个建议:绝不在损坏的设备上运行 fsck。首先尝试恢复数据,在这种情况下是丢失的块。在丢失部分的文件系统上运行 fsck 会毁掉它。

幸运的是,那里没有写入任何内容,因此不会出现数据损坏的情况。

第二条建议:查看lsblk输出lsblk -s。扩展时从“底部”开始:磁盘、[分区]、[LUKS]、PV、LV、FS。缩减时需要从顶部开始,首先缩减文件系统,然后缩减 FS 正下方的设备,等等。

这里您扩展了磁盘,因此首先应该扩展分区,然后扩展 PV。这样 VG 中就会有可用空间,因此您可以调整 LV 的大小,然后调整 FS 的大小。

答案2

我今天也遇到了类似的问题。我不记得pvresize --setphysicalvolumesize很久以前我为什么使用这个命令,但这是一个坏主意。

扩展硬盘后pvresize /dev/sdnX即可完成工作,无需指示任何大小。

/dev/sdnX我的解决方案是启动实时发行版,使用扩展 PV 分区fdisk,删除分区,然后使用更多扇区重新创建分区(如有必要,请重新启动),然后pvresize /dev/sdnX。按照 Martian 的建议,parted为您完成这项工作。

resize2fsLV,运行文件系统检查(e2fsck -f /dev/sdnX),然后挂载它。

相关内容