Linux下文件系统
- 磁盘上文件的管理系统,磁盘上除了交换分区外都有一个文件系统,如下图所示
这里我以ext2文件系统为例,介绍一下文件系统,如图
- Linux
ext2文件系统,上图为简略磁盘文件系统图(内核内存映像肯定有所不同),磁盘是典型的块设备,硬盘分区被划分为一个个的block。一个block的大小是由格式化的时候确定的,并且不可以更改。例如mke2fs的-b选项可以设
定block大小为1024、2048或4096字节。而上图中启动块(Boot Block)的大小是确定的 - 超级块(Super Block):存放文件系统本身的结构信息。记录的信息主要有:bolck 和
inode的总量,未使用的block和inode的数量,一个block和inode的大小,最近一次挂载的时间,最近一次写入数据的时间,最近一次检验磁盘的时间等其他文件系统的相关信息。Super
Block的信息被破坏,可以说整个文件系统结构就被破坏了 - 数据块位图(Data Bitmap):Data Bitmap中记录着Data Block中哪个数据块已经被占用,哪个数据块没有被占用
inode位图(inode Bitmap):每个bit表示一个inode是否空闲可用。 i节点表:存放文件属性 如
文件大小,所有者,最近修改时间等 - 数据区:存放文件内容
文件存储与读取
- 存储过程
通过inode bitmap在inode区域获取空闲的inode节点,通过data bitmap 获取空闲的数据块,在inode节点记录文件信息以及数据块位置信息,并且将文件数据写入数据块中,将自己的目录项信息添加到所在的目录项文件中。(目录文件,是一个文件,该文件中记录目录下的文件信息,文件名+inode节点号就叫做目录项)
- 读取过程
在目录项中通过文件名获取inode节点号(文件唯一),通过inode节点号在inode区域找到inode节点,通过inode节点中的数据块地址信息,在指定数据块读取文件信息。
- 查看inode节点大小
sudo dumpe2fs -h /dev/sdal | grep “Inode size”
软链接与硬链接
-
软链接: ln -s test.txt 相当于一个快捷方式,是一个独立的文件
-
硬链接: ln test.txt 相当于备份,与源文件共用一个inode节点
-
区别
1、软链接文件是一个独立的文件,硬链接文件与源文件共用一个inode节点
2、删除源文件,软链接文件失效,硬链接文件无影响
3、软链接文件可以跨分区处理,硬链接文件不可以(因为在ext2文件系统下,我们有inode节点,但如果换成其它文件系统就不一定有inode节点,硬链接文件与源文件共用一个inode节点,所以它不能跨分区创建)
4、软链接文件可以对目录创建,硬链接不可以(硬链接有可能会造成inode节点冲突)