运行 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”。我想知道:
- 错误原因
- 如何解决错误
- 在 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