磁盘即是硬盘,由许多块盘片(盘面)组成,每个盘片的上下两面都涂有磁粉,磁化后可以存储信息数据。每个盘片的上下两面都安装有磁头,磁头被安装在梳状的可以做直线运动的小车上以便寻道,每个盘面被格式化成有若干条磁道,这些磁道是同心圆。并规定最外面的磁道是0磁道,次外层是1磁道,每个磁道又被分成若干个扇区,并被排号,扇区是CPU对磁盘I/O操作时能够读取和写入的最小单位,通常,一个扇区可以储存512B的二进制信息位,每个盘面上的同号磁道组成一个柱面(磁柱)。也就是说每个盘面的0号磁道组成0号柱面,所有的1号磁道组成1号柱面,等等。通过下面的图,可以了解


  在Linux操作系统中,内核采用的方法是把物理磁盘抽像为逻辑磁盘管理文件系统,所谓逻辑磁盘是把物理磁盘按照磁头号,磁道号,扇区号,以及盘面号划分成磁盘块的线性数组,也叫线性序列,如:把1号盘面的0号磁道的0号扇区定义为0号磁盘块,一般扇区数是2的整次幂。显然,当把实际的磁盘看成是磁盘块的线性数组时,就把物理磁盘存储数据的实际地址(即磁道号,扇区号以及盘面号)隐藏起来,因此呈现在系统高层面前的已经不是物理磁盘,而是一个经过加以后的逻辑磁盘。逻辑磁盘比物理硬盘的结构要简单的多,当系统执行磁盘I/O操作时,系统给出试图访问的逻辑磁盘块号,由设备驱动程序根据该块号计算出物理磁盘的磁道号,磁头号以及扇区号,然后启动硬盘把磁头向前或向后移动到相应的柱面,这便是所谓的寻道。寻道是磁盘I/O操作中最耗时的一个操作。一量磁头找到磁道,并且相应的扇区转到磁头下面,数据传输就开始。


  而文件是一个具有符号的一组相关联元素的有序序列,文件可以包含范围很广的内容。系统和用户都可以将具有一定独立功能的程序模块,一组数据或一组文字命名为一个文件。在计算机里看见的东西都叫文件,文件是以单个名称在计算朵上存储的信息集合,文件可以是文本文档,图片,程序等,文件通常有三个字母的扩展名,用于指示文件类型(windows下)。


  文件系统指文件存在的物理空间。在linux系统中,每个分区是一个文件系统,都有自己的目录层次。linux的最重要的特征之一就是支持多种文件系统,这样它更加灵活,并可以和许多其他操作系统共存。由于系统已将linux文件系统的所有细节进行了转换,所以linux核心的其它部分及系统中运行的程序将年到统一的文件系统。


  大部分的linux文件系统种类具有类似的通用结构,即使细节有些变化。其中心概念是超级块(superblock),i节点(inode),数据块(data block),目录块(directory block)和间接块(indirection block)。超级块包括文件系统的总体信息,比如大小。i节点包括除了名称外的一个文件的所有信息,而名字与i节点数目一起存在目录中,目录条目包括文件名和文件的i节点数目。i节点包括几个数据块的数目,用于存储文件数据。i节点中只有少量数据块的空间,如果需要更多,会动态分配指向数据块的指针空间,这些动态分配的块是间接块,为了找到数据,这名子指出它必须先找到间接块号码。


  linux文件系统分为3个部分,第一部分是Virtual File System(VFS),它是linux文件系统对外的接口,任何要使用文件系统的程序都必须经由这层接口来使用它,另外两部分是属于文件系统的内部实现,分别是Cache和真正的文件系统(如Ext3/VFAT等)

虚拟文件系统是linux内核中的一个软件抽象层,它一方面用于给用户空间的程序提供文件系统接口,另一方面还提供了内核中的一个抽象功能,它通过一些数据结构及其方法向实际的文件系统提供接口,实现不同文件系统在linux中共存。系统中所有文件系统不但依赖于VFS共存,同时也要依靠VFS协同工作

为了能支持各种文件系统,VFS定义了所有文件系统都必须支持基本的/概念上的接口和数据结构。例如,超级块/节点/文件操作函数入口等。换句话说,一个实际的文件系统要想被linux支持,就必须提供一个符合VFS标准的接口,这样才能与VFS协同工作。VFS不是实际的操作系统,它只是一种转换机制,仅存在于内存中,不存在于任何外存空间。下图所示为VFS在内核中与实际的文件系统的协同关系

本文出自 “成鹏致远” 博客,请务必保留此出处http://infohacker.blog.51cto.com/6751239/1171702

