具体Linux内容可以参考狂神说Linux系列
一、文件系统特性
1.概述
- 每种操作系统(Windows, Linux),或者同一个操作系统的不同版本之间支持的文件文件系统并不相同
比如windows 98 以前的微软操作系统主要利用的文件系统是 FAT (或 FAT16),windows 2000 以后的 版本有所谓的 NTFS 文件系统 - 文件系统可以理解为管理整个系统的文件的管理形式
- 通常所说的格式化本质是将管理磁盘文件的文件系统变成对应的操作系统可以使用的文件系统格式(这个过程中顺便删除了数据)
2.Linux下文件系统
2.1 Linux文件系统概述
- 存储空间分区,每个区有一个区号用来唯一标识该区(用于索引和管理)
- Linux下文件除了数据信息外还有一些非常重要的权限,文件属性信息,这些信息也需要存储(毕竟ls -al指令要列出这些数据,管理上也需要读取这些权限信息数据)
- 如何去存储上述的信息,以及如何索引,如何管理这些信息就构成了Linux的文件系统
- Linux正统的文件管理系统为ext2
2.2 Linux文件存储
- 权限,属性以及该文件对应的所有数据区块所在的区块号码放到inode中,无论文件大小,每个文件占用一个inode
- 实际的数据放到数据区块
- 整个文件系统的整体信息放到一个称之为"超级区块"的地方(主要包括inode与数据区块的总量,使用量等和文件系统相关的信息)
- 文件存储形式示意图如下:
4号inode中有该inode对应的文件数据内容所占据的所有数据区块号 -
![请添加图片描述](https://img-blog.csdnimg.cn/c323cfcdbabd48dba542be0dec36d4d7.jpg)
2.3 目录的存储
- 目录也可以理解为一种特殊的"文件",该"文件"也会占用一个inode记录权限信息,同时分配一个数据区块
- 目录的数据记录的是该目录下的文件名和文件名对应文件的inode号,目录的数据区记载内容如下所示:
inode number | 文件名 |
---|---|
53735697 | test.txt |
53735698 | test1.txt |
二、硬链接和软链接
2.1 硬链接
- 通过以上分析可以总结出:一个文件的文件名只和其所在的目录有关,文件内容由inode来指定,那么一个inode完全可以由多个目录项来指定,目录项之间名称不同但是inode number一样,
- 硬链接只是在某个目录下添加一项,不会产生新的inode,也不会消耗区块
- 硬链接不可以跨文件系统,不可以链接到目录
硬链接文件读取示意图:
说明:目录1的inode号码对应为"1", 目录2对应的inode为"2", 两个目录下分别有个文件名为filename1,filename2, 但是两个filename对应的inode号一样都是文件x的inode号
2.2 软链接(符号链接)
- 将指向操作放到文件中去
- 软链接会产生新的文件,这个新的文件可以称为"链接文件",这个新的"链接文件"里存放的是真正想要链接的文件的路径,根据这个路径可以找到真正想要链接的文件
- Windows中快捷方式就是符号链接
- 软链接示意图:
- 说明:为file1设置一个软链接文件file2,file2的数据区存放的是file1的路径名,根据这个路径去找到file1目录的inode然后可以去访问目录1,之后找到filename1对应的inode,去访问file1
2.3 两种链接方式的比较
- 删除源文件f1后,打开f2
硬链接无影响(因为源文件存储在磁盘中的内容并没有被删除)
软链接失效(因为删除源文件后,磁盘中不再有源文件了)