相机为什么不支持日志文件系统?


15

像NTFS,HFS +或ext4,用于SD卡?毕竟,日记减少了数据丢失的机会,这对于摄影师而言很重要。在巴厘岛时,我丢失了一张SD卡,其中可能包含一千张照片,这是我之前或之后都没有机会参观的地方。

下次旅行之前,我可以采取任何预防措施吗?在相机中格式化存储卡?

我理解SDXC(exFAT)和Sony Memory Stick提供的可靠性不比SD卡高吗?


2
在SD上运行这些文件系统中的任何一个,都可能很快杀死闪存。
Tim Seguine 2014年

1
@PhilipKendall不是我的消息来源,但是这个SE答案提到了它:serverfault.com/questions/41674 / ... ...无论如何,SSD硬盘驱动器实际上需要特殊的逻辑以避免在使用常规文件系统时浪费闪存。像SD卡中那样的廉价闪存甚至不太适合这种负载。FAT是一个非常简单的文件系统,非常适合相机造成的连续存储负载并导致闪存损耗低。尽管如此,主要问题已经在所提供的答案中:增加了复杂性而没有收益。
Tim Seguine 2014年

2
这里的错误是在卡上保留1000张照片而没有备份。如果旅行到您将无法访问要备份的计算机的远程位置,则应携带备份设备。
Jim Garrison 2014年

1
@KartickVaddadi日志文件系统将使寿命减少10%(5年至4.5年),您的数字来源是什么?您是否可以参考一些研究?
菲利普·肯德尔2014年

1
@KartickVaddadi:逻辑扇区号和物理磁盘块之间的映射层会创建故障模式,这与通常与磁介质相关联的模式不同;不了解隐藏在其中的映射层的文件系统无法避免该层造成的任何故障模式。
超级猫

Answers:


28

让我们做一些成本效益分析:

  1. 带日志的文件系统更加复杂-这意味着更长的开发时间,更多的错误,更多的电池电量消耗,更高的生产成本等。

  2. 日志文件系统解决的问题-损坏的FS数据但文件数据完整-通过第三方数据恢复工具可以很好地解决。

  3. 日志文件系统不能解决所有问题,您确实需要良好的备份-不仅存在带有内置备份的系统(双卡插槽),此功能还用于使专业人士购买更昂贵的相机。

  4. 没有大的存储卡可靠性危机,那些卡相当可靠,故障相对较少。

  5. 最后,在Windows和Mac上都没有开箱即用的日志文件系统。

所以-如果您是负责产品的经理,您是否会批准一个项目,1.以不完整的方式解决已经解决(使用第三方工具)的问题,2.不足以成为卖点,并且3.将市场上有很大一部分无法使用相机(至少在没有安装竞争品牌不需要的其他软件的情况下)?


3
实际上,OSX可以读取NTFS卷,并使用终端foo对其进行写入。
贾斯汀·迪林

1
@JustinDearing:整洁!您应该将其作为质量检查交叉张贴到askdifferent中
2014年

OS X中的默认文件系统配置(意味着,所有Mac都预装了该配置)是启用了日记功能的HFS +。实际上,Time Machine 需要启用日记功能。
2014年

1
@strugee-我不是说OS X没有日记文件系统-我说OS X和Windows都没有开箱即用的单一系统(Windows根本不了解HFS +,而Macs完全(默认情况下)不能写NTFS)
2014年

@尼尔啊,没关系。我误解了。
2014年

11

日记文件系统仅确保文件系统的完整性。如果卡确实发生故障,则整个文件系统都会发生故障。现在,如果您有一些坏的存储单元,那么您将只使用占据该空间的任何照片,而日志文件系统也将无济于事。换句话说,这是您描述的事件的错误解决方案。

真正的解决方案是冗余,这就是为什么您会从尼康,宾得和佳能那里找到高端产品的原因,这些产品提供双存储卡插槽,并且能够一次将图像写入两张卡。这为您提供了即时备份。如果这些相机不方便您使用,则必须寻找其他方法进行频繁备份。某些人每天在笔记本电脑,便携式驱动器和光盘上执行此操作。

