首页 > 系统相关 >Linux 下最主流的文件系统格式——ext

Linux 下最主流的文件系统格式——ext

时间:2023-11-08 23:02:39浏览次数:41  
标签:文件 ext4 文件系统 链接 ext extent Linux inode 节点

硬盘分成相同大小的单元,我们称为块(Block)。一块的大小是扇区大小的整数倍,默认是 4K。在格式化的时候,这个值是可以设定的。

一大块硬盘被分成了一个个小的块,用来存放文件的数据部分。这样一来,如果我们像存放一个文件,就不用给他分配一块连续的空间了。我们可以分散成一个个小块进行存放。这样就灵活得多,也比较容易添加、删除和插入数据。

文件还有元数据部分,例如名字、权限等,这就需要一个结构 inode 来存放。

inode 里面有文件的读写权限 i_mode,属于哪个用户 i_uid,哪个组 i_gid,大小是多少 i_size_io,占用多少个块 i_blocks_io。i_atime 是 access time,是最近一次访问文件的时间;i_ctime 是 change time,是最近一次更改 inode 的时间;i_mtime 是 modify time,是最近一次更改文件的时间。

在 ext2 和 ext3 中,其中前 12 项直接保存了块的位置,也就是说,我们可以通过 i_block[0-11],直接得到保存文件内容的块。

i_block[12]指向一个块,这个块里面不放数据块,而是放数据块的位置,这个块我们称为间接块。也就是说,我们在 i_block[12]里面放间接块的位置,通过 i_block[12]找到间接块后,间接块里面放数据块的位置,通过间接块可以找到数据块。

对于大文件来讲,要多次读取硬盘才能找到相应的块,这样访问速度就会比较慢。

为了解决这个问题,ext4 做了一定的改变。它引入了一个新的概念,叫做 Extents。

一个文件大小为 128M,如果使用 4k 大小的块进行存储,需要 32k 个块。如果按照 ext2 或者 ext3 那样散着放,数量太大了。但是 Extents 可以用于存放连续的块,也就是说,我们可以把 128M 放在一个 Extents 里面。这样的话,对大文件的读写性能提高了,文件碎片也减少了。

Exents 会保存成一棵树。

Linux 下最主流的文件系统格式——ext_ext

树有一个个的节点,有叶子节点,也有分支节点。每个节点都有一个头,ext4_extent_header 可以用来描述某个节点。

这里的项分两种,如果是叶子节点,这一项会直接指向硬盘上的连续块的地址,我们称为数据节点 ext4_extent;如果是分支节点,这一项会指向下一层的分支节点或者叶子节点,我们称为索引节点 ext4_extent_idx。这两种类型的项的大小都是 12 个 byte。

如果文件不大,inode 里面的 i_block 中,可以放得下一个 ext4_extent_header 和 4 项 ext4_extent。所以这个时候,eh_depth 为 0,也即 inode 里面的就是叶子节点,树高度为 0。

如果文件比较大,4 个 extent 放不下,就要分裂成为一棵树,eh_depth>0 的节点就是索引节点,其中根节点深度最大,在 inode 中。最底层 eh_depth=0 的是叶子节点。

除了根节点,其他的节点都保存在一个块 4k 里面,4k 扣除 ext4_extent_header 的 12 个 byte,剩下的能够放 340 项,每个 extent 最大能表示 128MB 的数据,340 个 extent 会使你表示的文件达到 42.5GB。这已经非常大了,如果再大,我们可以增加树的深度。

还有一种特殊的文件格式,硬链接(Hard Link)和软链接(Symbolic Link)。ln -s 创建的是软链接,不带 -s 创建的是硬链接。

Linux 下最主流的文件系统格式——ext_ext_02

硬链接与原始文件共用一个 inode 的,但是 inode 是不跨文件系统的,每个文件系统都有自己的 inode 列表,因而硬链接是没有办法跨文件系统的。

