
IO与文件系统
Linux IO与文件系统实现细节
科学边界
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Linux内核之IO4:块I/O流程与I/O调度器
1一个块IO的一生 从page cache到bio到request 当APP打开一个文件,内核为文件维护一个pagecache(磁盘的一个副本); 读写文件时如果page cache命中,只会读写内存不操作磁盘;没有命中,才操作磁盘。 在内核用file结构体表示,可见其包含一个inode结构体,一个地址空间; 相关的几个结构体在内核对应关系如下: 可见,当多个进程同时打开同一个文件时,不同的file结构体对应同一个inode和同一个地址空间,地址空间是由一颗radix tree维护(即pagecache原创 2020-08-27 18:02:43 · 1461 阅读 · 0 评论 -
Linux内核之IO3:文件系统一致性
1 掉电与文件系统一致性 由上一节文件系统的布局分析可知,当操作一个文件时,比如往/a目录下添加一个b,即添加/a/b文件,需要修改inode bitmap, inode table, block bitmap, data block。 这一系列的操作是非原子的,假如任何一个环节掉电,造成某些步骤丢失,就会造成数据的不完整,文件将无法正常访问。 2 append一个文件的全流程 而硬件是不可能原子执行的,因此会造成不一致性。 3 模拟文件系统不一致性案例 (1) 做一个image,用来模拟磁盘 dd原创 2020-08-27 17:55:39 · 1482 阅读 · 0 评论 -
Linux内核之IO2:EXT文件系统详解(案例解析)
一切都是文件,Linux通过VFS中间层,支持多种文件系统,对APP统一接口; 文件系统的本质是将用户数据和元数据(管理数据的数据),组织成有序的目录结构。 1 EXT2文件系统总体存储布局 一个磁盘可以划为多个分区,每个分区必须先用格式化工具(某种mkfs)格式化成某种格式的文件系统,然后才能存储文件,格式化的过程会在磁盘上写一些管理存储布局信息。一个典型的ext格式化文件系统存储布局如下: 文件系统最小存储单位是Block,Block大小格式化时确定,一般4K; 启动块(BootBlock): 大小原创 2020-08-27 17:43:04 · 3075 阅读 · 0 评论 -
Linux内核之IO1: I/O模型
在业务执行过程中,常伴随大量的IO操作,如果IO操作和CPU消耗不能合理安排,将会导致整体业务执行效率低下,用户体验极差。 比如手机启动过程,有大量CPU消耗和IO操作。用Bootchart记录android启动过程的CPU/IO消耗如下图 Systemd readahead: Systemd readahead-collect.service搜集系统启动过程中的文件访问信息,Systemd readahead-replay.service在后续启动过程中完成回放,即将IO操作与CPU并行; 提高效率的原创 2020-08-27 16:57:20 · 899 阅读 · 0 评论