文件系统之软连接、硬链接的区别/文件删除与空间的联系/df和du的区别

简介: 文件系统之软连接、硬链接的区别/文件删除与空间的联系/df和du的区别

文件系统中的软连接和硬链接。

每个文件创建好之后,都会维护两个计数器:i_count和i_nlink。

  • i_count:记录了有多少个程序在使用这个文件(记录了程序打开文件的数量)。
  • i_nlink:记录这个文件的硬链接数(目录项指向)。

1、软连接

软连接:相当于一个快捷方式。是完全的备份soft_disk.sh,inode号都不一样。创建自己的inode号指向自己的inode号,它里面的data不会放具体的数据,然后找到自己的data。(最后一个data存放之前指向文件的指针,通过指针找到inode号,找到inode号之后,最后找到data)它只认之前文件的路径,如果删除文件,就是删除文件的目录项,文件名没有了,如果创建同名的文件名,这个连接又生效,因为它只认文件的文件路径名。

创建方式为:ln -s 源文件 链接文件

[root@localhost soft-hard]# ln -s aa aa_soft  创建连接文件(创建aa的连接文件aa_soft)
[root@localhost soft-hard]# ls
aa  aa_soft
[root@localhost soft-hard]# ls -ld
drwxr-xr-x 2 root root 46 6月  14 21:33 .
[root@localhost soft-hard]# touch bb
[root@localhost soft-hard]# ls -ld
drwxr-xr-x 2 root root 56 6月  14 22:59 .
[root@localhost soft-hard]# mkdir subsoft
[root@localhost soft-hard]# ls -ld
drwxr-xr-x 3 root root 71 6月  14 22:59 .
[root@localhost soft-hard]# ls -ld .
drwxr-xr-x 3 root root 71 6月  14 22:59 .
[root@localhost soft-hard]# ls -ld subsoft
drwxr-xr-x 2 root root 6 6月  14 22:59 subsoft
[root@localhost soft-hard]# ls -al subsoft/
总用量 0
drwxr-xr-x 2 root root  6 6月  14 22:59 .
drwxr-xr-x 3 root root 71 6月  14 22:59 ..

2、硬链接

不同的目录项指向inode1。hard_disk.sh 新的目录项指向同一个inode,创建新的目录项,硬链接不能跨文件系统。

创建方式为:ln 源文件 链接文件

[root@localhost soft-hard]# ln aa aa_soft  
ln: 无法创建硬链接"aa_soft": 文件已存在
[root@localhost soft-hard]# ls -al
总用量 4
drwxr-xr-x   2 root root   31 6月  14 20:47 .
drwxr-xr-x. 20 root root 4096 6月  14 20:42 ..
-rw-r--r--     1     root root    0 6月  14 20:47 aa
lrwxrwxrwx   1 root root    2 6月  14 20:47 aa_soft -> aa

查看i_node号:ls -i 文件名

[root@localhost soft-hard]# ls -i aa
1137852 aa
[root@localhost soft-hard]# ls -i aa_hard  查看i_node号
1137852 aa_hard
[root@localhost soft-hard]# ls -i aa_soft
1137853 aa_soft

3、硬链接和软连接的异同点

1、创建方式不同。软硬链接都是通过ln创建文件,如果接-s就是创建软链接,如果不接就是创建硬链接。

2、现象:删除原文件两个链接文件的区别。

最大的现象是:删除原文件的时候,软连接就失效了,但是硬链接不受影响,还能正常使用。

硬链接删除原文件,链接文件还能正常使用;软连接删除原文件,链接文件就看不到了,硬链接只是新建目录项。

3、原理:硬链接其实就是新建目录项和原文件指向同一个inode。

               软链接:新建了一个文件,只是这个文件的data数据指向原文件的路径。

因为硬链接连接其实就是创建一个新的目录项,指向同一个inode,所以删除原文件的时候,就是删除原文件的目录项信息,但是硬链接指向的inode号还在那里的,所以还能访问得到

对于软连接,如果删除软链接,软链接是从头到尾生成一个全新的文件,这个文件里面的内容指向的还是以前的源文件的目录、路径,源文件的被删除之后就获取不到了,源文件的目录项被删除之后,软链接就获取不到数据了。

4、区别:

①硬链接:不能跨文件系统创建(每个文件系统都有自己独立的inode)

               不能对目录进行链接。

  • 硬链接新建了一个目录项,指向同一个inode,所以不同的文件系统有不同的inode,属于自己的inode,不能跨文件系统去创建硬链接。

软链接:软链接只关注路径,所以是可以跨文件系统的。

② 硬链接不能对目录进行链接,只能对文件进行链接。

   软链接没有这个要求,可以链接文件也可以链接文件夹。

硬链接:

相当于起了个别名。不会创建新的inode号,链接文件和源文件共用一个inode号,只是源文件的引用数加一;

如果删除源文件,链接文件仍然可以使用 ;

链接文件和源文件的文件类型相同;

硬链接不能跨文件系统,软链接可以;

