我想创建一个约 10G 的大文件,其中充满零和随机值。我尝试过使用:
dd if=/dev/urandom of=10Gfile bs=5G count=10
它创建一个约 2Gb 的文件并以退出状态“0”退出。我不明白为什么?
我还尝试使用以下方法创建文件:
head -c 10G </dev/urandom >myfile
创建它大约需要 28-30 分钟。但我希望它创建得更快。有人有解决方案吗?
我还希望创建具有相同(伪)随机模式的多个文件以供比较。有人知道怎么做吗?
答案1
如何使用 fallocate,此工具允许我们为文件预分配空间(如果文件系统支持此功能)。例如,为名为“example”的文件分配 5GB 的数据,可以执行以下操作:
fallocate -l 5G example
这比 dd 快得多,并且能非常快速地分配空间。
答案2
您可以使用dd
创建一个仅由零组成的文件。例如:
dd if=/dev/zero of=zeros.img count=1 bs=1 seek=$((10 * 1024 * 1024 * 1024 - 1))
由于实际写入物理磁盘的只有一个字节,因此速度非常快。但是,有些文件系统不支持此功能。
如果要创建一个包含伪随机内容的文件,请运行:
dd if=/dev/urandom of=random.img count=1024 bs=10M
我建议你使用 10M 作为缓冲区大小(bs
)。这是因为 10M 不是太大,但它仍然为你提供了良好的缓冲区大小。它应该相当快,但它始终取决于你的磁盘速度和处理能力。
答案3
使用 dd,这将创建一个充满随机数据的 10 GB 文件:
dd if=/dev/urandom of=test1 bs=1M count=10240
count
以兆字节为单位。
答案4
回答问题的第一部分:
尝试一次写入 5GB 的缓冲区并不是一个好主意,因为您的内核可能不支持这一点。无论如何,这不会给您带来任何性能优势。一次写入 1M 是一个不错的最大值。