【Linux技术】磁盘的物理组织,深入理解文件系统的更多相关文章

  1. Linux查看磁盘剩余空间

    Linux查看磁盘剩余空间 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ df 文件系统 1K-blocks 已用 可用 已用% 挂载点 /dev/sda8 ...

  2. linux磁盘 分区 物理卷 卷组 逻辑卷 文件系统加载点操作案例

    转自:truemylife.linux磁盘 分区 物理卷 卷组 逻辑卷 文件系统加载点操作案例 基本概念: 磁盘.分区.物理卷[物理部分] 卷组[中间部分] 逻辑卷.文件系统[虚拟化后可控制部分] 磁 ...

  3. Linux如何定位文件在磁盘的物理位置

    我在学习研究Linux内核结构的时候,思考过一个问题:Linux如何定位文件在磁盘的物理位置每个文件都有一个inode,inode在内核代码中的数据结构如下: 1 struct ext4_inode ...

  4. centos Linux下磁盘管理 parted,df ,du,fdisk,partprobe,mkfs.ext4,mount,/etc/fstab,fsck,e2fsck,mk2efs,tmpfs ,nr_inodes, LVM,传统方式扩容文件系统 第七节课

    centos Linux下磁盘管理   parted,df ,du,fdisk,partprobe,mkfs.ext4,mount,/etc/fstab,fsck,e2fsck,mk2efs,tmpf ...

  5. Linux的磁盘管理和文件系统

    一.磁盘结构 1.1.硬盘的物理结构 盘头:硬盘有多个盘片,每盘片2面 磁头:每面一个磁头 1.2.硬盘的数据结构 扇区:盘片被分为多个扇形区域,每个扇区存放512字节的数据,硬盘的最小存储单位 磁道 ...

  6. Linux磁盘分区,目录树,文件系统的关系(转)

    研究了很久,自始至终不能够从三者的区别和联系中找到一个大脑与这些概念之间合适的相处方式.对于基本概念和理论理解不到位,在工作之中会走很多弯路和犯很多错误.今天花一天的时间,终于对三者的区别和联系有了更 ...

  7. Linux系统磁盘与分区管理(7)

    Linux最传统的磁盘文件系统(filesystem)使用的是EXT4格式,所以要了解文件系统就得要由认识EXT4开始,而文件系统是创建在硬盘上面的,因此我们得了解硬盘的物理组成才行,下面我们回来详细 ...

  8. Linux下磁盘挂载

    公司硬盘不够用了,新买了一个存储,需要挂载到现在的系统上.前期的步骤就不说了,运维全部搞定,无非是硬件和网络那一套,这里只说分配到本人后在Linux下如何挂载. 具体步骤如下: 1.查看是否已经分配 ...

  9. 阿里云ECS(linux)磁盘满触发的mysql的表异常修复案例

    阿里云ECS(linux)磁盘满触发的mysql的表异常修复案例 阿里云技术支持:完颜镇江 问题现象: 磁盘空间满了,第一想到的就是删除无用的服务日志或者升级数据盘. 通常是使用du –sh去分析目录 ...

随机推荐

  1. 架构-虚拟路由器冗余协议【原理篇】VRRP详解

    转自:http://zhaoyuqiang.blog.51cto.com/6328846/1166840/ 为什么要使用VRRP技术 我们知道,为了实现不同子网之间的设备通信,需要配置路由.目前常用的 ...

  2. [转载]RHEL-6启动时提示:“/usr/libexec/gconf-sanit

    原文地址:RHEL-6启动时提示:"/usr/libexec/gconf-sanity-check-2 exited with status 256"作者:huage 系统环境:R ...

  3. openssl req 证书请求及自签名证书

    介绍 openssl req 用于生成证书请求,以让第三方权威机构CA来签发,生成我们需要的证书.req 命令也可以调用x509命令,以进行格式转换及显示证书文件中的text,modulus等信息.如 ...

  4. dataset string dataset

    DataSet ds = new DataSet(); ds.ReadXml(dataFile); Console.WriteLine(data.Length); string dataxml = d ...

  5. 开源的PaaS平台

    原文地址:https://blog.csdn.net/mypods/article/details/9366465 1.Stackato Stackato 是一个应用平台,用来创建私有.安全和灵活的企 ...

  6. Android 6.0+ RecyclerView嵌套在ScrollView中显示不全

    ScrollView嵌套RecyclerView在Android6.0以下能正常显示,但是在6.0以上就会出现RecyclerView显示不全的bug.尝试多种方法之后终于找到解决办法,特在此记录下. ...

  7. 【转】Lisp 已死,Lisp 万岁!

    Lisp 已死,Lisp 万岁! 有一句古话,叫做“国王已死,国王万岁!”它的意思是,老国王已经死去,国王的儿子现在继位.这句话的幽默,就在于这两个“国王”其实指的不是同一个人,而你咋一看还以为它自相 ...

  8. java对象内存占用

    一.前言想知道java对象在内存中的占用情况吗?感谢这位大神的无私分享. http://yueyemaitian.iteye.com/blog/2033046 二.原文的扩充1. 增加了代理jar包的 ...

  9. Android_ViewPager_实现多个图片水平滚动

    1.示意图                       2.实现分析 (1).xml配置 <!-- 配置container和pager的clipChildren=false, 并且指定margi ...

  10. python dict 和 json 互转

    在Python语言中,json数据与dict字典以及对象之间的转化,是必不可少的操作. 在Python中自带json库.通过import json导入. import json 在json模块有2个方 ...