调用rm命令删除文件的作用及磁盘空间释放相关技术问询
关于
rm命令的常见疑问解答 1. 执行rm filename.txt命令时会发生什么?
我给你拆解下这个完整过程:
- 首先系统会校验你对目标文件
filename.txt是否拥有删除权限; - 权限没问题的话,就会从文件所在的目录中移除这个文件名对应的目录项链接——简单说就是这个目录里再也找不到这个文件名了;
- 如果这个文件没有其他硬链接(只有这一个文件名指向它的inode),内核会把该文件的inode标记为可回收,对应的磁盘数据块也会被标记为空闲状态;
- 但要注意:如果此时还有进程正打开着这个文件,那磁盘空间暂时不会被释放,得等那个进程关闭文件句柄后,系统才会真正回收这些空间。
2. 执行rm删除文件后,能获得更多磁盘空间吗?后续能存更多大文件吗?被删的数据会被覆盖吗?
先直接给结论:正常情况下删除大文件后,你是能获得可用磁盘空间的,后续自然可以存储更多像视频这类大文件。具体细节给你说清楚:
文件会被解除链接。数据仍存留在磁盘上,但指向它的链接被移除。过去可以恢复这些数据,但如今元数据会被清除,数据无法恢复。
这段描述很准确:
rm的核心动作是解除链接,也就是删掉文件名和inode的关联。刚删除完的时候,数据其实还躺在磁盘上,但因为inode的元数据被清除了,系统已经找不到这些数据的位置了;- 当系统需要新的磁盘空间来存储数据时,就会直接把这些标记为空闲的旧数据块覆盖掉;
- 所以你遍历目录删除大文件后,系统的可用空间会立刻增加(除非有进程还占用着被删文件),完全可以用来存新的大文件。
内容的提问来源于stack exchange,提问作者Monty _s Flying Circus
相关产品推荐
相关产品推荐

