如何解决启动时 /dev/mapper/rhel-root 不存在的问题?

如何解决启动时 /dev/mapper/rhel-root 不存在的问题?

我试图增加我的/dev/mapper/rhel-root尺寸。我有 136GB 的可用空间。为了进行测试,我从 GNOME 磁盘图形界面安装了 ext4、2 GB,然后卸载它。我使用pvresize --setphysicalvolumesize 1.8TB /dev/sda3命令将我的/dev/sda3容量从 1.7TB 增加到 1.8TB。我有/dev/mapper/rhel-root、、、下。/dev/mapper/rhel-home​之后我将root从100GB增加到101GB。此时,由于系统冻结,我重新启动了系统。现在,当启动电脑时,它抱怨不存在。我尝试登录救援模式并激活文件系统,但无法激活 root,但其他 3 个(、、)已激活。你能建议我如何解决这个问题吗?/dev/mapper/rhel-var/dev/mapper/rhel-swap/dev/sda3lvextend -L+1G /dev/mapper/rhel-root/dev/mapper/rhel-rootsda3homevarswap

非常感谢您抽出时间!

编辑1: 救援模式输出

启动消息: 启动

系统日志来自journalctl 日志1

日志2

进行任何更改之前的文件系统: 前

之后(从救援模式): 后

编辑2:[解决方案]步骤如下:在救援模式下使用fdisk调整大小 (d, n, t) /dev/sda3。然后用于vgscan -ay /dev/sda3激活 LV ( root, var, swap, home)。然后用它lvscan来检查所有LV是否正常激活。上次root没有激活是因为我没有这样做fdisk。最后进入exit救援模式并正常启动系统,即可正常启动。现在df -Th显示 LV 的尺寸相同。因此,我使用lvextend -L+99G /dev/mapper/rhel-root -r(我想为该文件添加 99GB root)来扩展该文件并调整其大小root。不要忘记-r选项,因为这给我带来了很多麻烦。

之前和之后:

[root@ldo etc]# lvscan
  ACTIVE            '/dev/rhel/home' [1.46 TiB] inherit
  ACTIVE            '/dev/rhel/var' [20.00 GiB] inherit
  ACTIVE            '/dev/rhel/root' [101.00 GiB] inherit
  ACTIVE            '/dev/rhel/swap' [96.00 GiB] inherit
[root@ldo ~]# df -Th
Filesystem            Type      Size  Used Avail Use% Mounted on
devtmpfs              devtmpfs   32G     0   32G   0% /dev
tmpfs                 tmpfs      32G   47M   32G   1% /dev/shm
tmpfs                 tmpfs      32G   12M   32G   1% /run
tmpfs                 tmpfs      32G     0   32G   0% /sys/fs/cgroup
/dev/mapper/rhel-root xfs       100G   76G   25G  76% /
/dev/sda2             xfs        10G  226M  9.8G   3% /boot
/dev/sda1             vfat       10G   11M   10G   1% /boot/efi
/dev/mapper/rhel-home xfs       1.5T  130G  1.4T   9% /home
/dev/mapper/rhel-var  xfs        20G  3.9G   17G  20% /var
tmpfs                 tmpfs     6.3G   56K  6.3G   1% /run/user/0
/dev/sdb1             vfat       30G  4.5G   25G  16% /run/media/root/RHEL-7_8 SE
tmpfs                 tmpfs     6.3G   40K  6.3G   1% /run/user/1000
[root@ldo ~]# lvextend -L+99G /dev/mapper/rhel-root -r
  Size of logical volume rhel/root changed from 101.00 GiB (25856 extents) to 200.00 GiB (51200 extents).
  Logical volume rhel/root successfully resized.
