如何解决 grub-probe 错误:未找到磁盘 lvmid/xxx

如何解决 grub-probe 错误:未找到磁盘 lvmid/xxx

运行 grub-probe 命令时,我遇到错误“未找到 lvmid”。

# grub-probe --target=fs_uuid /
grub-probe: error: disk `lvmid/R9xUrf-ONd8-wCXx-qfxt-m5Ox-JwKG-LrcAZI/TKMrA6-U6Ex-mjxI-CfF4-Wjdn-HDtv-d15mYq' not found.

客观的:

我想将根分区上挂载的磁盘从 ubuntu-lv(LV)切换到 ubuntu-tlv(thin LV),并从 ubuntu-tlv(thin LV)启动。

虽然我使用以下两种方法已经达到了目的,但在运行 grub-probe --target=fs_uuid /` 时仍然遇到错误“grub-probe: error: disk lvmid/xxx' not found”。我想知道:

  1. 错误原因
  2. 如何解决错误
  3. 在 grub-probe 中检查 lvmid 时引用了哪个文件

通过 rsync 将数据从 ubuntu-lv 复制到 ubuntu-tlv

# create: ubuntu-tlv, 01_os-installed
lvcreate -TL 500G ubuntu-vg/pool
lvcreate -TV 100G -n ubuntu-tlv ubuntu-vg/pool
lvcreate -sl 100%ORIGIN -n 01_os-installed /dev/ubuntu-vg/

# rsync: 01_os-installed -> ubuntu-tlv
mkfs.ext4 /dev/ubuntu-vg/ubuntu-tlv
mkdir -p /mnt/ubuntu-tlv
mount /dev/ubuntu-vg/ubuntu-tlv /mnt/ubuntu-tlv/
mkdir -p /mnt/01_os-installed
mount /dev/ubuntu-vg/01_os-installed /mnt/01_os-installed/
rsync -zahP /mnt/01_os-installed/ /mnt/ubuntu-tlv/

方法 1:使用 rsync 将数据从 ubuntu-lv 复制到 ubuntu-tlv

# generate: grub.cfg
tlv_dmpath=$(dmsetup info -c --noheadings -o name ubuntu-vg/ubuntu-tlv)
tlv_blkid=$(blkid -o value -s UUID /dev/ubuntu-vg/ubuntu-tlv)
echo "GRUB_DEVICE=\"${tlv_dmpath}\"" > /etc/default/grub.d/ubuntu-tlv.cfg
echo "GRUB_DEVICE_UUID=\"${tlv_blkid}\"" >> /etc/default/grub.d/ubuntu-tlv.cfg
\cp -a /etc/default/grub.d/ubuntu-tlv.cfg /mnt/ubuntu-tlv/etc/default/grub.d/
update-grub

# apply
reboot
cat /proc/cmdline
grub-probe --target=fs_uuid /
# Here, grub-probe: error: disk `lvmid/xxx' not found occurs

方法 2:chroot 后从 ubuntu-tlv(thin LV)启动

# chroot
mount --bind /dev /mnt/ubuntu-tlv/dev
mount --bind /proc /mnt/ubuntu-tlv/proc
mount --bind /sys /mnt/ubuntu-tlv/sys
mount /dev/sda2 /mnt/ubuntu-tlv/boot
mount /dev/sda1 /mnt/ubuntu-tlv/boot/efi
chroot /mnt/ubuntu-tlv

# generate: grub.cfg
update-grub
grub-install /dev/sda
exit

# apply
reboot
cat /proc/cmdline
grub-probe --target=fs_uuid /
# Here, grub-probe: error: disk `lvmid/xxx' not found occurs

附加信息:

  • 我已成功将 ubuntu-tlv 安装为根分区并可以从它启动。
  • id lvmid/R9xUrf-d15mYq 确实存在,并且对应于 ubuntu-tlv。
  • grub.cfg 文件中似乎没有对 R9xUrf-d15mYq 的任何引用。
# dmsetup info -c --noheadings -o name,uuid /dev/ubuntu-vg/ubuntu-*
ubuntu--vg-ubuntu--lv:LVM-R9xUrfONd8wCXxqfxtm5OxJwKGLrcAZIx5cahFfWJYaHao3WgG8GtSoEo187T0Z6
ubuntu--vg-ubuntu--tlv:LVM-R9xUrfONd8wCXxqfxtm5OxJwKGLrcAZITKMrA6U6ExmjxICfF4WjdnHDtvd15mYq

# lvs
  LV              VG        Attr       LSize   Pool Origin    Data%  Meta%  Move Log Cpy%Sync Convert
  01_os-installed ubuntu-vg swi-a-s--- 100.39g      ubuntu-lv 0.46
  pool            ubuntu-vg twi-aotz-- 500.00g                2.62   11.28
  ubuntu-lv       ubuntu-vg owi-a-s--- 100.00g
  ubuntu-tlv      ubuntu-vg Vwi-aotz-- 100.00g pool           13.12

# df -hT
Filesystem                         Type   Size  Used Avail Use% Mounted on
tmpfs                              tmpfs  3.2G  1.2M  3.2G   1% /run
/dev/mapper/ubuntu--vg-ubuntu--tlv ext4    98G   11G   83G  12% /
tmpfs                              tmpfs   16G     0   16G   0% /dev/shm
tmpfs                              tmpfs  5.0M     0  5.0M   0% /run/lock
/dev/sda2                          ext4   2.0G  130M  1.7G   8% /boot
/dev/sda1                          vfat   1.1G  6.1M  1.1G   1% /boot/efi
tmpfs                              tmpfs  3.2G  4.0K  3.2G   1% /run/user/0

相关内容