mat*_*975 9 filesystems embedded data-recovery
我运行一个小的uClibc
和busybox
一个x86设备上基于嵌入式系统。我正在使用 initramfs,但我还在ext3
IDE 模式下的紧凑型闪存设备上安装了一个自定义目录,我用它来存储由自定义编写的 C++ 应用程序创建的持久测量日志记录数据。我选择了ext3
文件系统,因为在我读过的几本书(Karim Yaghmour 的《构建嵌入式 Linux 系统》和Christopher Hallinan 的《嵌入式 Linux 入门》)中,在 IDE 模式下使用 CF 驱动器时,建议使用它来防止断电。这一点尤为重要,数据至关重要。
但是,由于我之前的问题混淆了如果在文件写入过程中发生断电,如何恢复损坏的 ext3 文件中的一些评论,看来实际上该文件系统并没有提供针对因电源造成的数据损坏的安全保证损失。所以我想知道是否
ext3
实际上是这个设置的最佳选择?initramfs.cpio
文件是否也有损坏的风险?我已经看到并阅读了这个相关问题的答案:日志文件系统是否保证在断电后不会损坏?,但它并没有完全涵盖一些让我感到困惑的事情。
我意识到我问了很多问题,但似乎尽管阅读了很多材料,但我从根本上无法理解断电时我的数据所面临的风险。
Ale*_*ios 11
与所有与安全相关的事情一样,没有任何保证,但您还需要平衡风险(和成本)与概率。根据经验(自黑暗时代以来我一直在运行数十个 *nix boxen),我从来没有真正遇到过严重的电源导致的文件系统损坏。
其中一些机器甚至运行在非日志文件系统(通常是 ufs 和 ext2)上。其中一些是嵌入式的,还有一些是像诺基亚 N900 这样的手机——因此根本无法保证良好的电源供应。
并不是说文件系统损坏不会发生,只是它发生的概率足够低,您不必担心。尽管如此,没有理由不对您的赌注进行对冲。
回答你的字面问题:
ext4
——当作者建议使用 时ext3
,他们实际上是在说'不要使用不稳定或非日志文件系统,如ext2
')。试试吧ext4
,它已经很成熟了,并且有一些不错的非旋转磁盘选项,可以延长闪存设备的预期寿命。如果您有第二个 IDE 通道,请在其中插入第二个 CF 卡并定期获取文件系统的备份。有几种方法可以做到这一点:rsync
, cp
dump
, dd
, 即使使用md(4)
(软件 RAID)设备(偶尔添加第二个驱动器,让它同步,然后将其删除——如果这两个设备一直处于活动状态,则它们运行相同的风险文件系统损坏)。如果您使用 LVM,您甚至可以抓取快照。对于数据收集嵌入式设备,我只使用临时解决方案,它安装第二个文件系统,复制数据日志,然后立即卸载它。如果您担心设备具有良好的启动映像,请将启动管理器的第二个副本和所有必要的启动映像粘贴到第二个设备上,并将计算机配置为从任一 CF 卡启动。
我不会相信同一设备上的第二个副本,因为存储设备比稳定的文件系统更容易出现故障。很多更多的时候,在我的经验,到目前为止(在工作中,人们为周五下午磁盘故障惊人地高的机会苦半玩笑。这几乎是一会儿每周的事件)。无论磁盘是否在旋转,它都可能出现故障。因此,如果可以,请将鸡蛋放在两个篮子中,这样可以更好地保护您的数据。
如果数据特别敏感,我会定期访问设备,将备份 CF 更换为新的,然后重新启动,让它的fsck
所有文件系统保持良好状态。