admin管理员组文章数量:1487745
【Linux】理解文件系统与软硬链接,观察inode号理解<“软链接是包含路径的新文件“,“硬链接是关于文件名的机制“>,最终明白<什么是真正删除一个文件>
一.文件信息(文件名+文件元数据)介绍
- 一个完整的文件包括: 1.文件信息 2.文件内容
ls -l
显示的是 文件信息
- 我们使用
ls -l
的时候看到的除了看到文件名,还看到了文件元数据。
[root@localhost linux]# ls -l
总用量 12
-rwxr-xr-x. 1 root root 7438 "9月 13 14:56" a.out
-rw-r--r--. 1 root root 654 "9月 13 14:56" test.c
- 分别对应含义如下图所示
二.文件系统与inode介绍
- Linux ext2文件系统,下图为 磁盘文件系统图 (内核内存映像肯定有所不同),磁盘是典型的块设备, 硬盘分区被划分为一个个的block。
每个Block分区分成许多部分,下面是这些分区的介绍,主要关注i节点表与数据区:
- Block Group: ext2文件系统会根据分区的大小划分为数个Block Group。而每个Block Group都有着相同的结构组成。政府管理各区的例子
- 超级块(Super Block): 存放文件系统本身的结构信息。记录的信息主要有:bolck 和 inode的总量,未使用的block和inode的数量,一个block和inode的大小,最近一次挂载的时间,最近一次写入数据的时间,最近一次检验磁盘的时间等其他文件系统的相关信息。Super Block的信息被破坏,可以说整个文件系统结构就被破坏了
- GDT,Group Descriptor Table: 块组描述符,描述块组属性信息
- 块位图(Block Bitmap): Block Bitmap中记录着Data Block中哪个数据块已经被占用,哪个数据块没有被占用inode位图(inode Bitmap):每个bit表示一个inode是否空闲可用。
- i节点表(结构体): 存放文件属性 如 文件大小,所有者,最近修改时间等。为什么软连接是一个独立的文件而硬链接不是? 是因为软连接 有独立的inode编号
- 数据区(Data blocks):存放文件内容
三.【软/硬链接】理解与介绍
1.软硬链接基本知识
- 软链接: 独立的文件, 有着独立inode , 软连接的内容是目标文件路径 ,类比windows系统的快捷方式
- 硬链接: 关于文件名的机制,非独立文件,指定目录内的一组 映射 关系,inode内部有引用计数,会记录映射关系
※为什么软连接是一个独立的文件而硬链接不是? 是因为软连接 有独立的inode编号。
2.软硬链接创建&删除语法
代码语言:javascript代码运行次数:0运行复制-- 创建硬链接
ln test1 test.hard.link
-- 创建软链接(-s 即 soft)
ln -s test1 test.soft.link
-- 删除链接
unlink test1 test.hard.link
3.观察inode编号理解链接中的本质
- 我们对test1创建一个软链接文件test1.soft.link
- 发现 二者inode编号不一致
- 我们对test2创建一个硬链接文件test1.hard.link
- 发现 二者inode编号一致
4.一个操作理解-“硬链接是关于文件名的机制”
- 我们删除test2的硬链接后,发现其硬链接数量由2变为1
- 那我们发现其实他的inode号并没有发生变化, 那是不是实现了文件名的修改?即重命名
- 那我们下次想要修改文件名时,也可以创建一个硬链接并删除原来的路径下的源文件
5.一个文件真正被删除——没有<文件名+映射关系(硬链接)>
- 所以我们最终得出结论:当没有<文件名+映射关系(硬链接),一个文件才算真正被删除
本文标签: Linux理解文件系统与软硬链接,观察inode号理解<“软链接是包含路径的新文件“,“硬链接是关于文件名的机制“>,最终明白<什么是真正删除一个文件>
版权声明:本文标题:【Linux】理解文件系统与软硬链接,观察inode号理解<“软链接是包含路径的新文件“,“硬链接是关于文件名的机制“>,最终明白<什么是真正删除一个文件> 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/shuma/1754868704a3180607.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论