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
    • 最新
    • 标签
主页 / server / 问题 / 391302
Accepted
c2h2
c2h2
Asked: 2012-05-22 22:21:37 +0800 CST2012-05-22 22:21:37 +0800 CST 2012-05-22 22:21:37 +0800 CST

ext4 fs 是否可以在磁盘写入时因断电而完全无法恢复?

  • 772

假设您正在使用 ssd 或机械磁盘(操作系统也在同一磁盘上,没有电池/UPS)的 linux pc 盒中对磁盘进行全速写入:

cat /dev/urandom > omg.txt

如果在此过程中突然断电,或任何其他类型的不正常关机/重置。

文件会不会损坏无法修复(即任何数据都无法恢复?),文件系统是否有可能完全无法启动?

ext4
  • 3 3 个回答
  • 2203 Views

3 个回答

  • Voted
  1. Best Answer
    symcbean
    2012-05-23T01:00:25+08:002012-05-23T01:00:25+08:00

    文件是否已损坏且无法修复(即无法恢复任何数据?)

    可能,是的。有 2 条明显的途径可以发生这种情况。

    Ext4 是一个元数据日志文件系统——它只记录文件元数据(大小、位置、日期)的变化——而不是文件内容(btrfs 和 zfs 以很大的性能成本进行全数据日志记录)。因此,尽管您永远不必 fsck 磁盘,但并不意味着打开文件和关闭 + 刷新缓冲区之间的每个写操作都已完成。没有对文件数据写入的事务控制。

    第二种可能性是磁盘可能因电源尖峰而物理损坏。虽然其余的硬件往往会做好硬盘的隔离工作,但还是会有一些泄漏。

    文件系统是否有可能完全无法启动?

    这是一个非常不同的问题——这种可能性要小得多。当然,第一种情况仅适用于您在中断时碰巧正在编写内核、引导加载程序、ramdisk 等的情况。

    另请参阅unix.stackexchange 上的此问答

    • 3
  2. 0xFF
    2012-05-23T00:04:40+08:002012-05-23T00:04:40+08:00

    它不应该损坏您的文件系统(假设您使用 Ext4 并启用了障碍 - 默认情况下)。

    引自https://ext4.wiki.kernel.org/index.php/Ext4_Howto:

    默认情况下打开障碍

    这是一个以牺牲某些性能为代价提高文件系统完整性的选项(您可以使用“mount -o barrier=0”禁用它,建议您在进行基准测试时尝试它)。来自这篇 LWN 文章:“文件系统代码必须在写入 [journaling] 提交记录之前,绝对确保所有事务的信息都已写入日志。仅按正确的顺序进行写入是不够的;现代驱动器维护大型内部缓存,并将重新排序操作以获得更好的性能。因此,文件系统必须明确指示磁盘在写入提交记录之前将所有日志数据放到媒体上;如果提交记录先被写入,则日志可能已损坏。核心' s 块 I/O 子系统通过使用屏障使此功能可用;本质上,屏障禁止在屏障之后写入任何块,直到屏障之前写入的所有块都提交给媒体。通过使用屏障,文件系统可以确保它们的磁盘结构始终保持一致。”

    更多阅读:https ://lwn.net/Articles/283161/ 。

    • 2
  3. Paul Basov
    2012-05-22T22:36:26+08:002012-05-22T22:36:26+08:00

    这与您选择的文件系统无关,而是与您的硬盘驱动器/RAID 控制器上的写入缓存有关。

    如果断电,缓存中的所有内容都会丢失,通常不会影响您的操作系统,但文件可能会损坏,是的。

    如果您的服务器上有重要数据,请始终使用带电池的 UPS 或 RAID 控制器。

    • 0

相关问题

  • ext4 准备好用于生产了吗?

  • 仅连接到 Linux 的外部驱动器的文件系统

  • 慢速 ext4 fsck

  • ext3、ext4、ReiserFS 之间有什么区别?

  • 关于 ext4 的 FUD 是否合理?或者在某些生产系统中使用是否安全?

Sidebar

Stats

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

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve