在Linux系统上快速创建不可压缩的大文件

在Linux系统上快速创建不可压缩的大文件,linux,file,filesystems,Linux,File,Filesystems,在Linux系统上,我需要创建一个不可压缩的大文件(大约10GB) 该文件应该位于Docker映像中,用于测试在本地注册表上传输和存储大型Docker映像的性能。因此,我需要图像“本质上”大(即:不可压缩),以便绕过优化机制 fallocate(在中介绍)非常适合快速创建大文件,但结果是一个0熵的大文件,高度可压缩。将大型映像推送到注册表时,只需几MB 那么,如何创建一个大的、不可压缩的文件呢?您可以使用/dev/urandom或/dev/random来填充您的文件,例如 @debian-10:

在Linux系统上,我需要创建一个不可压缩的大文件(大约10GB)

该文件应该位于Docker映像中,用于测试在本地注册表上传输和存储大型Docker映像的性能。因此,我需要图像“本质上”大(即:不可压缩),以便绕过优化机制

fallocate
(在中介绍)非常适合快速创建大文件,但结果是一个0熵的大文件,高度可压缩。将大型映像推送到注册表时,只需几MB


那么,如何创建一个大的、不可压缩的文件呢?

您可以使用
/dev/urandom
/dev/random
来填充您的文件,例如

@debian-10:~$ SECONDS=0; dd if=/dev/urandom of=testfile bs=10M count=1000 ;echo $SECONDS 1000+0 record in 1000+0 record out 10485760000 bytes (10 GB, 9,8 GiB) copied, 171,516 s, 61,1 MB/s 171 @debian-10:~$SECONDS=0;dd if=/dev/uradom of=testfile bs=10M count=1000;echo$秒 1000+0记录在 1000+0记录输出 复制10485760000字节(10 GB,9,8 GiB),171516秒,61,1 MB/s 171 使用更大的基站需要一点时间:

*@debian-10:~$ SECONDS=0; dd if=/dev/urandom of=testfile bs=30M count=320 ;echo $SECONDS 320+0 record in 320+0 record out 10066329600 bytes (10 GB, 9,4 GiB) copied, 164,498 s, 61,2 MB/s 165 *@debian-10:~$SECONDS=0;dd if=/dev/uradom of=testfile bs=30M count=320;echo$秒 320+0记录在 320+0记录输出 复制10066329600字节(10 GB,9.4 GiB),164498秒,61.2 MB/s 165
171秒与165秒相比

您可以使用
/dev/uradom
/dev/random
填充您的文件,例如

@debian-10:~$ SECONDS=0; dd if=/dev/urandom of=testfile bs=10M count=1000 ;echo $SECONDS 1000+0 record in 1000+0 record out 10485760000 bytes (10 GB, 9,8 GiB) copied, 171,516 s, 61,1 MB/s 171 @debian-10:~$SECONDS=0;dd if=/dev/uradom of=testfile bs=10M count=1000;echo$秒 1000+0记录在 1000+0记录输出 复制10485760000字节(10 GB,9,8 GiB),171516秒,61,1 MB/s 171 使用更大的基站需要一点时间:

*@debian-10:~$ SECONDS=0; dd if=/dev/urandom of=testfile bs=30M count=320 ;echo $SECONDS 320+0 record in 320+0 record out 10066329600 bytes (10 GB, 9,4 GiB) copied, 164,498 s, 61,2 MB/s 165 *@debian-10:~$SECONDS=0;dd if=/dev/uradom of=testfile bs=30M count=320;echo$秒 320+0记录在 320+0记录输出 复制10066329600字节(10 GB,9.4 GiB),164498秒,61.2 MB/s 165
171秒与165秒相比

在4GiB的真实数据上少于3分钟是可以接受的速度吗

通过提供dd就绪数据而不是生成数据,可以获得“随机集”。 最简单的方法是使用已满的磁盘,其大小大于所需的文件大小, 我使用了一个随机二进制文件和视频的磁盘。如果您担心数据泄漏,您可以使用某种方法处理数据

一切都转到/dev/shm,因为写入RAM要比写入磁盘快得多。 当然,必须有足够的可用空间,我有4GB,所以示例中的文件是4GB 我的处理器是第一代老化的i7

% time dd if=/dev/sdb count=40 bs=100M >/dev/shm/zerofil
40+0 records in
40+0 records out
4194304000 bytes (4,2 GB, 3,9 GiB) copied, 163,211 s, 25,7 MB/s

real    2m43.313s
user    0m0.000s
sys     0m6.032s

% ls -lh /dev/shm/zerofil
-rw-r--r-- 1 root root 4,0G mar  5 13:11 zerofil

% more /dev/shm/zerofil
3��؎м
f`f1һ���r�f�F����fa�v
f�fFf��0�r'f�>
^���>b��<
...
%time dd if=/dev/sdb count=40 bs=100M>/dev/shm/zerofil
中的40+0记录
40+0记录输出
已复制4194304000字节(4,2 GB,3,9 GiB),163211秒,25,7 MB/s
真实2m43.313s
用户0.000s
系统0m6.032s
%ls-lh/dev/shm/zerofil
-rw-r--r--1根根根4,0G mar 5 13:11 zerofil
%更多/dev/shm/zerofil
3.��؎м
f`f1һ���R�F�F����fa�v
F�fFf��0�r'f�>
^���>B��<
...

在4GiB的真实数据上少于3分钟是可以接受的速度吗

通过提供dd就绪数据而不是生成数据,可以获得“随机集”。 最简单的方法是使用已满的磁盘,其大小大于所需的文件大小, 我使用了一个随机二进制文件和视频的磁盘。如果您担心数据泄漏,您可以使用某种方法处理数据

一切都转到/dev/shm,因为写入RAM要比写入磁盘快得多。 当然,必须有足够的可用空间,我有4GB,所以示例中的文件是4GB 我的处理器是第一代老化的i7

% time dd if=/dev/sdb count=40 bs=100M >/dev/shm/zerofil
40+0 records in
40+0 records out
4194304000 bytes (4,2 GB, 3,9 GiB) copied, 163,211 s, 25,7 MB/s

real    2m43.313s
user    0m0.000s
sys     0m6.032s

% ls -lh /dev/shm/zerofil
-rw-r--r-- 1 root root 4,0G mar  5 13:11 zerofil

% more /dev/shm/zerofil
3��؎м
f`f1һ���r�f�F����fa�v
f�fFf��0�r'f�>
^���>b��<
...
%time dd if=/dev/sdb count=40 bs=100M>/dev/shm/zerofil
中的40+0记录
40+0记录输出
已复制4194304000字节(4,2 GB,3,9 GiB),163211秒,25,7 MB/s
真实2m43.313s
用户0.000s
系统0m6.032s
%ls-lh/dev/shm/zerofil
-rw-r--r--1根根根4,0G mar 5 13:11 zerofil
%更多/dev/shm/zerofil
3.��؎м
f`f1һ���R�F�F����fa�v
F�fFf��0�r'f�>
^���>B��<
...

请使用格式代码功能{}请使用格式代码功能{}