虽然我还没有尝试过,也不确定它的实用性,但是您也可以使用WiFi设备或卡(仅适用于SD / SDHC AFAIK),将其在捕获时自动发送到其他联网设备(例如平板电脑或平板电脑)储藏良好的东西。

尽管SDXC默认将格式格式化为exFAT,但您也可以在FAT32上对其进行格式化。大多数相机都会接受这两种方式。但是,可靠性的差异可能为零。


是的,但这不是唯一的失败模式,不是吗?以我为例,对整个卡进行多次写入的压力测试没有检测到错误,因此我认为这不是存储单元损坏的问题。只是一些腐败。关于坏的存储单元,日志文件系统将确保仅丢失那里存储的照片,而不丢失整个文件系统(包含数千张照片),对吗?如果日志文件系统是解决该问题的错误解决方案,恐怕我看不到正确的解决方案。旅行时,我并不总是拥有笔记本电脑,平板电脑或便携式磁盘来备份照片。
Vaddadi Kartick

日志文件系统可确保整个文件系统是一致的,但实际上它们并不会为损坏做任何事情。您将需要一些冗余。
伊泰2014年

1
@KartickVaddadi我认为最好假设当您购买任何类型的闪存时,它都会在某个时间点失败。如果您不愿意在野外进行投资以降低风险,那么您可以做的最好的事情就是确保从信誉良好的制造商那里购买可靠的卡。
Peng Tuck Kwok

4
@KartickVaddadi您正在尝试吞下骆驼,以免过度劳累地吃a。如果您在设备上花费了“数千美元”,那么您还是必须购买第二张额外的存储卡才能利用第二个卡槽,再花20美元呢?
迈克尔C

1
@KartickVaddadi:进行多次写入整张卡的压力测试除了将您的卡逼近不可靠性之外,不会做任何其他事情,因为这是我们正在谈论的闪存而不是磁性介质。闪存(至少基于NAND)在擦除块开始失败之前仅支持有限的写入次数。转换层将通过在写入时将失败的块映射到工作块来尝试对我们隐藏。
2014年

5

据我所知,所有要在零售市场上出售的数码相机都采用了相机文件系统(DCF)设计规则DCF标准的一部分是FAT文件系统必须由兼容的设备使用。该标准已被数码相机行业采用为在存储设备中存储数字图像和声音文件的事实上的标准,以确保从一个品牌到另一个品牌的互操作性。

有关DCF的更多信息,请参见/photo//a/46387/15871


该标准是否会阻止相机供应商使用NTFS。HFS +或其他文件系统(如果插入了使用这些系统之一格式化过的卡),还是要求相机简单地说“卡不可用”?
2014年

某一时刻规范不包括FAT32 IIRC。目前(DCF v2,2010年发布),该规范仅限于所有FAT变体+ exFAT。因此,如果成员愿意,将来有扩展DCF的先例,以包括其他文件系统。
James Snell 2014年

@supercat它将超出现在编写的标准。标准始终会进行修订。但是问题似乎是在问为什么当前的任何相机都不支持日志文件系统。
迈克尔C

@JamesSnell 常规FAT16在每个分区上也达到2 GiB的最大值,因此允许稍作更新的操作解决了一个非常现实的问题。在非Microsoft系统中,似乎已经在2000年左右实现了对FAT32的广泛支持,并且在使用512字节逻辑扇区大小的情况下,即使今天每个分区2 TiB,FAT32的使用也更加有用。
2014年

@MichaelKjörling-我很清楚FAT16的局限性,我并不是说FAT32是在2010年添加的(那是在添加exFAT的时候)。关键是CIPA发现扩展规范很有用,并且可以在将来的文件系统中进行扩展。显然,他们看到了对FAT32以外的东西的需求。
James Snell 2014年

