当磁盘被大文件填满时的一些小技巧

当磁盘被大文件填满时的一些小技巧

生产环境中会出现磁盘被一些大文件填满,但是大文件却因为被打开而无法马上删除释放空间的情况,以下技巧是解决此类问题的一种方法

模拟环境

先用/dev/zero 将/boot分区填满

[root@centos7 boot]# cp /dev/zero /boot/bigfile
cp: error writing ‘/boot/bigfile’: No space left on device
cp: failed to extend ‘/boot/bigfile’: No space left on device
[root@centos7 boot]# df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda2      104806400 3708520 101097880   4% /
devtmpfs          740168       0    740168   0% /dev
tmpfs             756008       0    756008   0% /dev/shm
tmpfs             756008   10144    745864   2% /run
tmpfs             756008       0    756008   0% /sys/fs/cgroup
/dev/sda3       52403200   33140  52370060   1% /data
/dev/sda1        1038336 1038296        40 100% /boot
tmpfs             151204       0    151204   0% /run/user/0

然后将/boot/bigfile文件打开,再新启一个终端,用df查看分区利用率

[root@centos7 ~]# df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda2      104806400 3708664 101097736   4% /
devtmpfs          740168       0    740168   0% /dev
tmpfs             756008       0    756008   0% /dev/shm
tmpfs             756008   10184    745824   2% /run
tmpfs             756008       0    756008   0% /sys/fs/cgroup
/dev/sda3       52403200   33140  52370060   1% /data
/dev/sda1        1038336 1038300        36 100% /boot
tmpfs             151204       0    151204   0% /run/user/0

使用rm将bigfile文件删除

[root@centos7 ~]# rm /boot/bigfile
rm: remove regular file ‘/boot/bigfile’? y
[root@centos7 ~]# df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda2      104806400 3708584 101097816   4% /
devtmpfs          740168       0    740168   0% /dev
tmpfs             756008       0    756008   0% /dev/shm
tmpfs             756008   10184    745824   2% /run
tmpfs             756008       0    756008   0% /sys/fs/cgroup
/dev/sda3       52403200   33140  52370060   1% /data
/dev/sda1        1038336 1038300        36 100% /boot
tmpfs             151204       0    151204   0% /run/user/0

然而此时/boot分区利用率依然为100%,但目录下bigfile文件已经删除。

[root@centos7 ~]# ls /boot
config-3.10.0-957.el7.x86_64
efi
grub
grub2
initramfs-0-rescue-30905c0f8bf344f4af5b53a826370629.img
initramfs-3.10.0-957.el7.x86_64.img
symvers-3.10.0-957.el7.x86_64.gz
System.map-3.10.0-957.el7.x86_64
vmlinuz-0-rescue-30905c0f8bf344f4af5b53a826370629
vmlinuz-3.10.0-957.el7.x86_64
[root@centos7 ~]#

当bigfile文件被释放时,/boot分区的利用率归零。
结论:当磁盘文件被写入时,若直接删除此文件是不会释放磁盘空间的,但是此文件已经删除。只有当文件被关闭时空间才会被释放。

以下演示正确的操作方法

先将磁盘填满

[root@centos7 ~]# df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda2      104806400 3708604 101097796   4% /
devtmpfs          740168       0    740168   0% /dev
tmpfs             756008       0    756008   0% /dev/shm
tmpfs             756008   10144    745864   2% /run
tmpfs             756008       0    756008   0% /sys/fs/cgroup
/dev/sda3       52403200   33140  52370060   1% /data
/dev/sda1        1038336  167000    871336  17% /boot
tmpfs             151204       0    151204   0% /run/user/0
[root@centos7 ~]# cp /etc/zero /boot
cp: cannot stat ‘/etc/zero’: No such file or directory
[root@centos7 ~]# cp /dev/zero /boot/bigfile
cp: overwrite ‘/boot/bigfile’? y
cp: error writing ‘/boot/bigfile’: No space left on device
cp: failed to extend ‘/boot/bigfile’: No space left on device
[root@centos7 ~]# df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda2      104806400 3708584 101097816   4% /
devtmpfs          740168       0    740168   0% /dev
tmpfs             756008       0    756008   0% /dev/shm
tmpfs             756008   10144    745864   2% /run
tmpfs             756008       0    756008   0% /sys/fs/cgroup
/dev/sda3       52403200   33140  52370060   1% /data
/dev/sda1        1038336 1038296        40 100% /boot
tmpfs             151204       0    151204   0% /run/user/0

将bigfile文件打开后另起终端,查看boot分区利用率

[root@centos7 ~]# df /boot
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda1        1038336 1038300        36 100% /boot

然后执行重定向命令将bigfile文件清空,此时boot磁盘空间已经释放

[root@centos7 ~]# > /boot/bigfile
[root@centos7 ~]# df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda2      104806400 3708588 101097812   4% /
devtmpfs          740168       0    740168   0% /dev
tmpfs             756008       0    756008   0% /dev/shm
tmpfs             756008   10184    745824   2% /run
tmpfs             756008       0    756008   0% /sys/fs/cgroup
/dev/sda3       52403200   33140  52370060   1% /data
/dev/sda1        1038336  167004    871332  17% /boot
tmpfs             151204       0    151204   0% /run/user/0
[root@centos7 ~]# ls /boot
bigfile
config-3.10.0-957.el7.x86_64
efi
grub
grub2
initramfs-0-rescue-30905c0f8bf344f4af5b53a826370629.img
initramfs-3.10.0-957.el7.x86_64.img
symvers-3.10.0-957.el7.x86_64.gz
System.map-3.10.0-957.el7.x86_64
vmlinuz-0-rescue-30905c0f8bf344f4af5b53a826370629
vmlinuz-3.10.0-957.el7.x86_64

