linux 文件系统

文章记录,详细内容请读者可以查看https://time.geekbang.org/column/article/76876
《Linux性能优化实战》

文件的结构

  • 1、索引节点
  • 2、目录项
    存储元信息和目标结构

索引节点,简称为 inode,用来记录文件的元数据,比如 inode 编号、文件大小、访问权限、修改日期、数据的位置等。索引节点和文件一一对应,它跟文件内容一样,都会被持久化存储到磁盘中。所以记住,索引节点同样占用磁盘空间。

目录项,简称为 dentry,用来记录文件的名字、索引节点指针以及与其他目录项的关联关系。多个关联的目录项,就构成了文件系统的目录结构。不过,不同于索引节点,目录项是由内核维护的一个内存数据结构,所以通常也被叫做目录项缓存。

换句话说,索引节点是每个文件的唯一标志,而目录项维护的正是文件系统的树状结构。目录项和索引节点的关系是多对一,你可以简单理解为,一个文件可以有多个别名。

在这里插入图片描述
1、磁盘在执行文件系统格式化时,会被分成三个存储区域,超级块、索引节点区和数据块区。其中,

  • 超级块,存储整个文件系统的状态。
  • 索引节点区,用来存储索引节点。
  • 数据块区,则用来存储文件数据。

虚拟文件系统

文件系统,是对存储设备上的文件,进行组织管理的一种机制。为了支持各类不同的文件系统,Linux 在各种文件系统实现上,抽象了一层虚拟文件系统(VFS)。

VFS 内部又通过目录项、索引节点、逻辑块以及超级块等数据结构,来管理文件。

  • 目录项,记录了文件的名字,以及文件与其他目录项之间的目录关系。
  • 索引节点,记录了文件的元数据。
  • 逻辑块,是由连续磁盘扇区构成的最小读写单元,用来存储文件数据。
  • 超级块,用来记录文件系统整体的状态,如索引节点和逻辑块的使用情况等。
    目录项是一个内存缓存;而超级块、索引节点和逻辑块,都是存储在磁盘中的持久化数据。

通过文件系统,可以分成3类
1、基于磁盘的文件系统
2、基于内存文件系统,我们经常用到的 /proc 文件系统,其实就是一种最常见的虚拟文件系统
3、网络文件系统,NFS
在这里插入图片描述
为了降低慢速磁盘对性能的影响,文件系统又通过页缓存、目录项缓存以及索引节点缓存,缓和磁盘延迟对应用程序的影响。

机械磁盘的最小读写单位是扇区,一般大小为 512 字节。扇区组成逻辑块4K
而固态磁盘的最小读写单位是页,通常大小是 4KB、8KB 等。

I/O 栈

我们可以把 Linux 存储系统的 I/O 栈,由上到下分为三个层次,分别是文件系统层、通用块层和设备层。
在这里插入图片描述

  • 文件系统层,包括虚拟文件系统和其他各种文件系统的具体实现。它为上层的应用程序,提供标准的文件访问接口;对下会通过通用块层,来存储和管理磁盘数据。
  • 通用块层,包括块设备 I/O 队列和 I/O 调度器。它会对文件系统的 I/O 请求进行排队,再通过重新排序和请求合并,然后才要发送给下一级的设备层。
  • 设备层,包括存储设备和相应的驱动程序,负责最终物理设备的 I/O 操作。

io wait

iowait 超过了 90%。这说明 CPU0 上,可能正在运行 I/O 密集型的进程
Buffer/Cache 占用内存高达 6GB 之多

问题场景

1、iowait 高,cpu 高 , buffer/cache 高
iostat 已经证明,磁盘 I/O 出现了性能瓶颈, pidstat 也证明了这个瓶颈是由 12280 号进程导致的。但是,strace 跟踪这个进程,却没有发现任何 write 系统调用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值