5

归结为解决“有市场吗?” 和“采用的障碍是什么?”。即使这是值得的,但它们中的每一个都为采用提供了巨大的障碍。

即使为相机的处理器提供了一个合适的库(也不保证),NTFS也会产生许可费用,并且Windows外部的支持会是零散的。尽管HFS +和ext4在Windows中没有本机支持,但消除了许多潜在的客户群。因此,这些产品没有市场。

如您所述,SCXD标准需要exFAT,因此您会看到出现了对更大,更快卡的支持,但这并不是那么简单,因为更多的代码也会出错,而对于像相机这样的嵌入式系统,您确实不希望推出固件更新,因此希望可以以正确的格式读取和写入exFAT卡,但实际上可能不使用任何可以提供任何保护的exFAT功能。因此,采用也存在很大的障碍。

大多数卡的故障模式很可能是控制器,而不是存储单元,这是一项繁重的工作(制造成本),几乎没有收益。

索尼MS(MemoryStick)仍然是SLC或MLC闪存,只是控制器和物理连接在系统之间有所不同。在遇到这种情况时,最好的保护是随身携带一个小型便携式备份设备,它们体积小巧,价格相对便宜(并且可能与Journaled文件系统也不兼容。)


NFS不是磁盘文件系统,它是一种网络协议(就其解决的问题而言,与它相当熟悉的FTP大致相当)。您是说HFS +(Mac OS本地使用的文件系统)吗?
2014年

我确实的意思是HFS +,将进行编辑:)
James Snell 2014年

4

一个明显的原因:因为相机上的日记文件系统很可能无法帮助您(或任何人)。

作为一个非常高级的概述,这是日记文件系统的作用:在每次写入元数据(或数据,如果还进行了数据日记处理)之前,请首先写入将要更改的内容。只有在确定磁盘上有磁盘后,才继续进行更改。基本上,这意味着如果在写入过程中电源中断,则可以使用日志恢复文件系统,然后继续执行日志中的任何操作。

这在台式PC上很有价值,在台式PC上可能会断电,或者用户可能会按下“重置”按钮或拔下插头等。在服务器(电源故障)和笔记本电脑(“重置”按钮)上也很有价值,但价值不大。

相机由电池供电。它具有关闭开关,但这通常会告诉固件将其关闭-这不是物理电源断开。通常没有重置按钮,或者如果有重置按钮,则基本上不会使用。因此,您不需要日记,固件只需完成写入即可。唯一的例外是您物理上卸下了电池。也许使用外部电源会发生这种情况,但除此之外,相机绝不能经历不正常的关机。

另外,几乎没有闪存设备可以很好地处理意外的电源故障。让他们处于部门搬迁(损耗均衡)的中间,所有赌注都关闭了。因此,即使您拥有日记文件系统,也仍然无法避免电源故障。

日记文件系统不能保护您避免以下情况:

  • SD等卡上的闪存控制器中的错误。
  • 相机的SD主机硬件中的错误
  • 相机上文件系统代码中的错误
  • 固件的SD驱动程序中的错误
  • 媒体部门的损失
  • 硬件故障(例如,由于宇宙射线,静电放电,EM噪声,水等引起的)

实际上,日记文件系统更为复杂,因此实际上您更有可能遇到文件系统错误。它会放大写入,因此您更有可能遇到闪存控制器或SD主机错误。而且您会稍早耗尽闪光灯。


3

日志文件系统对SD卡(或任何NAND闪存设备)不利。

对于NAND闪存设备,写操作非常昂贵,并且对于相同的活动,日志文件系统倾向于比非日志文件系统写入更多内容。

因此,SD卡的运行速度会变慢,并且日记文件系统的使用时间会减少。

