Ubuntu – Trying to repair LVM disk with fsck

fsck

I'm on Ubuntu 16, and I'm trying to repair my startup disk. I have followed the instructions here, but once I'm at the root access of Recovery mode, it still says that the disk is mounted and it can't run.
If I try sudo fsck -f /dev/sda3, it just replies:

fsck from util-linux.
Anyone know why it might do that? According to this question, when fsck reports this command, you have to use fsck.ext4. However, when I do that, I still get a message about the volume being in use.

I see there's another question about this on Ubuntu 18, but there's no answer.

Most answers suggest using a Live Disk, but Etcher isn't working on MacOS at the moment, and it's surely not unreasonable to get this done from the recovery command prompt.

It's a vanilla Ubuntu install on a Dell Inspiron laptop.

Performing umount /dev/sda3 gives me "/dev/sda3 not mounted."
Performing fsck.ext4 -f /dev/sda3 gives me "/dev/sda3 is in use".

The output of lsblk /dev/sda gives:

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

(obviously, I'm typing this in on another computer) I've left out the sizes, hope that's clear.

I've also tried umount -lf /. After doing that, when I run fsck, I get a message that it cannot check if the filesystem is mounted due to missing mtab file.

Best Answer

To check the LVM it is done with the following steps.

First we can see our drive layout with 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   

as we can see the LVM is named xubuntu--vg-root, but we cannot run fsck on this name as it will not find it. We need to get the whole name. To do this we are going to run the lvm lvscan command to get the LV name so we can run fsck on the LVM.

The following commands should be ran as sudo or as a root user.

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

As we can see our name to check is /dev/xubuntu-vg/root so we should be able to run fsck on that name

If the /dev/xubuntu-vg/root is not ACTIVE, we need to make it active so that we can run the check on it

lvchange -ay /dev/xubuntu-vg/root

Now it should look like this:

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

Now we can run the fsck on the LVM volume.

fsck /dev/xubuntu-vg/root

or to run a forced check with assume yes

fsck -fy /dev/xubuntu-vg/root

Adding a screen shot since VirtualBox will not let me copy and paste.

enter image description here

Hope this helps!