首页 > 代码库 > Linux下构造分区满的两种方式

Linux下构造分区满的两种方式

我们都知道Linux提供了特殊设备/dev/full来供测试磁盘满的情况,然而它只对文件有效。对于使用固定文件名或可预测的文件名的程序,一般/dev/full就能满足需要了。对于文件名由某种不可预测的方式生成的程序,还需要构造一个写满的分区。一种显而易见的方式是创建一个真的分区,然后写满,然而操作起来却比较麻烦。本文提供其他两种相对简单的方式。

使用内存盘

基本原理为将内存挂载为一个磁盘,然后使用dd写满。Linux支持两种内存盘,ramfs和tmpfs. Ramfs必须使用物理内存,无法利用swap分区,在写入时会逐渐增长直至用尽全部的内存,也就是无法人为设置分区大小,因此不适用于构造分区满的场景。Tmpfs可以使用物理内存和swap分区,并且支持设置分区大小。因此,我们使用tmpfs来构造分区满。

mkdir -p /mnt/ramdisk
mount -t tmpfs -o size=1m tmpfs /mnt/ramdisk
dd if=/dev/zero of=/mnt/ramdisk/test size=1m count=1

使用loop设备

基本原理为创建一个1M大小的文件,在其上创建EXT2分区,以loop的方式挂载为分区,然后用dd写满。

dd if=/dev/zero of=a.img bs=1M count=1
mkdir -p /mnt/loop
mkfs.ext2 a.img
mount -t ext2 -o loop a.img /mnt/loop
dd if=/dev/zero of=/mnt/loop/file bs=1M count=1

Linux下构造分区满的两种方式