在SD卡上选择GNU / Linux的文件系统


31

我有一个在SD卡上运行的基于嵌入式ARM的系统。当前是使用ext3作为文件系统的Debian GNU / Linux。当我要重新安装系统时,我开始怀疑要更改为对闪存更友好的文件系统。我听说过JFFS2,YAFFS2和LogFS,它们似乎都适合工作。您会推荐哪一个?另外,我听说对ext4进行了很多改进,以更好地适应SSD磁盘。我要解释为运行ext4应该很好吗?在这种情况下,我需要特别考虑什么?

我猜想系统的使用很重要。但是为了通用起见,可以想象它会做标准的台式机工作(即使它实际上是基于ARM的小型系统)。

感谢您的任何答复。

编辑: Wikipedia 告诉我(在“需要引用”声明中),可移动闪存卡和USB闪存驱动器具有内置控制器来执行耗损均衡和错误纠正,因此使用特定的闪存文件系统不会带来任何好处。因此,我倾向于使用ext文件系统。

Answers:


18

关于Flash文件系统的优秀文章。

在谈论闪存文件系统时,一个重要的问题如下:什么是损耗均衡?维基百科文章。基本上,在闪存磁盘上,您可以写入有限的次数,直到块变坏为止。此后,文件系统(如果硬件上没有内置的损耗均衡管理,通常在SSD的情况下)必须将该块标记为无效,并避免再使用它。

典型的文件系统(例如ReiserFS,NTFS,ext3等)是为硬盘设计的,没有这种限制。

JFFS2

包括压缩和优雅的磨损均衡保护。

YAFFS2

  • 唯一的不同:成功的umount后,安装时间短。
  • 实现一次写入属性:将数据写入一个块后,无需重写它。这很重要,因为它可以减少磨损。

日志文件

  • 还不是很成熟,但是已经包含在Linux内核树中。
  • 支持比JFFS2 / YAFFS2更大的文件系统,不会出现问题。

联合会

  • 比LogFS更成熟
  • 写缓存支持
  • 关于可伸缩性:文章。在大型磁盘上,性能比JFFS2更好

ext4

如果没有驱动程序或卡(例如,至少在通常情况下,SSD驱动器确实具有内部磨损平衡)来处理磨损平衡,则ext4并不是最好的主意,因为它不适用于原始闪存。

哪一个是最好的?

当然,这取决于使用和支持。根据我在Internet上阅读的内容,我会推荐UBIFS。对大型文件系统的良好支持,成熟的开发阶段,足够的性能并且没有太大的缺点。


6
谢谢,这是非常有用的!但是,UBIFS网站上的“红色大注”表示:“人们在处理UBIFS时必须了解的一件事是,UBIFS与任何传统文件系统都非常不同-它不能在块设备(如硬盘驱动器)上运行,MMC / SD卡,USB闪存驱动器,SSD等)。UBIFS旨在在原始闪存之上工作,而后者与块设备无关,这就是为什么UBIFS无法在MMC卡等设备上工作-看起来像块设备,因为它们在硬件中实现了FTL(闪存转换层)支持。”
gspr 2011年

3
不错的答案,还有三星提供的F2FS,这也是非常有前途的系统,非常新。
lzap

16
@gspr是正确的:SD具有闪存转换层,并且JFFS2,YAFFS2,LOGFS和UBIFS都是为非托管闪存设计的。SD的选项是传统的块设备文件系统,例如ext2 / ext3 / ext4。
罗伯特·卡尔霍恩

@Olli NILFS2是SSD驱动器的不错选择吗?
SebMa

12

我面临着同样的问题,也做了一些研究。最终,我决定使用ext2。

某些SDHC卡似乎在硬件层实现了自己的损耗均衡。如果您可以持有具有磨损均衡功能的SDHC卡。

提供耗损均衡的文件系统可能会干扰Flash耗损级别,因此闪存使用它们实际上是不好的(上面引用的IBM文章讨论了JFFS的工作方式,因此很显然这是行不通的使用Flash级WL)。我决定不需要ext3的日记,因为我没有在上面存储关键数据,而且通常无论如何我都会定期备份(cron)。

我还将/ tmp和/ var挂载为tmpfs,以加快处理速度。如果您有足够的RAM,则应这样做(但请确保定期轮换或删除日志)

提示:使用“ noatime”选项挂载ext SD卡


我遇到了旧的SD卡和ext2(数据损坏)的问题,这些问题在切换到XFS时消失了。
亚历山大

1

我不知道这是否适合您的系统配置文件,但是如何使用只读文件系统和读写分区(或可以轻松更换的USB棒)呢?这样,您将拥有一个用于操作系统的快速磁盘,并且可以在其用完时轻松替换rw存储。

然后是unionfs。据我了解,它“堆叠”了不同的文件系统(即,在rw fs之上的ro fs)。如果存在读取访问,则unionfs会遍历堆栈,直到它到达包含我们要搜索的文件的FS为止。在编写unionfs时,会搜索堆栈上的第一个可写FS,然后会使用它。