而软链接不同,软链接相当于重新创建了一个文件。这个文件也有独立的 inode,只不过打开这个文件看里面内容的时候,内容指向另外的一个文件。这就很灵活了。我们可以跨文件系统,甚至目标文件被删除了,链接文件还是在的,只不过指向的文件找不到了而已。



标签:文件,ext4,文件系统,链接,ext,extent,Linux,inode,节点
From: https://blog.51cto.com/key3feng/8261105

相关文章

  • 防火墙的限制规则1(Linux)
    一:概述系统中的防火墙可以限制从外部到内部访问,让用户只能访问特定的服务,这样可以防止他人非法入侵系统的内部。Linux系统提供了由IP分组的过滤和地址转换(NAT)的ip_tables、iptable_filter等多个Linux内核模块组成的Netfilter。防火墙可以在内外网上建立起一道屏障。二:设置防火墙......
  • linux 库依赖,开发和生产环境,部署问题
    在生产环境中测试发现程序无法运行,所以要分析一下./mentester:/lib/libtinfo.so6:nouersioninformationavailable(requiredby,/mentester)./mentester'/lib/libncursesso.b:nouersioninformationauailable(requiredby./mentester)memtesteruersion1.2.01......
  • Linux tail命令:显示文件结尾的内容
    tail命令和head命令正好相反,它用来查看文件末尾的数据,其基本格式如下:[root@localhost~]#tail[选项]文件名此命令常用的选项及含义【例1】查看/etc/passwd文件最后3行的数据内容。[root@localhost~]#tail-n3/etc/passwdsshd:x:74:74:Privilege-separatedSSH:/var......
  • linux的netstat命令简介
    环境centos7.9介绍netstat是一个网络工具,用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,以及系统上当前的网络连接状态。它可以帮助用户了解网络连接的详细信息,从而更好地诊断和解决网络问题。语法netstat[选项]常用选项-a:显示所有连接和监听端口。-n:以数字形式显示地......
  • openEuler22.03操作系统 Linux内核Kernel 5.10 应该选择哪个版本的mysql安装包下载?
    对于openEuler22.03操作系统和Linux内核Kernel5.10,你应该选择与该操作系统和内核版本兼容的MySQL安装包进行安装。在确定适合的MySQL版本时,你可以考虑以下几点:MySQL官方支持:查看MySQL官方网站中的文档或支持页面,确认其是否支持openEuler22.03操作系统和Kernel5.......
  • Linux/centos上如何配置管理Web服务器?
    (Linux/centos上如何配置管理Web服务器?)1Web简单了解Web服务器称为WWW服务器,主要是提供上网功能;常见的Web服务器有:MicrosoftIIS、IBMWebSphere、Apache、Tomcat等;本文主要以Apache服务器为例了解一些Linux/centos上如何配置管理Web服务器。2关于ApacheApache是一种开......
  • Flutter TextField组件的使用
    FlutterTextField组件简单的说,这个组件其实就是个输入框。1.属性constTextField({Keykey,this.controller,//控制器this.focusNode,//焦点this.decoration=constInputDecoration(),//装饰TextInputTypekeyboardType,//键盘类型,即输入类型this.textInputAction,//......
  • Linux安装配置apache
    1.获取软件: http://httpd.apache.org/ httpd-2.2.21.tar.gz2.安装步骤:解压源文件:1tarzvxfhttpd-2.2.21.tar.gz2cdhttpd-2.2.213./configure--prefix=/usr/local/apache2--enable-so--enable-rewrite4make5makeinstall运行./configure命令进行编译源代......
  • Linux下Mongodb安装和启动配置
    Mongodb的安装与启动下载链接: http://www.mongodb.org/downloads----------------------------------------------------------------------------Linux安装第一步:下载安装包下载版本:2.0.2-rc2下载链接: http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.0.4.tgz首先在......
  • rocky linux v9.2 网络配置
         ......