不可以对不存在的文件和目录创建硬链接;

软链接:

相当于Windows桌面上的快捷方式。会创建新的inode号,源文件和链接文件的inode号不相同;

源文件的链接数不变,链接文件的链接数为1(不会被上一层引用);

源文件和链接文件的文件类型不同,软链接文件权限为777,文件属性有标识,访问权限真正取决于源文件权限;

删除源文件,链接文件就访问不了了;

可以对不存在的文件和目录创建软链接;

4、删除文件与空间的联系

i_count 记录程序打开这个文件的数量(fd);i_nlink 记录文件的硬链接数(目录项指向)

只有当i_count和i_nlink都为0,这个inode和data的空间才会被标记未使用,这部分磁盘空间才会被释放,有时候rm删除文件,但是空间不一定会被释放的。

rm删除文件只是删除目录项,i_nlink数减1,还需要关注i_count数,看有没有进程使用当前文件。

df查看磁盘满了,但是du查看单文件大小还没有那么大。删除某些日志文件,没有重新加载服务,日志文件不会被释放。

解决办法:

1、找到进程:lsof|grep del  查看已经删除但是仍占有资源的文件

2、重启服务

清空日志文件,在进程还运行的时候,不要用删除。

可以选择重定向覆盖清空:>access.log

/logrotate.d日志的轮转的时候如果需要往旧文件里面messages写新文件的时候,与进程相关的需要重新加载服务或者重启进程。

5、du和df的区别

du是查看目录的大小,而df是查看磁盘的使用情况。

常见的df和du查看结果不一致情况是文件删除造成的。

du(disk usage):是通过搜索文件来计算每个文件的大小然后累加得到的,du能看到的文件只是一些当前存在的,没有被删除的。当一个文件被删除之后,在文件系统目录中已经不可见了,所以du就不会再统计它了。

df(disk free):通过磁盘来快速获取空间大小的信息,文件被删除之后,i_link变为0,但是如果这个时候进程(i_count)持有这个已经被删除了的文件的句柄,那么这个文件就不会真正在磁盘中被删除, 超级块中的信息就不会被更改。这样df仍然会统计这个被删除的文件。因此找到还持有被删除文件句柄的进程,然后关闭进程或者杀掉进程用以释放空间。它比du强的地方就是能够看到已经删除了的文件,而且计算大小的时候,把这一部分的空间也加上了,更加精确了(程序看到统计的)。当文件熙然也确定删除了改文件之后(重新加载或重启服务),这个时候du和df就一致了。可以用lsof |grep delelted查看哪些文件删了但是仍然在占用资源。

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
存储 移动开发
80C51单片机----数据传送类指令
80C51单片机----数据传送类指令
1272 2
|
前端开发
基于jeecg前端实现从表ERP格式选择
基于jeecg前端实现从表ERP格式选择
255 1
|
存储 缓存 JSON
基于 FastAPI 的房源租赁系统设计与实现
传统的线下租房不便、途径少、信息更新慢,导致房屋租赁效率低。为了有效的提升租赁效率和房源信息管理、提供更优质的租赁服务。让房东出租宣传展示与房源管理、租客更好的检索房源信息、发布租房需求以及入住预定、后台房源管理、审核等一站式租赁服务平台。
408计算机组成原理学习笔记——运算方法和运算电路(一)
408计算机组成原理学习笔记——运算方法和运算电路
958 1
408计算机组成原理学习笔记——运算方法和运算电路(一)
|
存储 弹性计算 固态存储
阿里云服务器突发型、共享型、通用型实例有何区别?如何选择?
本文介绍了阿里云服务器突发型、共享型和通用型(企业级)实例及它们之间的区别和选择建议,仅供参考!
7911 1
阿里云服务器突发型、共享型、通用型实例有何区别?如何选择?
|
机器学习/深度学习 人工智能 算法
开源vs闭源大模型如何塑造技术的未来?开源模型的优劣势&未来发展方向
开源vs闭源大模型如何塑造技术的未来?开源模型的优劣势&未来发展方向
2796 0
|
机器学习/深度学习 算法 数据挖掘
阿里音乐流行趋势预测—冠军答辩(一)|学习笔记
快速学习阿里音乐流行趋势预测—冠军答辩(一)
1132 0
|
Linux
VirtualBox的Centos上安装GNOME桌面完整教程
在VirtualBox上的CentOS系统安装GNOME桌面环境的完整教程,通过执行一系列命令来安装EPEL软件源、GNOME桌面环境,并配置系统默认运行级别为图形界面。
384 0
|
前端开发 芯片
【异步电路碎碎念1】 —— 到底什么是异步电路
【异步电路碎碎念1】 —— 到底什么是异步电路
883 0
【异步电路碎碎念1】 —— 到底什么是异步电路
|
数据中心
20张图!阿里张北数据中心竟然是这样的
如果以“上善若水”来形容阿里千岛湖数据中心,那么这一次,阿里张北数据中心可谓“风”“光”无限。
50242 0