“警告!/dev/mapper/server--vg-root 不存在。转到 shell!”

“警告!/dev/mapper/server--vg-root 不存在。转到 shell!”

所以我想我刚才搞乱了我的 Ubuntu 服务器。

我安装了一个 500GB 的硬盘,用 ext4 格式化它,然后想通过编辑 /etc/fstab 和 UUID 来静态挂载。

由于某种原因,我以某种方式删除了 UUID 中的“-”,因为我不知道为什么。因此,重新启动后,我得到了以下信息:

"Gave up waiting for root device. Common Problems:
 - Boot args (cat /proc/cmdline)
 - Check rootdelay = (did the system wait long enough?)
 - Check root = (did the system wait for the right device?)
 - Missing module (cat /proc/modules; ls /dev)
ALERT! /dev/mapper/server--vg-root does not exist. Dropping to shell!"

然后我得到一个非常有限的 BusyBox shell。

到目前为止,我尝试过使用实时 USB Ubuntu 桌面进行启动并安装启动驱动器,但访问它时只有内核版本和 grub 以及其他一些内容,但没有根文件“/etc、/usr、/home 等”,否则我只需要撤消对 fstab 的更改并尝试,但我甚至没有到达那里。

编辑(的输出fdisk -l):

Disk /dev/sdb: 320.1 GB, 320072933376 bytes
81 heads, 63 sectors/track, 122504 cylinders, total 625142448 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00094364

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *        2048   625142447   312570200   83  Linux

答案1

在 中initramfs输入:

#/sbin/lvm vgchange -a y
#vgchange -a y
#exit

如果您无法解决该问题,请输入以下内容:

ls /dev/mapper

现在,您应该已经找到了根(如/dev/vgname/lvname)。

reboot

然后在屏幕上选择一个内核,并选择e编辑并粘贴根值(如/dev/vgname/lvname):

/boot/vmlinuxxxxx root=uuid/dev/xxx.

然后,最后按Ctrl+X启动。

如果重启服务器后问题再次出现

  #/boot/grub/grub.cfg

at /vm/vmlinuz root=写入你的完整 lv 路径

如果问题没有解决,请尝试按如下方法修复 initramfs

1.进入服务器终端

      # sudo rmmod floppy

       #echo "blacklist floppy" | sudo tee /etc/modprobe.d/blacklis-floppy.conf
 #dpkg-reconfigure initramfs-tools
 #update-initramfs -u
 #update-grub
 #reboot
  1. 执行此

     #/etc/initramfs-tools/scripts/local-top/forcelvm
    

    内容如下:

     #!/bin/sh
      PREREQ=""
     prereqs()
      {
    echo "$PREREQ"
     }
    case $1 in
    prereqs)
    prereqs
    exit 0
    ;;
     esac
      . /scripts/functions
       lvm vgchange -ay
    

然后做

       # chmod +x `/etc/initramfs-tools/scripts/local-top/forcelvm`
       # update-initramfs -u -k all
  1. 备份 lvm2

            #apt-get install lvm2
            #cp /usr/share/initramfs-tools/scripts/local-top/lvm2  /tmp
    

编辑 lvm2

          #vi /usr/share/initramfs-tools/scripts/local-top/lvm2

在 modprobe -q dm-mod 和 activate_vg "$ROOT" 之间添加此行以初始化您的 lvm:

lvm vgchange -ayactivate_vg "$ROOT" 如果你找不到此行

在文件末尾的 exit 0 上方写入以下两行

           #lvm vgchange -ayactivate_vg "$ROOT"
           #activate_vg="$ROOT"
save the file

然后

            #update-initramfs -u
            #update-grub
            #reboot

答案2

按照以下步骤挂载lvm分区:

在实时会话中,打开一个终端

Ctrl++AltT

并运行:

sudo fdisk -l

这列出了系统的分区表,它看起来像这样:

Device Boot Start End Blocks Id System
/dev/sda1* 1    4864 39070048+ 83 Linux
/dev/sda2  4865 6691 14675377+ 83 LVM2_member ...

下一步是访问 /dev/sda2 分区。它是一个 lvm 分区。

为了安装所需的工具,请运行以下命令。

sudo apt-get update
sudo apt-get install lvm2

完成此操作后,运行 pvs:

sudo pvs

这将列出我们的物理卷 /dev/sda2 所属的卷组。其格式如下

PV VG Fmt Attr PSize PFree /dev/sda2 VolGroup01 lvm2 a- 148.94G 32.00M

字段 VG: 显示卷组。

上面的输出只是一个示例,表明我们关注卷组“VolGroup01”。

下一步是列出有关此卷组的信息:

sudo lvdisplay /dev/VolGroup01

它会抛出一堆输出,但我们关心的是 LV 名称。它看起来像这样:

LV Name /dev/VolGroup01/LogVol00

假设上面那个是我们需要挂载的分区,那么就用通常的方法挂载就可以了:

sudo mount /dev/VolGroup01/LogVol00 /mnt

现在,您可以在文件夹中找到您正在寻找的数据/mnt

答案3

对我来说,这是在 vgrename 出错后发生的。编辑新根的 grub.cfg 即可。此外,我还必须编辑 /etc/fstab,因为它保留了旧的根 vg/lv 值。

相关内容