gpt4 book ai didi

linux - 在很短的时间内连接非常大(~TByte)的文件

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:31:04 26 4
gpt4 key购买 nike

首先,我想解释一下为什么我需要这个。我需要为虚拟机创建一些磁盘镜像文件。该文件将非常大(100GB ~ 1.5TB),其中填充了零。它应该在很短的时间内创建(尽可能多,至少应该比带有“/dev/zero”的“dd”命令快)。需要的大小会有所不同(这意味着我以前无法创建它)。简单的解决方案(直到知道)将文件创建为稀疏文件。但为什么我想改变解决方案是稀疏文件的某种缺点。

在我看来,可以通过直接编辑inode来解决。我的想法是创建非常大的文件,其中填充了零并将其除以 inode 级别。或者,我可以先创建大量 100 GB 的文件,然后再连接这些文件以创建所需的文件大小。我知道“debugfs”可以编辑 inode 的直接 block 。由于“debugfs”用于文件恢复,也许我可以用它来创建文件。但直到现在我还找不到如何编辑 inode 的间接 block 。除了编辑间接 block ,我不确定直接编辑 inode 的副作用。

无论如何,是否有任何很酷的解决方案或工具(如果存在)用于“缝合”大文件或创建零填充文件?“cat”命令或其他只是读写的解决方案可能无法解决我的问题。

最佳答案

如果您只想创建零填充文件,那么 fallocate 可能会有用。来自手册页

fallocate is used to preallocate blocks to a file. For filesystems which support the fallocate system call, this is done quickly by allocating blocks and marking them as uninitialized, requiring no IO to the data blocks. This is much faster than creating a file by filling it with zeros.

As of the Linux Kernel v2.6.31, the fallocate system call is supported by the btrfs, ext4, ocfs2, and xfs filesystems.

关于linux - 在很短的时间内连接非常大(~TByte)的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9157115/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com