Linux文件系统与软链接硬链接

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节点冲突)

猜你喜欢

转载自blog.csdn.net/qq_43503315/article/details/89221562