Linux 文件系统

文章目录

文件系统定义

网络答案:Linux文件系统是Linux操作系统中用于组织和管理文件和目录的一种文件系统。它负责在硬盘上存储和检索文件,并为用户提供对文件的访问和管理功能。

个人理解:依然是从硬件说起,先说磁盘本身的物理结构从,磁盘的结构如下图所示,一个磁盘内有多个盘片,每个盘片有两个盘面,盘面上有多个同心圆环被称为磁道,磁道又被均匀划分为一个个扇区,每个扇区可存储512 字节数据(二进制数据)(无论该扇区离圆心远近都是512KB)。面对如此多的数据块,操作系统需要对其进行先描述再组织,这也就有了文件系统的需求,文件系统是操作系统的一部分(如下图二)。

磁盘结构:

文件系统是操作系统的一部分:

文件系统结构

引导块(Boot Block): 是文件系统中的一个特殊块,位于文件系统的起始位置。它包含了引导加载程序(Boot Loader)所需的信息,用于引导操作系统的启动过程。

Block Group :ext2文件系统会根据分区的大小划分为数个Block Group。而每个Block Group都有着相

同的结构组成。

超级块(Super Block ):存放文件系统本身的结构信息。记录的信息主要有:bolck 和 inode的总量,

未使用的block和inode的数量,一个block和inode的大小,最近一次挂载的时间,最近一次写入数据的

时间,最近一次检验磁盘的时间等其他文件系统的相关信息。Super Block的信息被破坏,可以说整个

文件系统结构就被破坏了

Group Descriptor Table:块组描述符,描述块组属性信息,

Block Bitmap:Block Bitmap中记录着Data Block中哪个数据块已经被占用,哪个数据块没有被占用

inode Bitmap:每个bit表示一个inode是否空闲可用。

inode Table :存放文件属性 如 文件大小,所有者,最近修改时间等。

Data blocks :存放文件内容。

解释说明:

  1. Boot Block 为引导块,缺点文件系统的起始位置/

  2. 整个磁盘被分为了若干个Block group (对应了日常使用电脑时分C\D\E盘的行为), 每个Block group结构相同。在Block group 中负责实际数据存储的是Data Blocks区,Data Block 区中有许多Block存储块(具体有多少看用户分盘情况),一个Block的可存数据大小是4KB。

  3. Block Bitmap是一个位图,该位图一个标志位被置为1,则代表对应的一个Block块(4KB)被占用。

    inode Bitmap 与 inode Table 关系则有所区别, inode Bitmap 位图标志位记录inode编号是否被占用,inode Table 则记录indoe编号对应的文件信息。

  4. 超级块(Super Block )记录了整个文件系统的全局信息,而组描述(Group Descriptor Table)符表记录了文件系统中每个块组的详细信息。操作系统在挂载文件系统时首先读取超级块,然后使用超级块中的信息来定位和读取组描述符表,进而获取文件系统的更详细信息和管理文件系统的块组。

文件创建过程

当我们创建一个文件并保存,操作系统在利用其文件系统在内核中先找通过inode Bitmap和Block Bitmap找到未使用的inode Table 和多个Data block来分别储存所创建文件的信息和内容,需要注意的是Data block可能不是连续的,inode Table 中记录的文件信息记录了该文件内容被存储在哪些Data block(不是通过Block Bitmap记录,Block Bitmap只能识别某个Data block是否被使用)。

软硬链接原理

  1. 如果不清楚软硬连接在补充说明部分有解释。

  2. 软硬链接的特性/原理是由文件系统的特性/结构决定的。创建软连接在文件系统视角来看,是新创建了一个文件(软连接是一个文件),这个文件的内容是原文件或目录 的路径,故软链接可以跨文件系统(跨磁盘分区,即跨Block group)进行链接。 创建硬链接在文件系统视角来看,是为文件名和inode(inode是inode Table中的)建立新的映射关系,即多个文件名可对应同一个inode。硬链接与目标文件共享相同的inode和数据块,故硬链接只能链接到同一文件系统中的文件,且不能链接到目录。

  3. 在文件系统中,目录是一种特殊的文件,它包含了其他文件和目录的索引。目录中的每个条目都包含了文件名和对应文件的inode号码。硬链接是通过将一个文件名关联到一个inode号码来创建的。

    因为目录文件已经被用于存储其他文件和目录的索引信息,所以将一个硬链接链接到目录会导致混乱和冲突。例如,如果允许将一个硬链接链接到目录,那么可能会出现循环链接的情况,导致文件系统无法正常遍历和访问文件。所以硬链接不能连接到目录。

