![如何解决启动时 /dev/mapper/rhel-root 不存在的问题?](https://linux22.com/image/185705/%E5%A6%82%E4%BD%95%E8%A7%A3%E5%86%B3%E5%90%AF%E5%8A%A8%E6%97%B6%20%2Fdev%2Fmapper%2Frhel-root%20%E4%B8%8D%E5%AD%98%E5%9C%A8%E7%9A%84%E9%97%AE%E9%A2%98%EF%BC%9F.png)
我试图增加我的/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/sda3
lvextend -L+1G /dev/mapper/rhel-root
/dev/mapper/rhel-root
sda3
home
var
swap
非常感谢您抽出时间!
编辑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
有两个问题:
您没有调整
/dev/sda3
分区大小,只是调整了物理卷的“格式”。您需要使用parted
或调整分区大小,fdisk
然后使用pvresize
将 LVM PV 格式的大小调整为分区的大小pvresize /dev/sda3
(如果没有--setphysicalvolumesize
此操作,则只会将 PV 的大小调整为分区的大小)。此后您应该能够激活rhel/root
逻辑卷。您没有调整逻辑卷上文件系统的
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 以及其中的文件系统。