尝试使用 fsck 修复 LVM 磁盘

尝试使用 fsck 修复 LVM 磁盘

我在使用 Ubuntu 16,我正在尝试修复启动盘。我已按照说明操作这里,但一旦我进入恢复模式的根访问权限,它仍然说磁盘已安装并且无法运行。如果我尝试sudo fsck -f /dev/sda3,它只会回复:

fsck from util-linux。有人知道为什么会这样吗?根据对这个问题,当 fsck 报告此命令时,您必须使用 fsck.ext4。但是,当我这样做时,我仍然收到有关卷正在使用的消息。

我看到有关于 Ubuntu 18 的另一个问题,但没有答案。

大多数答案都建议使用 Live Disk,但是 Etcher 目前无法在 MacOS 上运行,并且从恢复命令提示符完成此操作肯定是合理的。

这是在戴尔 Inspiron 笔记本电脑上安装的原始 Ubuntu。

执行后umount /dev/sda3显示“/dev/sda3 未安装”。
执行后fsck.ext4 -f /dev/sda3显示“/dev/sda3 正在使用中”。

lsblk /dev/sda 的输出显示:

sda                     disk
   sda2                 part
   sda3                 part
      ubuntu--vg-root   lvm   /
   sda1                 part

(显然,我是在另一台电脑上输入的)我没有标明尺寸,希望大家看得清楚。

我也尝试过umount -lf /。这样做之后,当我运行时fsck,我收到一条消息,由于缺少 mtab 文件,它无法检查文件系统是否已挂载。

答案1

要检查 LVM,请按照以下步骤进行。

首先我们可以通过以下方式查看驱动器布局lsblk

# lsblk
NAME                 MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda                    8:0    0    20G  0 disk  
└─sda1                 8:1    0    20G  0 part  
  └─xubuntu--vg-root 253:0    0    19G  0 lvm   / 
sr0                   11:0    1  1024M  0 rom   

我们可以看到 LVM 名为xubuntu--vg-root,但我们无法fsck在此名称上运行,因为它找不到它。我们需要获取完整名称。为此,我们将运行命令lvm lvscan来获取 LV 名称,以便我们可以fsck在 LVM 上运行。

以下命令应以sudoroot用户身份运行。

# lvscan
  inactive          '/dev/xubuntu-vg/root' [<19.04 GiB] inherit
  inactive          '/dev/xubuntu-vg/swap_1' [980.00 MiB] inherit

正如我们所见,我们要检查的名称是,/dev/xubuntu-vg/root因此我们应该能够使用fsck该名称运行

如果/dev/xubuntu-vg/root不是ACTIVE,我们需要激活它,以便我们可以对其进行检查

lvchange -ay /dev/xubuntu-vg/root

现在它看起来应该是这样的:

# lvscan
  ACTIVE            '/dev/xubuntu-vg/root' [<19.04 GiB] inherit
  inactive          '/dev/xubuntu-vg/swap_1' [980.00 MiB] inherit

fsck现在我们可以在 LVM 卷上运行。

fsck /dev/xubuntu-vg/root

或者使用“假设是”运行强制检查

fsck -fy /dev/xubuntu-vg/root

由于 VirtualBox 不允许我复制和粘贴,因此添加屏幕截图。

在此处输入图片描述

希望这可以帮助!

答案2

你可以尝试这个命令:

sudo fsck.ext4 -f /dev/sda6

假设 Ubuntu 已开启/dev/sda6

相关内容