![如何创建低开销文件系统](https://linux22.com/image/26162/%E5%A6%82%E4%BD%95%E5%88%9B%E5%BB%BA%E4%BD%8E%E5%BC%80%E9%94%80%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F.png)
我有 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 32
FAT32(允许您需要的文件大小),具有-f 1
单个 FAT、-r 8
8 个根目录条目、-S 32768
32 KiB 的逻辑扇区大小、-s 128
每个簇 128 个扇区(您可能可以进一步增加此值)并-a
禁用数据结构对齐。