基于FLASH的存储在其核心处使用了一种称为NAND FLASH的技术。NAND FLASH可读可写,但有一些皱纹。

  1. 基本的读/写单位是“页面”,而不是扇区。2007-2008代的FLASH设备的页面大小为2K,在2009代中迁移到4K页面大小,而在2011代中已观察到16K页面大小。

  2. 您无法随时编写页面-在写入页面之前,必须先将其擦除。但是您不能一次擦除单个页面-您必须擦除(通常)64个连续页面的整个“擦除块”(128Kbytes或256Kbytes,具体取决于年代)。并且,在擦除完该块之后,就不能以任意顺序写入页面,而必须从第一个页面开始依次写入。

  3. 积木会随着时间的流逝而磨损。在一定数量的擦除周期之后,一个块将永久“变质”,因此它将不再可靠地保存数据。由于对其他页面的写入活动甚至是读取的结果,页面也会产生数据错误!

http://wiki.laptop.org/go/How_to_Damage_a_FLASH_Storage_Device

编辑:值得一提的是,日记文件系统不会比非日记文件系统带来显着优势。


1
Flash设备使用块重映射层(FTL),因此您不会一次又一次地写入同一物理块。Android使用ext4之类的文件系统,因此我看不出您的论据不适合使用Flash的有效性。
Vaddadi Kartick

Android设备通常具有一些RAM和闪存,不是吗?
Michael C

1
块重映射不会在一个块变坏之前增加每个块的写总数,它只是将写操作散布到整个卡上,因此几乎每个块都以相同的速率磨损。与非日记系统相比,日记系统使用更多的写操作来执行相同的操作,因此,使用日记系统时,卡损坏之前的总写入次数会更快。
Michael C

1
Android存在一些与存储相关的问题(I / O滞后),他们正在实施TRIM命令以改善这种情况。SD卡制造得既便宜又小巧,而不是坚固耐用。有一些更健壮的选择,但它们更昂贵。
S182 2014年

1
Android之所以使用JSF,是因为这些设备会不断地从多个进程中写入信息,并且它们很容易意外关闭(OS块,电池电量低等)。这不是最好的,但他们需要它。另一方面,Cameras中的持久性操作要简单得多,并且JFS会带来比解决方案更多的问题。日记文件系统更具弹性,不易损坏,但不能幸免。,在大多数情况下,您可以使用“ scandisk”修复未记录日志的FS。
S182 2014年

2

不同的文件系统在使用它们的系统中需要不同数量的RAM。从理论上讲,需要将文件写入FAT文件系统的系统可以通过单个512字节的缓冲区来解决,尽管性能会非常糟糕。扩展到两个或三个512字节缓冲区将极大地改善性能。超越这一点将使性能有所改善,从较大的卡中获得最佳性能要比从较小的卡中获得最佳性能要多得多的内存,但是仅包含足够缓冲区以使用较小的卡来实现最佳效率的相机仍然能够即使效率较低,也可以与较大的产品一起使用。

一个棘手的问题集中在以下事实上:存储卡标准规定每个卡的行为就像一个512字节扇区的编号集合,可以按任意顺序独立地进行读写,但这不是将数据存储在内存中芯片上的方式。牌。典型的存储卡中使用的存储芯片分为528字节的页面。依次将它们分为256个或更多的块。写入页面后,如果不擦除页面及其块中的所有其他页面,则无法对其进行重写。从理论上讲,SD卡有可能通过将其块中的所有数据复制到RAM,擦除该块并将整个块写回但将新数据写入一个扇区来满足写入512字节扇区的请求。 。在实践中,性能将是可怕的。代替,写入扇区将导致SD卡选择空白页,将数据及其扇区号和各种辅助信息写入其中(原因是页面为528字节而不是512字节),并以某种方式跟踪该位置数据。当空白页面供不应求时,控制器将识别一个页面,该页面的页面大部分已被最近写入的页面所取代,将所有当前页面从该页面复制到空白页面,然后擦除整个现在的冗余页面。所有这些逻辑完全由卡本身处理,而无需相机的任何干预。当空白页面供不应求时,控制器将识别一个页面,该页面的页面大部分已被最近写入的页面所取代,将所有当前页面从该页面复制到空白页面,然后擦除整个现在的冗余页面。所有这些逻辑完全由卡本身处理,而无需相机的任何干预。当空白页面供不应求时,控制器将识别一个页面,该页面的页面大部分已被最近写入的页面所取代,将所有当前页面从该页面复制到空白页面,然后擦除整个现在的冗余页面。所有这些逻辑完全由卡本身处理,而无需相机的任何干预。

