AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题

问题[e2fsck](unix)

Martin Hope
Jürgen
Asked: 2019-01-14 05:58:30 +0800 CST

e2fsck 没有说什么?

  • 2

摘要: E2fsck 发现-n选项没有错误,但使用-p(preen)。它更正了错误,但没有给出任何错误消息。该错误仅通过退出代码反映。如何解释这个?

我正在使用带有 Ext2 文件系统的 USB 硬盘驱动器来存储多台机器的备份。最近,我在该驱动器上获得了巨大的数据吞吐量,因此我决定进行额外的文件系统检查。总的来说,我e2fsck用不同的选项进行了四次跑步。以下是我(以 root 身份)使用的命令及其输出,其中还包含e2fsck. 不幸的是,有些短语被本地化为德语,但(可能)重要的是英语:

第一次运行,只读:

# e2fsck -nv /dev/sdb1; echo $?
e2fsck 1.41.1 (01-Sep-2008)
WD-Elements: sauber, 709312/61046784 Dateien, 96258851/244182016 Blöcke
0

第二次运行,只读强制:

# e2fsck -nfv /dev/sdb1; echo $?
e2fsck 1.41.1 (01-Sep-2008)
Durchgang 1: Prüfe Inodes, Blocks, und Größen
Durchgang 2: Prüfe Verzeichnis Struktur
Durchgang 3: Prüfe Verzeichnis Verknüpfungen
Durchgang 4: Überprüfe die Referenzzähler
Durchgang 5: Überprüfe Gruppe Zusammenfassung

  709312 inodes used (1.16%)
   95492 non-contiguous inodes (13.5%)
         # von Inodes mit ind/dind/tind Blöcken: 109958/2429/7
96258851 blocks used (39.42%)
       0 bad blocks
       8 large files

  564029 regular files
  121351 directories
       0 character device files
       0 block device files
      11 fifos
  506224 links
   23073 symbolic links (19397 fast symbolic links)
     839 sockets
--------
 1215527 files
0

第三次运行,整理:

# e2fsck -pv /dev/sdb1; echo $?
WD-Elements: sauber, 709312/61046784 Dateien, 96258851/244182016 Blöcke
0

第 4 次运行,强制整理:

# e2fsck -pfv /dev/sdb1; echo $?

  709312 inodes used (1.16%)
   95492 non-contiguous inodes (13.5%)
         # von Inodes mit ind/dind/tind Blöcken: 109958/2429/7
96258853 blocks used (39.42%)
       0 bad blocks
       8 large files

  564029 regular files
  121351 directories
       0 character device files
       0 block device files
      11 fifos
  506224 links
   23073 symbolic links (19397 fast symbolic links)
     839 sockets
--------
 1215527 files
1

命令一个接一个地直接发出,中间没有触及任何其他东西。

请注意差异:

  • 在前两次运行中,文件系统以只读方式打开(-n选项),而后两次正在整理运行(-p选项)。

  • 第一次和第三次运行不是强制的,第二次和最后一次运行是(-f)。

  • 所有运行都报告了一致的文件系统数据,但有一个例外:最后一次运行 ( -pfv) 报告了不同数量的“使用的块”。

  • 除了最后一次运行以外的所有运行都以状态 0 退出,最后一次 ( -pfv) 以状态 1 退出。

显然,最后一次强制整理运行 ( -pfv) 发现(并纠正了)其他运行无法找到的文件系统错误。不幸的是,它没有在其输出中给出任何关于该错误的提示。

现在我的问题:

  • 在那里发现并纠正了什么错误?是否像使用过的块数不正确一样简单?

  • 什么可能导致该错误?文件系统总是干净地卸载。

  • 文件系统错误最终由e2fsck. 但是我可以信任其中存储的数据吗?难道不是首先导致该文件系统错误的任何东西也损坏了磁盘上的数据吗?这将使磁盘上的所有数据一文不值。或者这是偏执狂?为什么?

最后一个问题区分文件系统和数据。在这方面,Mikel对“ Do journaling filesystems保证在电源故障后不会损坏? ”的回答具有高度相关性。不幸的是,它专注于日志文件系统,因此不适用于 Ext2。

Gilles对“如何测试 fsck 完成的文件系统更正”的回答也很好读:据此,fsck仅保证文件系统的一致状态,不一定是最新状态。

更新 1

Luciano Andress Martini在他的评论中指出,观察到且明显令人费解的行为e2fsck可能是由执行机器中的 RAM 错误引起的。虽然在可比较的情况下是一个高度相关的方面,但它似乎不适用于这里:我用“memtest86+”检查了 RAM 过夜,它完成了 16 次通过而没有错误。此外,我使用另一台机器(不同的硬件、内核和版本)在被测驱动器上执行e2fsck -nfv、e2fsck -pfv和运行。这些没有发现任何文件系统错误,并确认了上次报告的文件系统数据e2fsck -fve2fscke2fsck上面显示的命令,特别是使用的块数。还确认了非强制检查报告的块总数(244182016)。

更新 2

telcoM 的回答表明,观察到的行为e2fsck可以用e2fsck处理非常旧的文件系统时文件系统功能设置的更改来解释。不幸的是,这种非常一致的解释在这里并不适用:文件系统实际上是用更新版本的mke2fs(1.42.8) 创建的,它启用了特性ext_attr, resize_inode, dir_index, filetype, 。上述运行并未改变这一点。sparse_superlarge_filee2fsck

更新 3

同时,USB 驱动器成功通过了无损读写坏块测试(耗时 3 天,是的:指定的块大小(-b)和块数(-c)很重要)和几次离线 SMART 测试。

linux e2fsck
  • 2 个回答
  • 1667 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve