CentOS软、硬链接以及文件删除原理
硬链接:ln 源文件 目标文件。通过索引节点inode来进行链接,一个文件会有一个编号,这个编号就是inode
多个文件指向同一个inode就称为硬链接。
作用:允许一个文件拥有多个有效路径(多个入口),这样用户就可以建立硬链接到重要的文件,以防止“误删”源数据。
ext2文件系统中,一个inode含有多个文件,删除一个文件并不影响其他文件。最后一个文件被删除时,释放inode。
1) 硬链接文件是具有相同inode节点号的不同文件
2) 删除硬链接文件或者删除源文件之一,文件实体并未被删除
3) 只有删除了源文件及所有对应的链接文件,文件实体才会被删除。
4) 当所有的硬链接文件及源文件被删除后,再存放新的数据会占用这个文件的空间,或者磁盘fsck检查的时候,数据也会被回收
5) 硬链接文件是文件的又一个入口。
6) 通过执行命令“ln 源文件 目标文件(硬链接文件)”即可完成创建硬链接
7) rm -f 硬链接文件
8) 可以通过给文件设置硬链接文件,来防止重要文件被误删
软连接:有称为符号链接,类似于windows中的快捷方式。软连接文件是一个文本文件,包含了软连接文件指向另一个文件的位置信息内容,因此,可以快速定位到软连接所指向的源文件实体。
readlink apache 查看软连接的value
ln -s 源文件 软连接文件 即可完成创建软连接。
1) 删除源文件,软连接文件依然存在,但是无法访问指向的路径内容
2) 软连接和源文件是不同类型的文件,也是不同的文件,inode号不同
3) rm -f 软连接文件
ln命令不能对命令创建硬链接,但可以对命令创建软连接,对应目录的软连接认识生产环境运维中常用的功能。
往源文件里写入内容后,它的软硬链接文件都有相同的内容。
结论:
删除软连接文件对源文件及硬链接文件无任何影响
删除硬链接文件对源文件及软连接文件无任何影响
删除源文件,对硬链接文件没有影响,但是会导致软连接文件失效,白字红底闪烁
同时删除源文件及硬链接,整个文件会被真正的删除
很多硬件设备中的快照功能就是利用了硬链接的原理。
源文件和硬链接文件具有相同的索引号节点,可以认为是同一个文件或一个文件的多个入口
源文件和软连接文件索引号节点不同,是不同的文件,软连接相当于源文件的快捷方式。
关于目录链接小结:
目录不可以创建硬链接,但可以创建软连接
对于目录的软连接是生产环境运维中常用的技巧
目录的硬链接不能跨文件系统
每个目录下面都有一个硬链接“.”号,和上级目录“…”
在父目录里创建一个子目录,父目录的连接数加1(子目录里有…来指向父目录,但是在父目录里创建文件,父目录的连接数不会增加)
文件删除原理:
控制文件删除时,以下两个条件同时具备才生效
1) 受文件的硬链接数控制,有一个硬链接i_link+1,减少一个硬链接i_link-1,当i_link=0时,文件就删除了
2) 受进程占用控制,当有进程使用这个文件时,有一个进程占用这个文件i_count+1,即i_count=1,当减少一个进程占用i_count-1,即i_count=0,当没有进程调用时i_count=0
3) 当i_link=0并且i_count=0时,文件才会被真正删除。
4)文件名和文件仅是单线联系!
空间为何不释放?
1) hardlink
2) 另一个进程还在使用这个文件
3) 磁盘空余空间维护出现问题