linux添加vfat分区,如何在嵌入式Linux中高效地在VFAT分区上创建大文件

在嵌入式Linux系统中,使用VFAT分区创建大文件时,由于FAT文件系统的特性,通常会很慢。文章讨论了VFAT分区的限制,解释了为何跳过写入会慢,并提出了解决方案,包括修改VFAT驱动以支持更高效的文件创建,以及预格式化和预填充文件系统的策略。
摘要由CSDN通过智能技术生成

我试图在嵌入式Linux框中使用`dd’命令在VFAT分区上创建一个大的空文件:

dd if=/dev/zero of=/mnt/flash/file bs=1M count=1 seek=1023

目的是跳过前1023个块并在文件末尾只写一个块,这在原生EXT3分区上应该非常快,而且确实如此.但是,此操作在VFAT分区上变得非常慢,并伴有以下消息:

lowmem_shrink:: nr_to_scan=128, gfp_mask=d0, other_free=6971, min_adj=16

// ... more `lowmem_shrink' messages

另一种尝试是在VFAT分区上fopen()一个文件然后fseek()到最后写入数据,这也被证明是慢的,以及来自内核的相同消息.

基本上,有没有一种快速的方法在VFAT分区上创建文件(不遍历前1023块)?

谢谢.

解决方法:

为什么VFAT“跳过”写得这么慢?

除非在这方面使VFAT文件系统驱动程序“作弊”,否则在FAT类型文件系统上创建大文件总是需要很长时间.符合FAT规范的驱动程序必须分配所有数据块并对它们进行零初始化,即使您“跳过”写入也是如此.这是因为“群集链”FAT确实如此.

这种行为的原因是FAT无法支持:

>文件中的UN * X风格“漏洞”(又名“稀疏文件”)

这就是你在ext3上用你的测试用例创建的 – 一个文件没有分配给它的第一个1GB-1MB的数据块,另一个是1MB的实际提交的,零初始化的块).

> NTFS样式的“有效数据长度”信息.

在NTFS上,文件可以分配给它的未初始化块,但文件的元数据将保留两个大小字段 – 一个用于文件的总大小,另一个用于实际写入它的字节数(从文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值