所有这些逻辑意味着,除了摄像机可以看到的FAT32或其他文件系统之外,SD卡还需要具有自己的块分配和管理系统。该系统中发生的任何问题都可能导致数据丢失,无论哪种系统位于其顶部。从理论上讲,许多存储卡旨在确保即使在某些操作过程中意外断电,该存储卡也能够将卡的状态回滚到操作开始之前的状态,或者将其运行到完成状态(如果所有必要的数据均已写入,并且该卡只是在清除冗余数据)。不幸的是,卡在实现这种逻辑的方式上有所不同。如果意外的断电浪费了卡的存储管理表,

就个人而言,我认为最好由SD联盟指定一个独立于FAT32的文件系统,或者至少指定即使一个卡必须被读取为FAT32卷,也应该使用基于文件的通信方式来编写。协议。一张知道每个文件的扇区组的卡可以优化其碎片整理程序,并且与必须将磁盘显示为一堆独立的512字节的磁盘相比,可以更好地防止数据丢失。部门,但无论好坏,这都不是事情的具体规定。


我认为已经有一个标准的解决方案:块重映射层,其顶部是标准文件系统(NTFS,HFS +,ext4)。它也用于Android的移动设备。摄像头操作系统可能更原始,但需要修复。
Vaddadi Kartick

@KartickVaddadi:块重映射层是标准的;我的观点是,如果实现了块重映射层的存储卡至少在某种程度上可以识别文件系统的布局,那么与没有这种知识的情况相比,它可以更有效地优化重映射的布局。
2014年

可以,但是我更愿意尝试一些经过测试的方法,而不是在块设备层和文件系统之间提出新的接口。我们不是在这里讨论CS研究:)我想拿一些可以在我的计算机和手机上正常工作的东西放在相机上。
Vaddadi Kartick

@KartickVaddadi:我为具有各种限制的嵌入式设备设计了一些损耗均衡的闪存文件系统。如果损耗平衡系统被告知“我要写入文件;此处
supercat

...这是数据;而已。我想写另一个文件;这是数据;就是这样”,它的行为比只给一堆单独的扇区工作而又不知道它们代表什么要聪明得多。此外,与每个文件关联的所有数据块都可以用标签标记,例如,“块文件ID 193291374,更新273837199的347。”
supercat

1

假设卡只是被损坏,并且您没有扔掉它或将其覆盖,我强烈建议您尝试使用PhotoRec。(它使我摆脱了几个月前稍差一点的状况。它甚至发现一些幸存下来的图像被删除了一年或两年。)

http://www.cgsecurity.org/wiki/PhotoRec

关于日记FS,我有很多次相同的问题。正如其他人所说,与磁性介质相比,当前的闪存介质实际上是脆弱的,并且很难记录日志。由于相机的使用模式通常是拍摄一堆照片,请先读取它们,然后将其全部删除,因此对高级FS功能的需求不大。简单,经过测试的实现可能比日记的边际收益更重要。另一个好处是,FAT的愚蠢分配策略使PhotoRec等工具更容易使用。


我想在那种情况下我确实使用过PhotoRec。仍然感谢您的链接。
Vaddadi Kartick 2014年

1

1,如果您实际上丢失了卡,上帝将无法拯救您。您是什么意思在巴厘岛丢了卡?

2,日记的FS是为突然的OS故障或突然的电源故障之类的情况而构建的。当这些不良情况发生时,它们使FS元数据保持一致。如果您希望删除的文件回来,他们没有帮助。

