开机提示:卷“文件系统根目录“仅剩0字节磁盘空盘

原因:

我好像也没做什么,只是上次关机前解压了很多大文件,删了很多大文件。

开机提示:卷“文件系统根目录“仅剩0字节磁盘空盘。

Tab提示:无法为立即文档创建临时文件:设备没有空间

使用 磁盘使用情况分析器可以查看每个文档的大小

用 df -h查看磁盘空间,发现46G的系统根目录满了。

可能原因是Ubuntu删除文件的机制有关。

文件删除的原理

这里的原理涉及到文件系统,我对这里也不是很清楚,只说大概的理解,相信探究文件是怎样删除的足够再写一篇很不错的博客了。

当我们使用rm删除文件时,会调用unlink/unlinkat系统调用。 
man如下

The unlink() function shall remove a link to a file. 
………… 
When the file’s link count becomes 0 and no process has the file open, 
the space occupied by the file shall be freed and the file shall no 
longer be accessible. If one or more processes have the file open when 
the last link is removed, the link shall be removed before unlink() 
returns, but the removal of the file contents shall be postponed until 
all references to the file are closed.

大意 unlink是移除一个对目标文件的link,当这个link的计数到0,并且没有进程打开着这个文件,文件占用的空间会被释放,这个文件也不再能被访问了。 
当最后一个link被移除时,如果有一个以上的进程打开着这个文件,那么这个文件内容的移除会直到所有引用(reference)关闭。
 

所以

我们删除大文件之后,还要确保打开它的进程也关闭才行,才能真正的释放磁盘空间。(没错这是个大日志文件)

1. 我们用 du -h -x --max-depth=1 依次查看文件系统

删除较大的日志文件。

2.当删除大量小文件组成的文件夹时用 rm -rf *就不是很好用了,隔一段时间就要这样清理一次。在这种情况之下我们可以使用linux系统命令rsync来巧妙的处理。rsync实际上用的是替换原理,处理数十万个文件也是秒删。

ubuntu系统安装:sudo apt-get install rsync

rsync --help | grep delete

     --del                                an alias for --delete-during

     --delete                          delete extraneous files from destination dirs

     --delete-before             receiver deletes before transfer, not during

     --delete-during             receiver deletes during transfer (default)

     --delete-delay               find deletions during, delete after

     --delete-after                receiver deletes after transfer, not during

     --delete-excluded        also delete excluded files from destination dirs

     --ignore-errors             delete even if there are I/O errors

     --max-delete=NUM    don't delete more than NUM files

其中--delete-before接收者在传输之前进行删除操作

当要清空目录或文件时,先建立一个空目录:

mkdir /data/blank 

然后用rsync删除目标目录 

rsync --delete-before -d -a -H -v --progress --stats /data/blank/ /var/edatacache/

或者

rsync --delete-before -d /data/blank/ /var/edatacache/

这样/var/edatacache目录就被快速的清空了。

 

选项说明:
–delete-before 接收者在传输之前进行删除操作
–progress          在传输时显示传输过程
-a                       归档模式,表示以递归方式传输文件,并保持所有文件属性
-H                      保持硬连接的文件
-v                       详细输出模式
–stats                给出某些文件的传输状态

-d                      transfer directories without recursing

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值