![在可启动的 USB 上执行 fsck 时,挂载的根目录显示错误,但卸载的根目录没有错误。我该如何修复?](https://linux22.com/image/927483/%E5%9C%A8%E5%8F%AF%E5%90%AF%E5%8A%A8%E7%9A%84%20USB%20%E4%B8%8A%E6%89%A7%E8%A1%8C%20fsck%20%E6%97%B6%EF%BC%8C%E6%8C%82%E8%BD%BD%E7%9A%84%E6%A0%B9%E7%9B%AE%E5%BD%95%E6%98%BE%E7%A4%BA%E9%94%99%E8%AF%AF%EF%BC%8C%E4%BD%86%E5%8D%B8%E8%BD%BD%E7%9A%84%E6%A0%B9%E7%9B%AE%E5%BD%95%E6%B2%A1%E6%9C%89%E9%94%99%E8%AF%AF%E3%80%82%E6%88%91%E8%AF%A5%E5%A6%82%E4%BD%95%E4%BF%AE%E5%A4%8D%EF%BC%9F.png)
我被这个问题困住了。文件系统检查台式计算机上的命令显示挂载根目录的文件系统错误。因此,我创建了 Ubuntu 的可启动 USB 棒,并使其启动。然后,我尝试通过执行文件系统检查在 USB 上文件系统检查无法修复已安装的目录。但是,文件系统检查USB 驱动器上没有显示任何错误。我该如何修复此文件系统错误?
(这文件系统检查在台式计算机上)
$ sudo fsck -nf /dev/nvme0n1p2
fsck from util-linux 2.31.1
e2fsck 1.44.1 (24-Mar-2018)
Warning! /dev/nvme0n1p2 is mounted.
Warning: skipping journal recovery because doing a read-only filesystem check.
Pass 1: Checking inodes, blocks, and sizes
Inodes that were part of a corrupted orphan linked list found. Fix? no
Inode 6816186 was part of the orphaned inode list. IGNORED.
Inode 6816770 was part of the orphaned inode list. IGNORED.
Inode 6883264 was part of the orphaned inode list. IGNORED.
Inode 6883789 was part of the orphaned inode list. IGNORED.
Inode 6887919 was part of the orphaned inode list. IGNORED.
Inode 6887920 was part of the orphaned inode list. IGNORED.
Inode 6887925 was part of the orphaned inode list. IGNORED.
Inode 6887929 was part of the orphaned inode list. IGNORED.
Deleted inode 6887947 has zero dtime. Fix? no
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Block bitmap differences: -(9588738--9588745) -(9588760--9588764) -(9597955--9597964) -(9998851--9998855) -(27306830--27306834) -(27307548--27307557) -34598400
Fix? no
Free blocks count wrong (43144465, counted=43144229).
Fix? no
Inode bitmap differences: -6816186 -6816770 -6883264 -6883789 -(6887919--6887920) -6887925 -6887929 -6887947
Fix? no
Free inodes count wrong (14401240, counted=14401183).
Fix? no
/dev/nvme0n1p2: ********** WARNING: Filesystem still has errors **********
/dev/nvme0n1p2: 557352/14958592 files (0.5% non-contiguous), 16670447/59814912 blocks
(这文件系统检查在可启动 USB 上)
ubuntu@ubuntu:~$ sudo fsck -fy /dev/nvme0n1p2
fsck from util-linux 2.31.1
e2fsck 1.44.1 (24-Mar-2018)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/nvme0n1p2: 557879/14958592 files (0.6% non-contiguous), 16680714/59814912 blocks
ubuntu@ubuntu:~$ sudo fsck -fn /dev/nvme0n1p2
fsck from util-linux 2.31.1
e2fsck 1.44.1 (24-Mar-2018)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/nvme0n1p2: 557879/14958592 files (0.6% non-contiguous), 16680714/59814912 blocks
ubuntu@ubuntu:~$
供参考:
Ubuntu 18.04 LTS 适用于桌面版和可启动 USB 盘
终端窗口无法打开,而 xterm 可以打开。我认为文件系统错误可能会导致此打开失败。
答案1
当您遇到这样的消息时,最好了解一些关于 inode 是什么以及什么是孤立 inode 的背景信息。
在https://unix.stackexchange.com/questions/290116/what-is-an-orphaned-inode我读过 Stephen Kitt 的以下解释:
孤立的 inode 是未附加到文件系统中的目录条目的 inode,这意味着无法访问它。
出现孤立的 inode 可能有多种原因:
被删除但保持打开状态 (常见做法) 的临时文件会占用文件系统上的 inode;如果系统重新启动而没有正确关闭,这些 inode 会保留下来并成为孤立的文件系统损坏可能会损坏目录而不影响目录所包含文件的 inode;这些 inode 随后会成为孤立的 fsck 为 lost+found 中的孤立 inode 创建新的目录条目。
要了解 inode 系统,请查看https://linuxhandbook.com/inode-linux/,作者:Eric Simard。这本书有点技术性,但读起来很有趣。简而言之:
inode 是一种数据结构……它存储了文件除名称和实际数据之外的所有信息。
感谢您的提问;它让我对 Linux 有了更好的了解!
答案2
显然,您的第一个检查是对活动的已安装文件系统的“只读”检查。这并不可靠。当分区未安装时,从您的 USB 实时会话进行的检查是正确的。
所以不用担心。系统驱动器每次启动时都会自动进行快速检查,并且暂时进行更严格的检查,这在 ext4 文件系统中运行得很快。您仍然可以通过forcefsck
在卷的根目录中创建一个空文件来强制在启动时进行全面检查:
sudo touch /forcefsck
它将在您的根文件系统中创建该文件,并在系统重新启动时向系统发出信号以对其进行全面检查。检查完成后,将自动删除空文件。