3,坏块是基于NAND FLASH的存储设备中最关键的问题。写作时会出现坏块。因此,在为NAND FLASH存储选择FS时,应首先考虑写入频率。显然,就像其他所有人一样,日记式FS带来了更多的东西要写。

4,当然,日志记录的FS会发挥更大的作用。当然更复杂。但我认为,这些并不是我们不将其用于NAND FLASH的主要原因。

TADA ~~就这样。


1.请参阅我对AJ答案的评论。2.我没有手动删除文件。3.就像我在其他评论中所写的那样,您如何解释Android在闪存中使用日志记录的FS?它并不像您确定的那样糟糕。不丢失照片比减少卡的使用寿命更为重要。
Vaddadi Kartick 2014年

3
大多数日记式FS需要一个或多个守护进程/线程来管理其“日志”。(例如,对于EXT3,在Linux中为kjournald)如果环境不是一个没有进程/线程概念的成熟OS,将很难采用它们。
加夫2014年

再次@@ KartickVaddadi,请提供一些研究指示,表明日记文件系统只会使卡的寿命仅“微不足道”减少。这是您第二次声明它。
菲利普·肯德尔2014年

公平的问题,但是请记住,正如我已经说过很多次,Android使用它。如果导致媒体寿命的急剧减少,他们不会使用它,对吗?此外,我也想请您引用一项研究表明它会导致生命的急剧减少:)
Vaddadi Kartick

也许我们应该问@supercat,因为他是专家,而且我们俩都没有引用数据。
Vaddadi Kartick

-1

文件系统本身不需要太复杂,因为图像只是简单地写入卡中,在初始创建后几乎不需要对文件进行任何编辑,也不需要担心同时存在的文件I / O问题。在相机上。

数据完整性问题实际上是在硬件级别解决的,因为所有闪存本质上都是不稳定的。SD卡中的控制器会执行许多自身的检查和存储技巧,以确保数据有效。日记文件系统无济于事,因为它处理数据存储的完整性而不是文件操作的完整性。

相机使用如此简单(和高速)的文件操作,以至于复杂的文件系统会产生额外的成本和复杂性,从而导致I / O速度变慢,并可能引入更多的错误,这些错误可能由于更复杂的文件处理而导致数据丢失,而没有这样做。获得对相机的任何使用。


就我而言,文件系统已损坏,可能是由于相机的文件系统代码中的错误在极少数情况下触发的。日记将确保如果发生这种情况,文件系统更有可能不会受到损坏,这意味着您不会丢失数千张照片。
Vaddadi Kartick 2014年

3
@KartickVaddadi-您确定是文件系统损坏了,而不是SD卡本身损坏了吗?FAT表的文件损坏问题永远不会导致整个存储卡出现故障,除非存储卡本身发生故障,否则对于大多数照片来说,它应该很容易恢复。您如何确定确切失败的原因。
AJ Henderson

我能够使用那些忽略文件系统,读取设备上所有块并尝试找出文件内容的恢复工具之一,从笔记本电脑中恢复大部分照片。我无法用相机阅读它,这意味着我无法在一天的剩余时间内拍照,而且我再也没有去过那天去过的地方,所以这是一个错失的机会。
Vaddadi Kartick 2014年

2
@KartickVaddadi-是的,但这可能是文件系统或SD卡故障。如果清除了TOC,则无论使用FAT还是NTFS,您都将必须在文件系统上进行恢复。我仍然不确定日志文件系统是否会有所帮助。日记文件系统的主要优点是它可以从部分写入的文件中恢复,因为它知道文件或目录记录是错误的。您正在处理的最有可能是分配表损坏,可能是磁盘或文件系统故障。
AJ Henderson

2
@KartickVaddadi:我认为原则上应该总是尝试备有备用卡,如果正在使用该卡,则显示有任何故障迹象,请立即切换到备用卡,以免破坏任何可能导致损坏的数据。可以从有问题的卡中恢复。
超级猫
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.