我想创建一个大文件〜10G,其中填充了零和随机值。我试过使用:
dd if=/dev/urandom of=10Gfile bs=5G count=10
它创建一个大约2Gb的文件,并以退出状态“ 0”退出。我不明白为什么?
我也尝试使用以下方法创建文件:
head -c 10G </dev/urandom >myfile
创建它大约需要28-30分钟。但我希望它能更快地创建。有人有解决方案吗?
我也想创建多个具有相同(伪)随机模式的文件进行比较。有人知道这样做的方法吗?
我想创建一个大文件〜10G,其中填充了零和随机值。我试过使用:
dd if=/dev/urandom of=10Gfile bs=5G count=10
它创建一个大约2Gb的文件,并以退出状态“ 0”退出。我不明白为什么?
我也尝试使用以下方法创建文件:
head -c 10G </dev/urandom >myfile
创建它大约需要28-30分钟。但我希望它能更快地创建。有人有解决方案吗?
我也想创建多个具有相同(伪)随机模式的文件进行比较。有人知道这样做的方法吗?
Answers:
如何使用fallocate,该工具允许我们为文件预分配空间(如果文件系统支持此功能)。例如,将5GB的数据分配给名为“ example”的文件,则可以执行以下操作:
fallocate -l 5G example
这比dd快得多,并且将非常快速地分配空间。
/dev/zero呢?
truncate过去使用过,发现它实际上并没有在设备上分配文件,只是创建了一个任意大文件,直到被访问为止,而与可用空间无关。您确定不是fallocate吗?我会检查一下,但我正在使用手机...
您可以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不太大,但是它仍然可以为您提供良好的缓冲区大小。它应该非常快,但是它始终取决于您的磁盘速度和处理能力。
使用dd,这将创建一个10 GB的文件,其中填充了随机数据:
dd if=/dev/urandom of=test1 bs=1M count=10240
count 以兆字节为单位。
dd if=/dev/urandom of=10Gfile bs=500M count=20,在不到20分钟的时间里给了我10237226010字节。
这个问题是5年前提出的。我只是偶然发现了这一点,想补充一下我的发现。
如果您只是使用
dd if=/dev/urandom of=random.img count=1024 bs=10M
如xiaodongjie所述,它的运行速度将显着提高。但是,你可以更快的使用使它eatmydata像
eatmydata dd if=/dev/urandom of=random.img count=1024 bs=10M
什么eatmydata所做的就是关闭fsync制作光盘写入速度更快。
您可以在https://flamingspork.com/projects/libeatmydata/上了解有关它的更多信息。
dd开始就足够快,有一个原因叫libEAT-MY-DATA。
dd由于块大小,您可能会遇到错误。您可能想看看这篇文章stackoverflow.com/questions/6161823/…它有一些很好的答案,如何计算最佳块大小,以及一些用户脚本/程序和其他使用的建议dd。