我还发现了这些可能有趣的文章:http : //www.linux-mag.com/id/7357/ http://www.linux-mag.com/id/7345/

还有两篇有关使用SSD的技巧的文章:http : //danweinreb.org/blog/using-solid-state-disks-on-linux http://www.zdnet.com/blog/perlow/geek-sheet-a- tweakers指南到固态驱动器ssds和Linux / 9190


1
请注意,我不是拒绝此答案的人。它一般包含有用的信息,但与我需要的信息无关。无论如何,谢谢:)
gspr 2011年

0

选择(和调整大小)正确的文件系统比其他任何事情都更为重要,这不仅出于安全性考虑,而且出于人们通常无法识别的其他原因。没有文件系统,所有处理将变为空。

Olli的回应很好,OP也过时了,但是文件系统令人讨厌,我不能离开。superuser.com不是我以前访问过的东西,我不是管理员,但我注册后会访问更多内容。

自2011年以来,情况发生了很大变化,但即使在那时我也格式化了USB卡FAT,并使用USB驱动器来传送4Gb +文件。当然,原因是兼容性而不是安全性(对于SD中的S来说非常重要,但是我在7z上使用密码),并且我从未携带过比CD ISO更大的东西,它们主要用于SQL脚本和已经存在的每日差异加密的数据库快照被7-Zip压缩到几乎死亡。

这些天,我穿出所有SD的速度都比我认识的人快。我的雇主在某些生产机器中装有USB记忆棒,可进行每小时一次的自动备份,格式为FAT。不过,我每天都在关注它们,而且-您猜到了-手工地虔诚地备份它们(它们是脱机安全的建筑ITAR物品)。SSD使一些竞争环境变得平淡,但我仍然不像普通HD那样信任它们,而SD比光学更差。他们立即变坏,损失是全部的。

任何邀请主机OS对其进行随机写入的文件系统(NTFS,回收站)对于SD来说都是个坏消息。另外,卸载它很有帮助,没有操作系统会尝试访问未装载的存储,因此只要SD包含可自行取消删除的脚本(我的每个SD上的标准文件之一),任何文件系统都可以使用。

如今,读取SD的速度仍然很慢,因此我建议使用磁盘转储(dd)之类的方法在镜像时抓取整个映像,而不是逐个文件。dd还会在出现问题时通知您,因此您的文件管理器将不会运行kaboom。

当然,如果您的主要目的是延长某些便士的寿命,那么您的生意做错了。我会尽我所能,不是为了延长SD的使用寿命,而是在我不看电视时避免它变坏,这是有区别的。

我避免使用ext4或SD上的任何日志记录FS,因为我不在乎它们在写入它们时会变坏,但是当一天左右以后我看不到它们时,它肯定会受到伤害!


2
抱歉,但这并不能真正回答问题。这是一篇有关使用可移动媒体的有趣文章,但与选择文件系统无关。
嫌疑犯

我想发表评论,但我不能。帖子有点冗长,我建议OP都不要考虑,而我建议使用FAT。我当然应该更加专注和清晰地构成。
arch-abit

为什么Any file system which invites the host OS to write randomly to it (NTFS, Recycle Bin) is bad news for an SD.呢?它不由旋转磁盘组成,所以我认为无论您在何处读/写都无关紧要。顺便说一句,NTFS连续写入-这导致碎片化。“文件的随机存储”例如约为EXTα。
Hi-Angel

0

作为对使用fat(32?)的建议的回应:我进行了一些性能测试,发现fat32有一个非常可预测的时间来写文件(2 GB需要1 GB +偏移量的两倍,3 GB需要3倍的树形时间)。 1GB +偏移)。ext4的性能略好于ext3。ext3和ext4有时都很快,但是有时需要一些额外的时间才能将日志文件写到磁盘上(没有线性写时间行为)。所有测试均使用fsync()完成,以确保将文件真正写入磁盘。我用sync()执行了一些测试。它们导致非常差的写入性能。所以我回到了fsync()。我做了一些检查fsync()是否足够。因此,我在不关闭系统电源的情况下关闭了设备的电源,或者在不卸载的情况下卸下了SD卡。在任何情况下,写入的文件或目录结构均不会损坏。

问候,托马斯


1
比较是不公平的。您将非日记帐FAT与日记帐EXT3 / 4进行了比较。您应该比较FAT和EXT2。而且仅供参考,制造商预先格式化的文件系统通常具有最佳的块大小/偏移量。也就是说,在重新格式化文件系统后,IO可能会花费比原始系统更长的时间。
Hi-Angel

0

如果您想使用无损SD卡,建议使用BTRFS

BTRFS 是与Oracle最初在2007年创建的EXT相比的新文件系统。

它为传统文件系统带来了新功能:

  • 克隆/快照
  • 差异(发送/接收)
  • 配额
  • 联盟
  • 自愈(提交时间默认为30秒)

有关更多说明和比较,请参阅此pdf

有关新的比较,请参考此网站

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.