我试图在 /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
为您完成这项工作。
resize2fs
LV,运行文件系统检查(e2fsck -f /dev/sdnX
),然后挂载它。