[Linux]文件系统

1.理解文件系统

  • Linux磁盘文件特性:内容加属性,内容大小是不确定的,但是属性大小是一定的,并且内容和属性是分开存储的。文件属性是用一个结构体来定义的,在Linux中,该结构体是固定128字节大小如下代码:
c 复制代码
struct inode
{
    类型;
    大小;
    权限;
    时间;
    inode编号;//整个分区内唯一的,用来区分文件的inode
    ...
}
  • 而Linux中一个文件块是4KB,那么一块就可以存储4*1024/128=32个该结构体。其中,值得注意的是文件名是不属于文件属性的。
  • 系统中,表示一个文件,用的不直接是文件名,而是inode,用命令ls -i就可以查看文件的inode

2.刨析文件分组中的各个组成

  • i节点表(inode Table):存放文件属性 如 文件大小,所有者,最近修改时间等。假设我们这个group0大小是10GB,我们要在这10GB的大小的空间内存放一万个文件,也就说说有一万个inode,那么10000*128/4/1024=312。这意味着有312个block就能存储一万个inode。所以如果有一万个文件,那么这312个block包含的一万个inode组成的表就是inode Table

  • inode位图(inode Bitmap):每个bit表示一个inode是否空闲可用。比特位的位置代表:第几个inode;比特位的内容:表示该inode是否正在被使用。

  • 数据区:存放文件内容,里面有很多4kb的区域用来存放文件内容

  • 块位图(Block Bitmap):Block Bitmap中记录着Data Block中哪个数据块已经被占用,哪个数据块没有被占用。比特位的位置代表第几个数据block,比特位的内容代表该block是否正在被使用。

c 复制代码
struct inode
{
    类型;
    大小;
    权限;
    时间;
    inode编号;//整个分区内唯一的,用来区分文件的inode
    int block[15];
    ...
}
  • inode结构体中还有个成员变量是block的数组,这个数组里面的内容存放的是该文件存放block块的下标。其中存放15个元素,即[0, 14],其中[0, 11]就是存放该文件正常被使用的数据块的下标,[12, 13]不直接存放数据块下标,里面的内容指向的是数据块编号,即间接索引,14中存放的内容是指向12.13这样的索引数据块,即三级索引块。

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

  • 超级块(Super Block):存放文件系统本身的结构信息。记录的信息主要有:bolck 和 inode的总量,未使用的block和inode的数量,一个block和inode的大小,最近一次挂载的时间,最近一次写入数据的时间,最近一次检验磁盘的时间等其他文件系统的相关信息。Super Block的信息被破坏,可以说整个文件系统结构就被破坏了。描述整个分区

  • 格式化的本质就是向指定的分区写入全新的文件系统。上面说的文件系统叫Ext*(2)

3.详谈文件名和文件的增删查改

  • 首先,明确一个概念,目录是一个文件,那么目录肯定也是有内容+属性,其中目录的内容是很多对文件名和inode编号的映射关系。
  • 对于一个文件的增删查改,都和这个文件所处的目录有关系,查找一个文件,在内核中,都要逆向地递归般得到/,然后从根目录进行路径解析。
  • 一个被写入文件系统的分区,要被Linux使用,必须先将这个分区进行挂载,mount命令。
  • 一个文件系统所对应的分区,挂在对应的目录中。分区的访问,都是通过所挂在的路径访问的,所以访问一个文件,可以根据路径前缀,优先区分出文件在哪一个分区下。

4.软硬链接

  • 由上面的现象可以看出来,硬链接本质不是一个独立的文件,而软链接有自己的inode,是一个独立的文件。

  • 硬链接肯定没有新建文件,而是新建了一个文件名,和目标文件的inode编号形成了映射关系,写入到指定目录的数据块中。前面的2代表的是硬链接数(也就是下图的引用计数),而删了test.c后,硬链接数就等于1了。所以,我们所说的删除文件,其中就是删除目录文件中的映射关系,当文件的inode中的引用计数为0时,才会把inode位图和block位图中对应文件的比特位置零,也就是删除磁盘中的文件。

4.1软硬链接的原理
  • 硬链接的本质就是在指定的目录下,插入新的文件名和目标文件的映射关系,并让inode的引用计数++
  • 软链接的本质就是一个独立文件,软链接内容里面放的是目标文件的路径,类似于windows下的快捷方式。(额外小知识:linux系统中删除的指令除了rm,还有unlink指令)
  • linux中可以给目录创建软链接,但是不可以给目录创建硬链接。这样可以避免环路问题,避免陷入死递归。除非系统自己建立硬链接,例如.和...
相关推荐
AC赳赳老秦2 小时前
供应链专员提效:OpenClaw自动跟踪物流信息、更新库存数据,异常自动提醒
java·大数据·服务器·数据库·人工智能·自动化·openclaw
夏日听雨眠2 小时前
LInux(逻辑地址与物理地址的区别,文件描述符,lseek函数)
linux·运维·网络
哲霖软件3 小时前
ERP 赋能非标自动化行业:破解物料与库存管理难题
运维·自动化
qq_542515414 小时前
Ubuntu 22.04.4 LTS安装ToDesk最新版打不开,无响应?旧版本4.7.2_277版本分享
linux·ubuntu·todesk
火车叼位4 小时前
替代 Tiny Win10 的 Linux 方案:Debian XFCE 精简桌面搭建
linux·运维
小麦嵌入式4 小时前
FPGA入门(四):时序逻辑计数器原理与 LED 闪烁实现
linux·驱动开发·stm32·嵌入式硬件·fpga开发·硬件工程·dsp开发
皮卡蛋炒饭.5 小时前
传输层协议UDP
linux·网络协议·udp
大明者省5 小时前
宝塔开了端口,Ubuntu 还得开相应端口才能打通
服务器·数据库·ubuntu
syagain_zsx5 小时前
Linux指令初识(实用篇)
linux·运维·服务器
OYangxf5 小时前
Git Commit Message
运维·git