然后删除bigfile文件

[root@centos7 ~]# rm -rf /boot/bigfile

当bigfile文件被关闭时,文件即被删除。

原文地址:https://blog.51cto.com/11886307/2360689

时间: 2024-10-06 17:19:28

当磁盘被大文件填满时的一些小技巧的相关文章

SQL Server-聚焦事务对本地变量、临时表、表变量影响以及日志文件存满时如何收缩(三十一)

前言 接下来我们将SQL Server基础系列还剩下最后几节内容结束,后续再来讲解SQL Server性能调优,我们开始进入主题. SQL Server事务对本地变量影响 事务对变量影响具体是指什么意思呢,换句话说就是当我们回滚事务和提交事务之后对本地变量是否起作用呢,下面我们来看下具体例子. PRINT '回滚事务之后测试' DECLARE @FlagINT INT SET @FlagInt = 1 PRINT @FlagInt ---- 此时变量值为1 BEGIN TRANSACTION S

gdb调试运行时的程序小技巧

使用gdb调试运行时的程序小技巧 标签: 未分类 gdb pstack | 发表时间:2012-10-15 04:32 | 作者:士豪 分享到: 出处:http://rdc.taobao.com/blog/cs 原创文章,欢迎转载.转载请注明:转载自淘宝核心系统团队博客,谢谢! 原文链接地址: 使用gdb调试运行时的程序小技巧 下面介绍我调试时经常遇到的三种问题,如果大家也有类似的问题交流一下解决方法: 情景1:在不中止程序服务的情况下,怎么调试正在运行时的程序 情景2:需要同时看几个变量的值或

[转]使用gdb调试运行时的程序小技巧

原创文章,欢迎转载.转载请注明:转载自淘宝核心系统团队博客,谢谢!原文链接地址:使用gdb调试运行时的程序小技巧 下面介绍我调试时经常遇到的三种问题,如果大家也有类似的问题交流一下解决方法:情景1:在不中止程序服务的情况下,怎么调试正在运行时的程序情景2:需要同时看几个变量的值或者批量查看多个core文件的堆栈信息怎么办情景3:遇到需要查看.队列.链表.树.堆等数据结构里的变量怎么办1. 情景1:在不中止程序服务的情况下,怎么调试正在运行时的程序我们在生产环境或者测试环境,会遇到一些异常,我们需

对于shell脚本参数获取时的一点小技巧

问题如下: 根据脚本参数的个数$#进行一个循环,在依次输出每个参数$1 $2 $3...... 我有一个循环变量i $i 取到这时的i为1,我想使用这个1再去调用$1,也是就是打印出第一个参数 就是$($i)的意思来取到第几个参数,当然$($i)是不好用的 当时纠结了好久,最后上百度提问,两位高手给出了答案: 1) #!/bin/sh NUMBER=$# echo $NUMBER i=1 while [ $i -le $NUMBER ] do a[$i]=$1 #将数组a[i]赋值为$1,即取得

linux系统维护时的一些小技巧,包括系统挂载新磁盘的方法!可收藏!

这里发布一些平时所用到的小技巧,不多,不过会持续更新.... 1.需要将history创建硬链接ln 全盘需要备份硬链接 ln /etc/xxx /home/xxx 2.root用户不可以远程 /etc/ssh/sshd_config PermitRootLogin no AllowUsers XXX 3.同步软件时钟 date MMDDhhmmCCYY.ss hwclock --set --date="2011-08-14 16:45:05" 4.SSH服务重启及开关 ubuntu

最常用的大文件传输方法有哪些,小编给你们细说

文件传输作为日常生活.工作中需求量较高的一项功能,工作中总会遇到需要将文件从一个设备转移到另一个设备上查看.存储,或者将资料回传的情况.一般大小的文件可以用QQ或者微信的文件传输助手来解决,或者任意一个邮箱也是可以实现的,但如果文件大小过大,传输就有一定问题. 接下来,介绍几种工作.生活中常用的传输文件的简单方法. 1.QQ/微信文件传输助手 之前只是QQ上可以,现在微信也有了.这个主要是手机端与网页版之间传输文件,前提是登陆的账号是同一个,传输文件大小限制在2G以下. 笔者亲自试过,超过1G的

献身说法---修复bug时的一些小技巧

最近,修复了项目当中的一些bug,觉着有些思路可以分享出来供大家借鉴. 场景一 开发环境中系统正常运行,测试环境中,部分机器未能正常运行. 解决过程:远程连接了测试环境中的机器,观察了系统的运行情况,确实比较反常.查看日志后,发现出现了“xxx文件未找到”的异常.确认文件存在后,最先想到的就是,xx http://pic.cnhubei.com/space.php?uid=2732&do=album&id=968203http://pic.cnhubei.com/space.php?uid

django forms定义时的一些小技巧

我们在使用django定义好一个model后,可能需要添加或者修改model数据,此时可以借助于django提供的forms表单组件. forms表单和model结合使用时,必须在Meta类中指定关联的model和需要展示的字段(field) django会自动根据每个字段的类型来生成适合的forms字段 如有一个外键字段,django会自动把他转化成其关联的对象而不是简单的展示其关联的id. 一个简单的model关联的forms表单定义,如FlowStageForm1. class FlowS

利用uploadify+asp.net 实现大文件批量上传。

前言 现在网上文件上传组件随便一搜都是一大堆,不过看大家一般都在用uploadify这个来上传文件.由于项目需要,我在来试了一下.因为第一次使用,也遇到了很多问题,特此记录! ----------------------------------我是分割线---------------------------------我是分割线--------------------------------------------------- 效果图: 启用批量上传开关 大文件上传时的webconfig配置