文件系统
文章平均质量分 71
比不了就不比
这个作者很懒,什么都没留下…
展开
-
文件系统结构
二、组织结构: 1、总体布局: 在Ext2、Ext3中,存储数据的结构是按“块”来组织的,而不是“扇区”。块的大小随文件系统的大小而有所不同(一般是512字节、1024字节等)。而一定数量的块又组成一个块组,每个块组的起始部分有多种多样的描述该块组各种属性的元数据结构(磁盘布局结构):每一个分区的前两个扇区存放系统启动用的信息等,所以真正的文件系统是从第三个扇区开始算的。其原创 2013-11-02 19:37:26 · 987 阅读 · 0 评论 -
深入理解linux i节点(inode)
对于Unix系列的操作系统,大多都有v节点。但是对于linux来说,只有通用的i节点,却没有v节点。下面来探讨一下,linux下的i节点。 linux中,文件查找不是通过文件名称来查找的。实际上是通过i节点来实现文件的查找定位的。我们可以形象的将i节点看做是一个指针fip。当文件存储到磁盘上去的时候,文件肯定会存放到一个磁盘位置上,可以这样想象,既然文件数据转载 2014-05-12 22:58:58 · 917 阅读 · 0 评论 -
一天一点学习Linux之Inode详解
在Linux文件系统中,很多人对Inode都不太明白,今天我就和大家一起来分享一下我对Inode的认识,如果有理解错误的地方,请大家多多批评指点。在上一篇一天一点学习Linux之认识文件系统中,在最后给出了一张EXT3文件系统结构图,里面已经涉及到了Inode的相关信息——图的左下角部分,今天,我们就专门对这一部分进行一下详解,希望通过今天的内容,能帮助大家更清楚的了解Inode。转载 2014-05-13 08:54:53 · 638 阅读 · 0 评论 -
深入理解ext2/ext3文件系统真相
摘要:我们对于ext2/ext3文件系统的了解大多来自操作系统的课本或者《understanding linux kernel》这本书,但是最近做了一个项目,需要根据文件的inode结点号找到inode本身。因此需要对ext2/ext3文件系统做深入的理解。在做的过程中才发现,原来书上讲的理论和现实的差距太大了。可能是因为书比较早,或者书上只是讲了一个概念模型,以至从实际工程的角度来看,课转载 2014-04-26 15:47:20 · 2710 阅读 · 0 评论 -
read 系统调用剖析
大部分程序员可能会有这样的疑问:当在程序中调用库函数 read 时,这个请求是经过哪些处理最终到达磁盘的呢,数据又是怎么被拷贝到用户缓存区的呢?本文介绍了从 read 系统调用发出到结束处理的全过程。该过程包括两个部分:用户空间的处理、核心空间的处理。用户空间处理部分是系统调用从用户态切到核心态的过程。核心空间处理部分则是 read 系统调用在 linux 内核中处理的整个过程。R转载 2014-03-20 18:58:43 · 694 阅读 · 0 评论 -
linux IO子系统和文件系统读写流程
我们含有分析的,是基于2.6.32及其后的内核.我们在linux上总是要保存数据,数据要么保存在文件系统里(如ext3),要么就保存在裸设备里。我们在使用这些数据的时候都是通过文件这个抽象来访问的,操作系统会把我们需要的数据提交给我们,而我们则无需和块设备打交道。从下图,我们可以清除的看到:I/O子系统是个层次很深的系统,数据请求从用户空间最终到达磁盘,经过了复杂的数据流动转载 2014-03-20 19:22:02 · 2156 阅读 · 0 评论 -
漫谈linux文件IO
在Linux 开发中,有几个关系到性能的东西,技术人员非常关注:进程,CPU,MEM,网络IO,磁盘IO。本篇文件打算详细全面,深入浅出。剖析文件IO的细节。从多个角度探索如何提高IO性能。本文尽量用通俗易懂的视角去阐述。不copy内核代码。 阐述之前,要先有个大视角,让我们站在万米高空,鸟瞰我们的文件IO,它们设计是分层的,分层有2个好处,一是架构清晰,二是解耦。让我们看一下下面这张图转载 2014-03-20 19:33:57 · 860 阅读 · 0 评论 -
Page cache和buffer cache的区别与联系
Page cache和buffer cache一直以来是两个比较容易混淆的概念,在网上也有很多人在争辩和猜想这两个cache到底有什么区别,讨论到最后也一直没有一个统一和正确的结论,在我工作的这一段时间,page cache和buffer cache的概念曾经困扰过我,但是仔细分析一下,这两个概念实际上非常的清晰。如果能够了解到这两个cache的本质,那么我们在分析io问题的时候可能会更加得心应手转载 2014-03-20 19:06:32 · 829 阅读 · 0 评论 -
Linux文件系统之文件的读写
一:前言文件的读写是文件系统中最核心也是最复杂的一部份,它牵涉到了很多的概念.之前分析文件系统其它操作的时候,遇到与文件系统相关的读写部份都忽略过去了.在这一节里,来讨论一下文件的读写是怎样实现的.二:I/O请求的概述如之前所提到的,为了提高文件的操作效率,文件系统中的内容都是缓存在内存里的.每当发起一个Rear/Write请求的时候,都会到页面高速缓存中寻找具体的页面.如果页面不存在转载 2013-11-10 19:16:09 · 3048 阅读 · 0 评论 -
从文件 I/O 看 Linux 的虚拟文件系统
1 引言 Linux 中允许众多不同的文件系统共存,如 ext2, ext3, vfat 等。通过使用同一套文件 I/O 系统调用即可对 Linux 中的任意文件进行操作而无需考虑其所在的具体文件系统格式;更进一步,对文件的操作可以跨文件系统而执行。如图 1 所示,我们可以使用 cp 命令从 vfat 文件系统格式的硬盘拷贝数据到 ext3 文件系统格式的硬盘;而这样的操作涉及到两个不同的文件转载 2013-11-06 20:31:46 · 809 阅读 · 0 评论 -
linux文件系统体系结构 和 虚拟文件系统(VFS)
图 1. Linux 文件系统组件的体系结构 用户空间包含一些应用程序(例如,文件系统的使用者)和 GNU C 库(glibc),它们为文件系统调用(打开、读取、写和关闭)提供用户接口。系统调用接口的作用就像是交换器,它将系统调用从用户空间发送到内核空间中的适当端点。VFS 是底层文件系统的主要接口。这个组件导出一组接口,然后将它们抽象到各个文件系统,各个文件系统的行为可能转载 2013-11-06 18:44:56 · 2788 阅读 · 0 评论 -
Linux设备驱动--块设备(一)之概念和框架
基本概念 块设备(blockdevice)--- 是一种具有一定结构的随机存取设备,对这种设备的读写是按块进行的,他使用缓冲区来存放暂时的数据,待条件成熟后,从缓存一次性写入设备或者从设备一次性读到缓冲区。字符设备(Character device)---是一个顺序的数据流设备,对这种设备的读写是按字符进行的,而且这些字符是连续地形成一个数据流。他不具备缓冲区,所以对这种设备的读转载 2013-11-06 17:07:12 · 807 阅读 · 0 评论 -
Linux设备驱动--块设备(四)之“自造请求”
前面, 我们已经讨论了内核所作的在队列中优化请求顺序的工作; 这个工作包括排列请求和, 或许, 甚至延迟队列来允许一个预期的请求到达. 这些技术在处理一个真正的旋转的磁盘驱动器时有助于系统的性能. 但是, 许多面向块的设备, 例如闪存阵列, 用于数字相机的存储卡的读取器、u盘等, 并且 RAM 盘真正地有随机存取的性能, 包含从高级的请求队列逻辑中获益. 其他设备, 例如软件 RAID 阵列或者被转载 2013-11-06 17:09:58 · 806 阅读 · 0 评论 -
Linux设备驱动--块设备(三)之程序设计
块设备驱动注册与注销块设备驱动中的第1个工作通常是注册它们自己到内核,完成这个任务的函数是 register_blkdev(),其原型为:int register_blkdev(unsigned int major, const char *name);major 参数是块设备要使用的主设备号,name为设备名,它会在/proc/devices中被显示。 如果major为0,内核会转载 2013-11-06 17:09:05 · 798 阅读 · 0 评论 -
Linux设备驱动--块设备(二)之相关结构体
上回最后面介绍了相关数据结构,下面再详细介绍块设备对象结构 block_device内核用结构block_device实例代表一个块设备对象,如:整个硬盘或特定分区。如果该结构代表一个分区,则其成员bd_part指向设备的分区结构。如果该结构代表设备,则其成员bd_disk指向设备的通用硬盘结构gendisk当用户打开块设备文件时,内核创建结构block_device实例,设备驱动转载 2013-11-06 17:08:36 · 1292 阅读 · 1 评论 -
bdev文件系统
文件系统,是对磁盘数据进行组织和管理的一种机制。可通过装载,以目录和文件的形式向用户层呈现。但,文件和目录其实只是文件系统的前端而已,只是文件系统的用户视图,其本质还在于这样的一个数据结构:inode。那纯粹从inode角度来描述一个文件系统,会是什么情况?伪文件系统,就是这样的一种表示,它不能装载,不可能从用户空间看到,但它不会带来任何的信息损失。看不到,不等于它不存在。伪文件系转载 2013-11-18 18:56:09 · 1315 阅读 · 0 评论 -
Linux 磁盘分区和文件系统
本文以Ext2文件系统为例讲述Linux文件系统,由于Ext3文件系统是直接从Ext2文件系统发展而来,它完全兼容Ext2文件系统,所以本文的内容对于Ext2和Ext3都是适用的。 我们首先看一下磁盘分区和文件系统的结构图: 图 1 磁盘分区和文件系统结构图 整个磁盘可以分为1个MBR(Master Boot Record)和4个partitions。其中MBR的结构转载 2013-11-02 18:44:30 · 4156 阅读 · 0 评论