补充说明

一、为什么一个扇区0.5 KB,而文件系统中一个block块4KB呢

  1. 0.5KB太小,会增加读取次数,导致效率低下,但一次读取数据单位也不能过大,否则空间浪费较多。
    (如果前一个数据存储为占满一个block,下一个数据会在新的block开始存储)。
  2. 完成硬件和软件解耦,如果磁盘的一个扇区为1kb,block为0.5KB就会发生操作系统和硬件不兼容的问题。

二 、 什么是元数据

元数据是指从信息资源中抽取出来的用于说明其特征、内容的结构化的数据(如题名,版本、出版数据、相关说明,包括检索点等),用于组织、描述、检索、保存、管理信息和知识资源。

三 、 什么是软硬链接

  1. 作用:

通俗的理解软硬连接就是window系统中文件的快捷方式,要想进一步理解就要看软硬链接原理。

  1. 创建:

创建软链接(Symbolic Link)

bash 复制代码
ln -s <目标文件> <链接文件>

软链接是一个特殊的文件(软链接是文件),它包含了指向目标文件的路径信息。软链接可以跨越不同的文件系统,并且可以链接到目录。

创建硬链接(Hard Link):

bash 复制代码
ln <目标文件> <链接文件>

硬链接是目标文件的另一个入口点,它与目标文件共享相同的inode和数据块。硬链接只能链接到同一文件系统中的文件,且不能链接到目录。

创建链接时,目标文件可以是绝对路径或相对路径。链接文件的名称可以自定义,但是需要确保在所在目录中是唯一的。

使用以上命令创建软链接和硬链接时,如果目标文件或链接文件已经存在,会提示是否覆盖或创建失败。可以通过添加 -f 选项来强制创建链接并覆盖已存在的文件。

另外,可以使用 ls -l 命令来列出文件和链接文件的详细信息,包括链接类型、目标文件和链接文件的路径等。

四、 Linux 如何查看文件或目录的硬链接数

bash 复制代码
ls -l | grep '^-' | grep '文件或目录名称' | wc -l

五 、为什么目录默认两个硬链接数?

因为 . / 和 ... / 都是文件,被隐藏起来了。

. 和 ... 分别是对本目录和上级目录的硬链接。(硬连接数的最终判断标准是同一个inode编号建立了多少映射 )

文件默认的硬链接是文件名,数为1

目录默认的硬链接是目录名和./ 数目为2(目录本身和./连个硬链接)如果在已经创建的目录里再创建目录,里层目录里会产生 .../ ,.../是和外层目录建立了链接的,故此时外层目录的硬链接数会+1。

相关推荐
IT大白鼠5 分钟前
彭大帅的AI运维助手——自然语言管理 Linux 集群与网络设备——第 5 篇 · 多模态与虚拟化AI 能「看」图:多模态与虚拟化管理
linux·运维·人工智能
IT大白鼠31 分钟前
彭大帅的AI运维助手——自然语言管理 Linux 集群与网络设备——第 2 篇 · 安全守规矩的 AI:分级安全管控是灵魂
linux·运维·人工智能
风华同学35 分钟前
免密SSH登录Ubuntu
linux·运维·ubuntu
꯭自꯭闭꯭36 分钟前
达梦守护集群手工切换及故障切换
linux·运维·服务器·数据库
cuijiecheng20181 小时前
RK3588 DEP 接入 Dante Domain Manager(DDM)完整测试记录
linux
爱吃香菜的初学者1 小时前
十二.Linux——管道
linux·运维·服务器
网硕互联的小客服9 小时前
Linux服务器磁盘应该如何合理分区?
linux·运维·服务器
贵沫末10 小时前
Ubuntu——常用软件安装
linux·运维·ubuntu
Doraemomo11 小时前
Linux内核驱动开发——中断与定时器
linux·运维·驱动开发
2301_8084143811 小时前
Linux中动静态库的理解
linux·运维·服务器