Linux通过大文件创建文件系统

起因

某天在操作Linux虚拟机时,发现根目录空间消耗完了,而另一块磁盘是挂载在 “/media” 下,还有几百个G的空间未使用,此时我无法将 ‘’/media" 中的文件拷贝到空余目录后,对其进行重新分区后再分配空间。通过查询资料,了解到通过新建大文件方式可以创建挂载文件系统,在将根目录下某些文件夹挂载到该新生成的文件系统,即可从形式上扩容其他目录。

指令介绍

Linux下新建大文件主要有如下三个指令:

dd

该指令实际上是文件复制过程,通过不停复制一个文件,从而生成一个大文件。
该指令执行过程总会占用大量的 I/O ,故速度会比较慢。
格式如下:

# 创建一个2GB的disk00文件
dd if=/dev/zero of=/home/disk00 bs=2MB count=1024
# if:代表输入的文件,即复制的源文件
# of:代表输出的文件,即生成的文件
# bs:BlockSize,复制生成文件的块大小
# count:块的数量

该指令适合小于2GB的大文件创建,文件过大,则复制文件过程较长,且对系统 I/O 影响过大。

fallocate

该指令是为某个文件划分连续的磁盘空间,而非通过文件占用空间。
格式如下:

# 创建一个20G的disk00文件
fallocate -l 20G /home/disk00
# -l 设置文件大小

fallocate指令并非所有文件系统都可以使用,只能在ext4或xfs格式文件系统才能使用。

truncate

该指令是将文件的末尾位置“扩展到”一个固定位置而生成的一个空洞文件,通过 “ls -l” 指令可以看到该文件的逻辑大小,但通过 “du” 指令可发现该文件并不占空间,该文件内部是有 \0 填充的。
格式如下:

truncate -s 2G /home/disk00

该指令一般我们不用,一般用前两个指令。

实战

如:我们现在想要新建一个20G “/Test” 文件夹,同时 “/media” 目录挂载了sdb盘,且有300G的空余空间,我们可以使用如下指令:

# 1.创建大文件
fallocate -l 20G /media/fdisk00

# 2.格式化大文件
mkfs.ext4 /media/fdisk00

# 3.挂载大文件
mount -o loop=/dev/loop0 /media/fdisk00 /Test

# 4.修改fstab,设置开机挂载
echo "/media/fdisk00  /Test  ext4  defaults,loop  0  0" >> /etc/fatab

完成上述操作,即可完成新建20G大文件,并完成文件系统挂载。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值