理解Linux—inode

文件系统

本篇文章接上一篇(Linux基础IO)。

理解文件系统首先来了解一下磁盘,下面看图片:
在这里插入图片描述
磁盘盘片:主要记录数据的部分
扇区:为最小的物理存储单位,扇区组成的圆就是柱面。

磁盘寻找文件的步骤:
1.先找哪个盘面
2.在找哪个柱面
3.最后确定在哪个扇区

经过以上的3个步骤就确定要读写的文件。

ext2文件系统inode

计算机如何管理好这些磁盘呢?答案是把磁盘分区。分区的头部有一个启动块(Boot Block),,该分区的其他区域会划分成一个个块组(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.存储信息:
内核先找空闲的分区,块组,在分配inode,通过i节点表找到空闲的i结点(上面的文件是1845087),内核把文件信息记录到其中。
2.存储数据:
通过block bitmap找到空闲的块组,假如是300,500,900三个
3.将文件的内容分别存到data blocks中
4. 添加文件名到目录
新的文件名y.txt。linux如何在当前的目录中记录这个文件?内核将入口(1845087,y.txt)添加到目录文件。文件名和inode之间的对应关系将文件名和文件的内容及属性连接起来。

2.查找文件

首先找到该文件的分区和块组,接着找到文件对应的inode编号,在inode table中拿到该文件的属性,在根据inode和data blocks的映射关系找到是哪个块,在到data blocks拿到文件的内容。这就是查找文件。

3.理解删除文件

删除文件并不是删除数据,例如我们下载一个16G的游戏我们下载的时间比较长但是删除的时候便会很快。
删除文件:找到文件的对应block bimap和inode bitmap中的位置,此时直接把对应的有效位置改为无效,找不到映射关系即可。

软硬链接

软连接

建立软连接命令:ln -s

在这里插入图片描述

<
  • 32
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 26
    评论
Linux中,每个文件和目录都有一个相应的inode节点,它存储了有关该文件或目录的元数据信息,例如权限、所有者、时间戳等。inode节点还包含指向存储文件内容的数据块的指针。 当文件系统中的inode节点用尽时,需要扩展inode节点,以便可以创建更多的文件和目录。这可以通过以下步骤完成: 1. 确定文件系统的类型:使用命令`df -T`查看文件系统的类型,例如ext4、xfs等。 2. 创建一个新的文件系统:使用命令`mkfs`创建一个新的文件系统,该文件系统具有更多的inode节点。例如,`mkfs -t ext4 -N 1000000 /dev/sda1`将创建一个具有100万个inode节点的ext4文件系统。 3. 备份原始文件系统:使用命令`tar`或`rsync`备份原始文件系统,以便在出现问题时可以还原数据。 4. 挂载新文件系统:使用命令`mount`将新文件系统挂载到原始文件系统的一个子目录中。例如,`mount /dev/sda2 /mnt/newfs`将新文件系统挂载到`/mnt/newfs`目录中。 5. 将数据复制到新文件系统:使用命令`rsync -av /mnt/oldfs/ /mnt/newfs/`将原始文件系统中的数据复制到新文件系统中。 6. 卸载新文件系统:使用命令`umount /mnt/newfs`卸载新文件系统。 7. 将原始文件系统重命名:使用命令`mv /mnt/oldfs /mnt/oldfs.bak`将原始文件系统重命名。 8. 将新文件系统重命名为原始文件系统:使用命令`mv /mnt/newfs /mnt/oldfs`将新文件系统重命名为原始文件系统。 9. 更新文件系统表:使用命令`blkid`查找新文件系统的UUID,并将其添加到`/etc/fstab`文件中,以便在系统启动时自动挂载。 注意:在进行这些操作之前,请务必备份所有重要数据,并确保您理解每个步骤的含义和潜在风险。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_End丶断弦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值