exFAT格式的存储卡容易损坏数据?

作者:bokz

无论贴吧/群聊/91,我们经常能看到有人在争论ns虚拟系统的tf卡用fat32还是exFAT。

常见的论点是“exFAT的tf卡用着用着就容易数据损坏”。但是缺很少有人给出原因和理由。

最近,在贴吧里看到一篇帖子提到了这个问题,并且给出了外文网站的一篇文献。
经过查看后,我认为基本能说服我接受“exFAT确实有问题”这一观点了,所以也想着做一个翻译转过来,帮助大家排坑。

先说高度概括的总结

ns的官方系统hos对于文件的读写过于频繁(几乎每个程序的读取请求都在写入文件,非常离谱),在系统意外死机(比如金手指搜内存)时,这些读写中的文件就很容易损坏。
FAT32格式是有文件表备份机制的,所以就算损坏了也有备份可用。
而exFAT没有备份机制。
所以这也就阴差阳错的导致了“exFAT的tf卡容易数据损坏”。
正版系统的情况下,游戏存档和系统文件保存在机身内置空间(FAT32文件系统),tf卡只装游戏。
即便是tf卡里的内容损坏,重新下载游戏就是了,而且正版系统死机的情况也很少,发生问题的几率就更低了。
但是虚拟系统就不一样了,它的系统文件也装在tf卡里,这万一数据损坏丢失,那虚拟系统可就跟着一起坏了。

下面是网站链接和精翻
wiidatabase.de/bitte-nutzt-nicht-exfat-fuer-switch-microsd-karten/
这是个德文网站,建议翻译成英文后阅读。

翻译正文(带有一些专业名词,酌情观看):


请不要将 exFAT 用于 Switch microSD 卡

这是一篇警示性质的通告文章,针对的是在 Nintendo Switch 上使用exFAT文件系统的MicroSD卡。目前知道这个问题的人似乎还不是很多。
使用 exFAT 会导致数据丢失!

介绍
超过 32 GB ( SDXC ) 的 MicroSD 卡出场时候都标配exFAT文件系统。
exFAT 是由 Microsoft 开发的,因此使用此文件系统的每个人都必须支付授权费用。而不巧的是,exFAT 在 SDXC 标准中是强制性的,因此其他公司别无选择只能跟着使用。
这也是为什么任天堂的ns在插入 exFAT 格式的 microSD 后,才会“需要”更新对 exFAT 的支持。
不然任天堂每卖出去一台 Switch 就得向微软支付授权费用。

所以到底是什么情况?
自从自制软件开始出现,就有人警告过不要将 exFAT 用于 Switch 的 microSD 卡。因为从长远角度来看,exFAT会导致数据丢失。原因是任天堂ns系统的 FAT 驱动有缺陷,即使是简单的读取操作它也会不断写入文件和文件夹。
这些文件写入动作永远没法与文件系统正确同步,这也就意味着:在任意程序退出/重新启动/关闭时,文件描述符会丢失,随后就会从SD卡的文件分配表中丢失。exFAT和FAT32 都会发生这种情况。
但由于 exFAT 它没有文件分配表的备份机制,因此文件和文件夹的丢失就无法挽回了。(FAT32有备份,丢失了也能自动找回)
顺便说一句,官方应用程序(如游戏)(通常)会干净利落地结束,这就是这个问题比较少见的原因。而上面提到的文件描述符是每个应用程序都持有的,因此在强制关机的时候这个问题也可能发生。

我应该怎么办?
如果你的 microSD 卡被格式化为 exFAT文件系统,我们建议你备份所有数据并将其格式化为 FAT32(32 KB 簇)。在 Windows 下,资源管理器已经无法直接选择FAT32格式进行格式化了。作为替代,必须使用 guiformat(一个软件,在原文中给出了下载链接)。然后只需将所有数据再次复制回来即可。

那有游戏大于 4GB 怎么办呢?
这根本不成问题 - 官方数据(如游戏)总是切分成 4 GB大小的分片。
其他途径的游戏,更多资料见下:

    splitNSP(软件,下载链接见原帖) - 用于分割大型 NSP
    XCI cutter(软件,下载链接见原帖) - 用于分割大型XCI

顺便说一句,使用 FAT32可以避免烦人的archive bit问题,也可以确保自制软件无法读取数据。(这句话的翻译存疑,欢迎大佬指正)

但是我用 exFAT 没有问题啊,并且已经使用了 xx 年了!
举个例子,如果每个人都告诉你不要闯红灯,但你非要闯也确实没出什么事情。你觉得你有问题吗?

尤其是对于新人,仅仅因为“我用的好好的”这种单一情况,就毫无根据地给出自己的意见是极不负责的。
但可惜的是,我还经常能看到这样的说辞,所以才促成了这篇文章的诞生。

在下面这些GitHub 问题链接里,你会发现许多知名的自制软件开发人员都在反馈这个问题,甚至包括来自 Hekate 的 CTCaer 。
他们都是这个领域的专家,反馈这个问题更不可能只是为了吓唬你!
如果你确实听不进去,那以后出问题了可不要抱怨。

为什么 Atmosphère(大气层) 不重写正确的SD卡驱动?
甚至有人讨论过为什么大气层不把这个问题修复了。但要知道, FS 模块是系统里最大的模块之一。
明明只需重新格式化 SD 卡即可解决问题,对比下来重写的工作量太大了。

后记
如果真的需要装4gb以上的文件,说不定下面这个方案会比较可行:
虚拟系统装在隐藏分区里(隐藏分区用FAT32),其余的空间建立一个exFAT的分区用于存放游戏等文件。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: