我们正在开发一个小型嵌入式 Linux 系统(2.6.35-ish),带有一个用于操作系统和应用程序的小型内部 NAND 设备(250-500Meg)和一个带有 8Gb SDHC SD 卡的 SD 卡用于数据。
可以随时切断设备的电源。
系统必须将数据存储到 SD 卡。这些数据非常重要……这是系统的全部目的。这些系统通常与远程位置的任何网络完全断开,每 4-8 周通过运动鞋网检索数据。
目前,我们只是在 SD 卡上安装了 VFAT。这主要是为了让第一批测试客户可以轻松地将数据手动复制到他们的 Win7 笔记本电脑上。
但是,我现在担心在错误的时间断电导致数据丢失只是时间问题。
配置此类系统以防止数据丢失的最佳方法是什么?JFFS2 在写入数据的方式方面听起来像是我想要的(并且性能需求根本不高),但是使用 block2mtd 等听起来相当笨拙。我也不确定卡的磨损均衡将如何交互用它。
做到这一点的最佳方法是什么?
编辑
我现在正在考虑离开文件系统 VFAT 并一次分配一天大小的文件,填充 0xFF,这应该会极大地限制电源循环故障的风险。然后我只能在这些预先创建的块中附加记录,希望 SD 卡不会太愚蠢以至于它们会擦除/磨损级别写入 0xFF 区域。
我可以使用 noatime,但是是否有等效的 VFAT nomtime 来防止写入修改后的时间字段?在创建新的一天的文件之前,我需要某种方法来阻止任何元数据更新。
编辑 2
电子堆栈交换中的某个人提醒我,NAND 上也有 ECC 数据,因此无法防止需要擦除。
那么,在这种情况下,通过 block2mtd 的 JFFS2 是否合适?
编辑 3
这比我想象的还要糟糕。即使您将完全相同的内容写入磁盘,我拥有的 SD 卡也会擦除数据块。擦除块是 64KB,这太大了,无法完全延迟写入。我将在 NAND 闪存中存储多达 128KB 的数据(我可以控制其写入行为),在一种日志中,然后将 128KB 块写入 SD 卡上 VFAT 分区中的 128KB 对齐文件(在如果其他 SD 卡有 128KB 擦除块)。
我的笔记本电脑上的本地 CUPS 守护进程在我的 CUPS 服务器上有一个远程打印机的条目。我的本地 CUPS 守护进程认为这台打印机已停止,但事实并非如此。CUPS 为我提供的唯一用于管理此远程打印机的界面是指向服务器上 CUPS 打印机的超链接。
当我不在本地网络上时尝试查询此远程打印机上的状态时,往往会发生这种情况。然后本地 CUPS 将永久标记它已停止并说它找不到它。
但是,一旦我回到本地 LAN,它就永远不会删除'stopped'
状态。(即使重新启动也无济于事)
我可以再次打印的唯一方法是停止我的本地 CUPS 进程,编辑/etc/cups/printers.conf
文件以手动将状态更改为“空闲”,然后重新启动 CUPS 服务器。
肯定有更好的方法吗??
编辑:
哦,是的,我之前通过创建一个新的远程打印机条目解决了这个问题。但是,我找不到任何方法来删除旧的远程打印机条目。我也必须为此编辑printers.conf。有没有办法管理远程打印机条目?
编辑:
这是 CUPS 1.4.3。我还发现了一个“cupsenable”命令,该命令仅在“新增功能”页面和在线的 printers.conf 文档中提及。下次我会尝试一下,看看它是否有效。
我最近在影响几个虚拟机的 ESXi 主机上的硬盘驱动器遭受了一个小得令人发狂但非常重要的损坏。有一个我非常想恢复的文件,当然它以某种方式从我的常规备份中消失了。最近的副本是 6 个月前的。原来我需要那个......哎呀。
细节:
1) 我在 Parted Magic 可启动 ISO 中使用了 ddrescue(很棒的工具)来恢复有问题的 VM 驱动器的 99.98%。不幸的是,错误似乎几乎完全是最近的文件写入......所以当然它们正是我最需要恢复的扇区。
2) 驱动器在读取坏扇区时出现 IO 错误,但偶尔会成功读取以前的坏扇区!所以,恢复还是有可能的。比这更频繁地会出现某种重大故障并使驱动器旋转和备份。哦,大约 1/4 的降速不会恢复。(需要硬重启,关机不起作用)最后,几乎每个坏扇区读取都伴随着美妙的咔嗒声。
3) 重要的VM 磁盘是NTFS 格式的。
4) 我可以(通常)以只读方式安装损坏的 NTFS 卷,并且我可以(稍微不那么频繁地)导航到包含我需要的文件的文件夹。但是,当我对文件夹执行“ls”操作时,有问题的文件似乎总是会出现 IO 错误。文件夹中的其他文件不会出现 IO 错误。
5) 我试过使用 ntfsinfo/etc ......这听起来正是我需要的......但它根本不会打开分区。(令人沮丧,因为'mount'通常会)
6) 该文件是 Excel 2003 时代的 XLS 文件,所以我不确定我能想出任何字符串来搜索原始磁盘映像。(可能是 6 个月大版本的一部分?)
我真的很想使用类似 debugfs 的工具。但是,从手册页看来,只要能够打开分区,ntfs 工具就可以完成这项工作。特别是,我想知道 IO 错误是否可能纯粹在文件的元数据中,以及目录记录是否可以很好地恢复以复制文件内容。作为最后的手段,我可以检索的任何部分文件内容都会很棒。
我以前写过(相对简单的)内核模块,所以我可以编译一个特殊的 NTFS 模块,启用(或添加)更多调试信息。(该文件至少值得花几天的时间来尝试恢复......而且我在这个过程中学习了很酷的东西)
任何指针?
编辑:
更多驱动错误信息:
/var/log/messages 当然显示了很多 NTFS-fs 错误......但我终于费心去翻译我通常得到的未处理的感知代码消息:感知密钥 0x3,ASC=0x11,ASCQ=0x4。(这似乎转化为 UNRECOVERED READ ERROR - AUTO REALLOCATE FAILED)。
当驱动器转速下降时,我看到一条“scsi0: * BusLogic BT-958 Initialized”消息。我不确定是 Linux SCSI 驱动程序、ESXi …