无需root即可快速填满Linux HDD空间

无需root即可快速填满Linux HDD空间

所以我和我的朋友正在举行一场比赛。他说他有一种方法可以在不成为 root 的情况下填满 Linux 服务器上的大量硬盘空间。显然,如果您是 root,您可以使用 DD 来做到这一点,但我们的比赛不需要 root。有什么好方法可以做到这一点吗?

答案1

以普通用户身份运行:

dd if=/dev/zero of=~/foo bs=1M

这会在 ~/foo 处创建一个空文件(但仍然占用空间)。在我的计算机上,它以 39.9 MB/s 的速度膨胀文件(我的处理器是 3.0 GHz 64 位 Pentium 4),尽管我想您可以打开多个终端并让它们同时运行...

如果它只是命令行,并且您一次只能打开一个终端,请执行以下操作:

dd if=/dev/zero of=~/foo0 & dd if=/dev/zero of=~/foo1 & dd if=/dev/zero of=~/foo2 & dd if=/dev/zero of=~/foo3

..那应该会立即填满硬盘。

答案2

您不需要 root 身份即可运行 dd。

您可以通过多种方式实现这一点。使用/dev/zero无限的零源似乎是我们所有人都会想到的事情,它允许以下事情:

  • cat /dev/zero > ~/my_huge_partition_filling_file
  • cp /dev/zero ~/my_huge_partition_filling_file
  • 或者,使用 dd 作为用户,这不必要地复杂:
    dd if=/dev/zero of=~/my_huge_partition_filling_file bs=512K。(bsize 部分是可选的,但将其设置为大于 512 字节的值可能会加快速度以减少开销)。
  • 或者您可以创建自己的文件。取任意文件,将其与自身连接以创建大小加倍的第二个文件,然后重复此操作。这就是 Terdon 的答案所做的。
  • 或者您可以编写一个程序来无休止地写入文件。这可能不必要地复杂,而标准工具通常更快。而且,感觉不像是“unix 风格”)。

你也可以通过创建一个伪造的大文件稀疏文件.dd if=/dev/zero of=~/my_seemingly_huge_file skip=99999G将立即创建一个非常小的文件,看起来有 99999 GB。如果您愿意,可以从中读取 99999 GB。但实际上它几乎不占用任何空间。

将其与可拆卸页面的书进行比较。通常,您有第 1、2、3、4、5、6 页……(书的末尾)。使用跳过,您将有第 1、2、3、99999 页。(写入时将插入第 4、5、6、……页等,但在此之前,书会非常薄)。

最后,你可以尝试以下任何一种方法:检查一下您正在写的地方。

如果这个是打开的/home(例如/home/myusername),并且/home安装在自己的分区上,那么您所能做的就是填满主目录的空间。如果有人做了一些愚蠢的事情,比如把 /home 放在根文件系统上,那么你可以把它填满到 95%。大多数管理员会不是像那样。

(95%,或者实际上是 92.2%,因为大多数文件系统的默认设置似乎为 root 保留了 5%。这意味着它可以填充到 105%,而作为用户填充它将使用 (100/105)%,即 95.2%)

答案3

你可以通过以下简单的操作占用硬盘中的所有空间:

echo foo > f1.txt; 
while true; do 
    cat f1.txt >> f2.txt && 
    cat f2.txt >> f1.txt; 
done

如果让循环运行一段时间,文件将呈指数增长并占据所有可用空间。

当然,该dd解决方案更加有效,只是指出您肯定不需要 root 访问权限。

答案4

首先:您不需要以 root 身份使用 dd 或其他工具来创建大文件或多文件。

但其次:如果使用默认选项格式化磁盘,则无法填满磁盘,因为最常用的 linux 文件系统为根保留了 5% 的磁盘空间,因此没有愚蠢的用户能够填满磁盘并使系统崩溃,因为真正重要的进程无法写入他们的文件(想想 sshd、syslogd 等)

相关内容