如何创建低开销文件系统

如何创建低开销文件系统

我有 7.5GB 大小的 USB 钥匙扣,我需要在上面复制 7.4GB 大小的文件。但我不能,因为超级块消耗 0.5GB 的空间。

答案1

您不需要文件系统即可将数据写入设备。您可以简单地使用tar创建一个存储目录结构和所有元数据的存档并将其写入设备。

写入数据

以下sdb是我系统上 USB 驱动器的示例,请根据您的设置进行调整。

tar cf /dev/sdb <some_directory>

读取数据

可以直接使用tar从设备读取数据:

tar xf /dev/sdb

在我的实验中,它总是读取整个块设备,而不仅仅是 tar 存档中的数据。如果您知道您的设备有 8 GiB 但您只保存了 3 GiB,则可以使用dd以避免读取整个设备:

dd if=/dev/sdb bs=1M count=3072 | tar xf -

旁注

尝试尽可能地压缩数据。这可能需要很长时间,但也许所有内容都适合具有普通文件系统的驱动器。我建议使用7-Zip,它很慢,但压缩比很高。这是一个例子:

7za a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on archive.7z <some_directory>

答案2

由于您实际上并不需要 ext4 文件系统,但确实需要一个文件系统,该系统会将开销降低到设备容量的 1.3% 以下(7.5 GB 中的 100 MB),所以我会考虑各种低-开销选项。满足能够处理单个 7.4 GB 文件的标准的两个最明显的方法是具有低 inode 计数和稀疏超级块的 ext2,或者是低开销的 FAT32 文件系统。

编辑:看来我对 FAT32 最大文件大小的看法是错误的,但我将其留在这里,以防有人遇到此问题并且可以接受单个文件不能大于 2^32 - 1 (4 GiB - 1) 的限制字节。

对于低开销的 ext2 文件系统,请尝试类似mke2fs -t ext2 -N 8 -O sparse_super.指定-N 8文件系统上的 inode 数量。我不知道这个值会降到多低,所以这个旋钮可能需要一些调整。

对于低开销的 FAT32 文件系统,请尝试类似mkdosfs -F 32 -f 1 -r 8 -S 32768 -s 128 -a.这将创建一个-F 32FAT32(允许您需要的文件大小),具有-f 1单个 FAT、-r 88 个根目录条目、-S 3276832 KiB 的逻辑扇区大小、-s 128每个簇 128 个扇区(您可能可以进一步增加此值)并-a禁用数据结构对齐。

相关内容