hir*_*hme 10 filesystems exfat ubuntu hfs+
我将大约 3.7TB 的数据从一个具有 HFS+ 文件系统的 4TB 外部驱动器复制到另一个具有 exFAT 文件系统的 4TB 外部驱动器。新硬盘在只能传输大约 75% 的数据后就被填满了,我猜测是因为 exFAT 的分配单元大小为小文件占用了每个文件的更多空间。
我正在复制很多(约数百万)个小文件(每个 1.5kB)。所以我想弄清楚如何做到这一点。
因此我需要一个满足以下要求的文件系统:
块大小足够小,我可以容纳数百万个大小为 1.5kB 的文件,浪费最少的空间。(这里exFAT有问题)
与Linux 读/写兼容。(这里HFS+有问题)
能够在Linux上创建4T分区。(这里ext4有问题)
有替代的文件系统吗?
更新:这个问题被标记为已在另一篇文章中得到回答(优化大量小文件的文件系统?)。然而,接受的答案对我不起作用:
mkfs.ext4 -b 1024 /dev/your_partition
Warning: specified blocksize 1024 is less than device physical sectorsize 4096
/dev/sdc: Cannot create filesystem with requested number of inodes while setting up superblock
Run Code Online (Sandbox Code Playgroud)
您可以使用的文件系统
\n支持某种块再分配的。这种形式有很多种,比如
\n一些具有块再分配的文件系统:ReiserFS,Reiser4,JFS,NWFS,ZFS,Btrfs,UFS1/2,VMFS ...例如VMFS5/6的块大小为1MB,但支持1KB的小文件
\n然而,考虑到您的问题涉及数百万个文件的规模,ReiserFS/Reiser4、Btrfs 和 ZFS 可能是最佳解决方案
\n欲了解更多详情,请阅读下文
\n由于您的文件约为 1.5 KB,因此您的情况的理想块大小为 512 字节。但是,从错误消息中可以看出,您的磁盘的物理扇区大小为 4 KB(又称高级格式):
\n\n\n警告:指定的块大小 1024 小于设备物理扇区大小 4096
\n
这意味着您无法创建小于该大小的块。您需要使用块重新分配来减少浪费的空间。您可以打开文件系统比较 - 分配和布局策略并按块再分配/尾部打包/可变块大小进行排序,以了解哪些文件系统支持此类功能
\n\n另一种选择是将数据存储在元数据空间中,其中多个记录被分配到单个块中
\n在 NTFS 中,每个文件都由MFT 记录表示,它类似于*nix 中的inode。小文件将直接存储在 MFT 记录中,节省空间并提高访问时间,因为您不需要读取另一次磁盘来获取真实数据。这些称为常驻文件。后来在 ext4 中添加了类似的功能并称为内联文件:
\n\n\n内联数据功能旨在处理文件数据非常小以至于可以轻松放入索引节点的情况,这(理论上)减少了磁盘块消耗并减少了寻道。如果文件小于 60 字节,则数据将内联存储在
\ninode.i_block
.
60 字节值适用于默认 inode 大小 256 字节。inode 结构占用 156 个字节,其余 40 个字节可能用于某些扩展功能。但是,您可以在格式化时使用该选项将索引节点大小更改为 2 KB,以-I inode-size
适合所有 1.5 KB 文件
在 Btrfs 中也有类似的功能,小文件直接写入元数据流
\n\n\n\n
max_inline=bytes
(默认值:min(2048,页面大小))
\n指定可以内联到元数据 B 树叶中的最大空间量。该值以字节为单位指定,可以选择带有 K 后缀(不区分大小写)。
\n\n
看来Reiser4也有这样的功能,虽然我无法证实。
\n在 NTFS 中,当前默认的 MFT 记录为 1 KB,尽管 Windows NT 3.1 中的 NTFS 1.0 中的默认 MFT 记录为 4 KB。这只允许驻留大约 600-900 字节或更少的文件,因此您必须更改 MFT 记录大小。这是可能的,尽管您很难找到允许更改默认 MFT 记录大小的格式化软件
\n有些人和你的情况大致相同
\n\n你身边也有很多误会
\n\n\n与Linux 读/写兼容。(这里HFS+有问题)
\n
Linux 中有许多可用的读/写 HFS+ 驱动程序,因此这应该不是问题。HFS+ 的唯一问题是它与 ext2 处于同一时代,因此与 ext4、NTFS、ZFS 或 Btrfs 等现代文件系统相比,它要逊色得多
\n\n\n能够在Linux上创建4T分区。(这里ext4有问题)
\n
ext4 和 exFAT 都没有创建具有 1 KB 块大小的 4 TB 分区的问题。事实上,任何 32 位文件系统都可以创建具有 1 KB 块大小的 4 TB 卷,因为 2 32块 \xc3\x97 2 10字节/块 = 4 \xc3\x97 2 40字节 = 4 TB,并且默认为 4 KB块大小,则最大分区大小为 16 TB。ext4 使用 48 位地址,因此具有更大的最大大小
\n\n\n块大小足够小,我可以容纳数百万个大小为 1.5kB 的文件,浪费最少的空间。(这里exFAT有问题)
\n
事实上,exFAT 的唯一问题是默认块大小太大。exFAT 上的最小块大小为1 个扇区,因此在具有 512 位扇区的磁盘中可以具有 512 字节的块大小(请参阅规范中的9.2 簇大小限制)。您可以在格式对话框中看到 512 字节和 1 KB 选项,如下所示。不幸的是,您的磁盘有 4 KB 扇区,因此 exFAT 不起作用
\n\n\n 归档时间: |
|
查看次数: |
8864 次 |
最近记录: |