随笔分类 -  Linux文件系统

Linux文件系统详解
摘要:从操作系统的角度详解Linux文件系统层次、文件系统分类、文件系统的存储结构、不同存储介质的区别(RAM、ROM、Flash)、存储节点inode。本文参考: http://blog.chinaunix.net/uid-8698570-id-1763151.html http://www.iteye 阅读全文

posted @ 2018-02-23 14:06 AlanTu 阅读(96961) 评论(3) 推荐(12) 编辑

fs/ext2/inode.c相关函数注释
摘要:用数组chain[4]描述四种不同的索引,即直接索引、一级间接索引、二级间接索引、三级间接索引。举例说明这个结构各个域的含义。如果文件内的块号为8,则不需要间接索引,所以只用chain[0]一个Indirect结构,p指向直接索引表下标为8处,即&inode->u.ext2_i.i_data[8]; 阅读全文

posted @ 2018-02-23 14:00 AlanTu 阅读(643) 评论(0) 推荐(0) 编辑

块设备的读流程分析
摘要:关于VFS的通用读,我们不做考虑,本文以如下函数为根,往下分析: do_generic_mapping_read(*ppos,*mapping,*desc) do_generic_mapping_read(*ppos,*mapping,*desc) do_generic_mapping_read(* 阅读全文

posted @ 2018-02-23 13:52 AlanTu 阅读(837) 评论(0) 推荐(1) 编辑

linux文件系统管理的工作原理
摘要:一、系统在初始化时如何识别硬盘 1、系统初始时根据MBR的信息来识别硬盘,其中包括了一些执行文件就来载入系统,这些执行文件就是MBR里前面446bytes里的boot loader 程式,而后面的16X4的空间就是存储分区表信息的位置;如下图 2、在分区表中,主要储存了以下信息:(1)分区号,常见的 阅读全文

posted @ 2018-02-23 13:50 AlanTu 阅读(8289) 评论(0) 推荐(0) 编辑

Ext4文件系统架构分析(三)
摘要:ioctl源码分析之交换两个文件的物理extents 1. 交换两个文件的extents Ext4 的EXT4_IOC_MOVE_EXT命令用于交换两个文件的extents,实际上是交换两个文件的对应逻辑长度的数据的物理存储空间(见下图),也是EXT4文件系统碎片整理的基础。 用户可以通过ioctl 阅读全文

posted @ 2018-02-23 13:25 AlanTu 阅读(2984) 评论(0) 推荐(1) 编辑

Ext4文件系统架构分析(二)
摘要:Ext4 文件系统 ioctl功能概述 ioctl.c 源码功能概述 Ext4的ioctl提供给用户以下接口,以方便用户更改文件系统的各种设置和状态: (1) EXT4_IOC_GETFLAGS: 获取inode的标志位,用户获取当前的inode标志位信息; (2) EXT4_IOC_SETFLAG 阅读全文

posted @ 2018-02-23 13:23 AlanTu 阅读(4285) 评论(0) 推荐(1) 编辑

Ext4文件系统架构分析(一)
摘要:本文描述Ext4文件系统磁盘布局和元数据的一些分析,同样适用于Ext3和Ext2文件系统,除了它们不支持的Ext4的特性外。整个分析分两篇博文,分别概述布局和详细介绍各个布局的数据结构及组织寻址方式等。感兴趣的看官敬请留意和指导! 1. Ext4文件系统布局综述 一个Ext4文件系统被分成一系列块组 阅读全文

posted @ 2018-02-23 11:15 AlanTu 阅读(26501) 评论(2) 推荐(0) 编辑

linux write系统调用如何实现
摘要:在Linux下我们在使用设备的时候,都会用到write这个函数,通过这个函数我们可以象使用文件那样向设备传送数据。可是为什么用户使用write函数就可以把数据写到设备里面去,这个过程到底是怎么实现的呢? 这个奥秘就在于设备驱动程序的write实现中,这里我结合一些源代码来解释如何使得一个简简单单的w 阅读全文

posted @ 2018-02-22 22:33 AlanTu 阅读(5777) 评论(0) 推荐(0) 编辑

漫谈linux文件IO
摘要:在Linux 开发中,有几个关系到性能的东西,技术人员非常关注:进程,CPU,MEM,网络IO,磁盘IO。本篇文件打算详细全面,深入浅出。剖析文件IO的细节。从多个角度探索如何提高IO性能。本文尽量用通俗易懂的视角去阐述。不copy内核代码。 阐述之前,要先有个大视角,让我们站在万米高空,鸟瞰我们的 阅读全文

posted @ 2018-02-22 20:46 AlanTu 阅读(11918) 评论(0) 推荐(0) 编辑

其他文件系统
摘要:ramfs内存文件系统 ramfs是一个利用VFS自身结构而形成的内存文件系统。ranfs没有自己的文件存储结构,它的文件存储于page cache中,目录结构由dentry链表本身描述,文件则由VFS的inode结构本身描述。 /proc文件系统 /proc文件系统是个虚拟文件系统,它通过文件系统 阅读全文

posted @ 2018-02-22 19:37 AlanTu 阅读(195) 评论(0) 推荐(0) 编辑

EXT2 文件系统
摘要:对文件系统而言,文件仅是一系列可读写的数据块。文件系统并不需要了解数据块应该放到物理介质上什么位置。这些都是设备驱动的任务。无论何时,只要文件系统需要从包含它的块设备中读取信息或数据,它就将请求底层的设备驱动读取一个基本块大小整数倍的数据块。EXT2文件系统将它所使用的逻辑分区划分成数据块组。每个数 阅读全文

posted @ 2018-02-22 19:36 AlanTu 阅读(2641) 评论(0) 推荐(0) 编辑

虚拟文件系统
摘要:Linux内核中的虚拟文件系统用来管理挂接各种具体文件系统。具体的文件系统可设计成可加载模块,在系统需要时进行加载。 挂载具体文件系统时,VFS读取它的超级块,得到具体文件系统的拓扑结构,并将这些信息映射到VFS超级块结构中。 当进程或shell命令访问目录和文件时,shell命令及应用程序分解成系 阅读全文

posted @ 2018-02-22 19:35 AlanTu 阅读(1030) 评论(0) 推荐(0) 编辑

系统级I/O
摘要:一、UNIX I/O 在UNIX系统中有一个说法,一切皆文件。所有的I/O设备,如网络、磁盘都被模型化为文件,而所有的输入和输出都被当做对相应文件的读和写来执行。这种将设备映射为文件的方式,允许UNIX内核引出一个简单、低级的应用接口,称为UNIX I/O,这使得所有的输入和输出都能以一种统一且一致 阅读全文

posted @ 2018-02-22 16:44 AlanTu 阅读(323) 评论(0) 推荐(0) 编辑

如何恢复 Linux删除的文件
摘要:原理及普通文件的恢复 要想恢复误删除的文件,必须清楚数据在磁盘上究竟是如何存储的,以及如何定位并恢复数据。本文从数据恢复的角度,着重介绍了 ext2 文件系统中使用的一些基本概念和重要数据结构,并通过几个实例介绍了如何手工恢复已经删除的文件。最后针对 ext2 现有实现存在的大文件无法正常恢复的问题 阅读全文

posted @ 2018-02-22 16:39 AlanTu 阅读(40428) 评论(0) 推荐(0) 编辑

pdflush机制
摘要:在做进程安全监控的时候,拍脑袋决定的,如果发现一个进程在D状态时,即TASK_UNINTERRUPTIBLE(不可中断的睡眠状态),时间超过了8min,就将系统panic掉。恰好DB组做日志时,将整个log缓存到内存中,最后刷磁盘,结果系统就D状态了很长时间,自然panic了,中间涉及到Linux的 阅读全文

posted @ 2018-02-22 16:27 AlanTu 阅读(873) 评论(0) 推荐(0) 编辑

从ext2文件系统上读出超级块
摘要:概述 本篇博客中,我们将仔细分析如何从格式化为ext2文件系统的磁盘中读取超级块并填充内存超级块结构,每次将一个格式化了ext2文件系统的磁盘(分区)挂载到挂载点的时候会调用该方法,该方法在操作系统中的实现主要是函数ext2_fill_super。 实现 在ext2系列之前的博客中我们描述了ext2 阅读全文

posted @ 2018-02-22 16:25 AlanTu 阅读(970) 评论(0) 推荐(0) 编辑

ext2文件系统
摘要:2.1. 总体存储布局 我们知道,一个磁盘可以划分成多个分区,每个分区必须先用格式化工具(例如某种mkfs命令)格式化成某种格式的文件系统,然后才能存储文件,格式化的过程会在磁盘上写一些管理存储布局的信息。下图是一个磁盘分区格式化成ext2文件系统后的存储布局。 图 29.2. ext2文件系统的总 阅读全文

posted @ 2018-02-22 16:25 AlanTu 阅读(401) 评论(0) 推荐(0) 编辑

ext2磁盘布局
摘要:概述 本篇博客主要关注ext2文件系统的磁盘布局,即ext2会在格式化时将磁盘划分成什么样子。 ext2磁盘布局 任何Ext2分区中的第一个块从不受Ext2文件系统的管理,因为这一块是为分区的引导扇区所保留的。Ext2分区的其余部分被分割成块组(block group),每个块组的分布图如下图1所示 阅读全文

posted @ 2018-02-22 16:24 AlanTu 阅读(1413) 评论(0) 推荐(0) 编辑

文件缓存回写简述
摘要:1 文件缓存回写的时机 (1)周期性回写,周期为dirty_writeback_interval,默认5s; (2)块设备首次出现脏数据; (3)脏页达到限额,包括dirty_bytes、dirty_background_bytes、dirty_ratio、dirty_background_rati 阅读全文

posted @ 2018-02-13 22:25 AlanTu 阅读(803) 评论(0) 推荐(0) 编辑

ext2文件系统 - mke2fs
摘要:上一遍博文的重点其实将ext2整体的组织框架,我们知道了ext2文件系统由块组组成,每个块组里面的组织形式。我们甚至直接把超级块和组描述符里面的内容,用十六进制形式展现了出来。这篇博文主要讲述如何mke2fs生成合适需要的ext2 文件系统,基本就是参数选择的问题。 mke2fs 常用的几个参数有: 阅读全文

posted @ 2018-02-13 20:32 AlanTu 阅读(412) 评论(0) 推荐(0) 编辑

导航