我有两个系统。一方面,我决定尝试增加虚拟磁盘 /dev/sda。因此,我使用 fdisk 删除分区,并使用更大的结束大小但相同的起始位置重新创建它。 (一开始,我犯了一个错误,将分区创建为扩展分区,然后恢复为主分区。)我还确保类型 (id) 设置为 8e (Linux LVM)。
我将新分区写入磁盘,重新启动并遇到启动问题。
现在磁盘无法安装。所以我尝试使用以下命令重新创建 initramfs:
Recovery Option 3 (shell):
vgscan -v --mknodes
vgchange -a y
mkdir /mnt/root
mount /dev/mapper/centos-root /mnt/root
mount -o bind /dev /mnt/root/dev
mount -o bind /sys /mnt/root/sys
mount -o bind /proc /mnt/root/proc
mount /dev/sda1 /mnt/root/boot
chroot /mnt/root
cd /boot
dracut -f
grub2-mkconfig -o /boot/grub2/grub.cfg
但这没有效果。然后我从同一个虚拟机恢复控制台注意到以下内容:
sh-4.2# blkid /dev/sda2
/dev/sda2: PTTYPE="dos"
sh-4.2#
而在第一个正常启动的虚拟机上(两者都是同一模板的克隆),我看到以下内容:
# blkid /dev/sda2
/dev/sda2: UUID="owcjYz-ohz3-3obA-KaL0-wcyn-ayc5-EG1Fgc" TYPE="LVM2_member"
因此,基于在启动时找不到 centos-root 的错误,我开始怀疑这是因为 /dev/sda2 设置为 PTTYPE="dos" 而不是 TYPE="LVM2_member" :
但如何在 /dev/sda2 上更改此设置?我试过:
tune2fs /dev/sda2 -U random
返回“尝试打开 /dev/sda2 时超级块中的错误幻数”和“无法找到有效的文件系统超级块”。
谷歌搜索尚未证明有成果。使用搜索字符串“更改分区类型 LVM2_member”会生成 fdisk 页面,显示如何更改 fdisk 中的分区类型,我在上面已经这样做了。
搜索“change UUID”会导致tune2fs命令无法在fdisk分区上运行,并会产生上述错误。搜索“PTTYPE”仅产生带有 blkid 输出的页面。
有人能分享一下 fdisk 创建后如何更改 /dev/sda2 分区的 TYPE 和 UUID 吗?
也许我应该使用另一个命令?所有这些都必须从恢复控制台完成。
好盘的详细blkid输出:
[root@sys01 ~]# blkid -po udev /dev/sda2
ID_FS_UUID=owcjYz-ohz3-3obA-KaL0-wcyn-ayc5-EG1Fgc
ID_FS_UUID_ENC=owcjYz-ohz3-3obA-KaL0-wcyn-ayc5-EG1Fgc
ID_FS_VERSION=LVM2\x20001
ID_FS_TYPE=LVM2_member
ID_FS_USAGE=raid
ID_PART_ENTRY_SCHEME=dos
ID_PART_ENTRY_TYPE=0x8e
ID_PART_ENTRY_NUMBER=2
ID_PART_ENTRY_OFFSET=1026048
ID_PART_ENTRY_SIZE=133191680
ID_PART_ENTRY_DISK=8:0
[root@sys01 ~]#
坏盘的 blkid(主机 sys02 ):
sh-4.2# blkid -po udev /dev/sda2
ID_PART_TABLE_TYPE=dos
ID_PART_TABLE_SCHEME=dos
ID_PART_ENTRY_TYPE=0x8e
ID_PART_ENTRY_NUMBER=2
ID_PART_ENTRY_OFFSET=1026048
ID_PART_ENTRY_SIZE=133191680
ID_PART_ENTRY_DISK=8:0
sh-4.2#
答案1
为了清楚起见,使用可用标签在此处重新发布我的答案。
pvcreate 负责设置我们在上面看到的 UUID 和 TYPE 标志。但是,通过 fdisk /dev/sda 在重新创建的分区上执行此操作将导致该分区上的数据无法访问。这是因为它显然会覆盖其他元数据。
所以我实际上需要做的是:
- 使用 fdisk 在另一个磁盘上创建一个新分区。
- 在新磁盘上运行 pvcreate。
- 使用以上命令调出不可挂载的VG和LV。
- vgend 到新磁盘。
- pvmove 扩展到新磁盘。
- vgreduce 从旧磁盘中删除。
- fdisk 然后 pvcreate 删除旧分区并使用正确的标签重新创建它。
- 再次重复此过程,将范围移回原始分区。