meta-data=/dev/mapper/rhel-root  isize=512    agcount=4, agsize=6553600 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=26214400, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=12800, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 26214400 to 52428800
[root@ldo ~]# df -Th
Filesystem            Type      Size  Used Avail Use% Mounted on
devtmpfs              devtmpfs   32G     0   32G   0% /dev
tmpfs                 tmpfs      32G   46M   32G   1% /dev/shm
tmpfs                 tmpfs      32G   12M   32G   1% /run
tmpfs                 tmpfs      32G     0   32G   0% /sys/fs/cgroup
/dev/mapper/rhel-root xfs       200G   76G  125G  38% /
/dev/sda2             xfs        10G  226M  9.8G   3% /boot
/dev/sda1             vfat       10G   11M   10G   1% /boot/efi
/dev/mapper/rhel-home xfs       1.5T  130G  1.4T   9% /home
/dev/mapper/rhel-var  xfs        20G  3.9G   17G  20% /var
tmpfs                 tmpfs     6.3G   56K  6.3G   1% /run/user/0
/dev/sdb1             vfat       30G  4.5G   25G  16% /run/media/root/RHEL-7_8 SE
tmpfs                 tmpfs     6.3G   40K  6.3G   1% /run/user/1000
[root@ldo ~]# lvscan
  ACTIVE            '/dev/rhel/home' [1.46 TiB] inherit
  ACTIVE            '/dev/rhel/var' [20.00 GiB] inherit
  ACTIVE            '/dev/rhel/root' [200.00 GiB] inherit
  ACTIVE            '/dev/rhel/swap' [96.00 GiB] inherit

答案1

有两个问题:

  1. 您没有调整/dev/sda3分区大小,只是调整了物理卷的“格式”。您需要使用parted或调整分区大小,fdisk然后使用pvresize将 LVM PV 格式的大小调整为分区的大小pvresize /dev/sda3(如果没有--setphysicalvolumesize此操作,则只会将 PV 的大小调整为分区的大小)。此后您应该能够激活rhel/root逻辑卷。

  2. 您没有调整逻辑卷上文件系统的root大小。用于resize2fs /dev/mapper/rhel-root将文件系统大小调整为 LV 的大小root(替换resize2fs为适合文件系统的工具rhel/root)。

答案2

正如 Vojtech Trefny 已经解释的那样,将 PV 调整为大于其实际容纳的分区的大小是错误的做法。

幸运的是,您还没有调整文件系统的大小:这使得更容易逆转。

在救援模式下,您需要使用lvm vgchange -ay --partial --activationmode degraded/dev/mapper/rhel-root显示。 (这些额外的选项允许激活显然缺少部件的 LV,除非特别要求,否则 LVM 不希望这样做。)

然后您需要手动安装它:mount /dev/mapper/rhel-root /mnt/sysimage

此后,您将可以访问位于 的 LVM 配置存档/etc/lvm/archive。由于根文件系统现在安装在/mnt/sysimage,因此实际路径将为/mnt/sysimage/etc/lvm/archive。配置存档文件是文本文件。找到最近的存档文件,该文件在开头附近有这样一行:

description = "Created *before* executing 'pvresize --setphysicalvolumesize 1.8TB /dev/sda3'"

将其复制到/tmp救援环境中(或外部任何地方/mnt/sysimage都可以)。然后卸载有问题的文件系统:umount /mnt/sysimage

停用 VG 以进行恢复:lvm vgchange -an root

然后将 LVM 配置恢复到发生错误之前的状态:

lvm vgcfgrestore --file /tmp/<backupfile>.vg rhel

现在您应该能够重新启动并回到开始的地方。

进行扩展的正确方法是 A) 首先扩展分割包含 PV,或 B) 如果磁盘上的可用空间不是紧接在sda3分区之后,则将可用空间放入新分区,将该分区放入 LVM PV(pvcreate /dev/sdaX其中 X 是新分区),然后添加该新分区PV 进入现有 VG:vgextend rhel /dev/sdaX。之后,您应该能够扩展根 LV 以及其中的文件系统。

相关内容