硬盘的物理组成:由许许多多的圆形硬盘盘所组成。宜居硬盘盘能够容纳的数据量,而有所谓的单碟或者多碟。

  首先,硬盘里一定会有所谓的磁头(Head)在进行该硬盘上面的读写动作,而磁头是固定在机械手臂上的,机械手臂上有多个磁头可以进行读取的动作。而当磁头固定不动,硬盘转一圈所画出来的圆就是所谓的磁道(Track)。而一个硬盘中可能具有多个硬盘盘,所有硬盘盘上面相同半径的那一个磁道就组成了所谓的磁柱(Cylinder)

  

  1、基本概念

  在计算整个硬盘的存储量时,简单的计算公式就是:Cylinder X Head X Sector X 512 Bytes。另外,硬盘在读取时,主要是 硬盘盘会转动,利用机械手臂将磁头移动到正确的数据位置。然后将数据依序读出。由于机械手臂上的磁头与硬盘盘的接触是很细微的空间,如果有抖动或者是脏污在磁头与硬盘盘之间时,就会造成数据的损毁或者是实体硬盘整个损毁。

  硬盘的分隔(Partition),为什么要进行磁盘分隔?因为我们必须告诉操作系统,可以存储的区域是由A磁柱到BB磁柱,如此一来,操作系统才能够控制磁盘磁头去A-B范围内的磁柱存取数据。也就是记录每一个分割区(Partition)的起始与结束磁柱。

  主要开机扇区(Master Boot Recorder,MBR),MBR就是在一块硬盘的第零轨上,也就是计算机开机之后要去利用该磁盘时,必须要读取第一个区域。在这个区域内记录的就是磁盘里的所有分割信息,以及开机的时候可以进行开机管理程序的写入的处所。

  2、partition与block

  每一个 partition就是一个FileSystem,不论是哪一种filesystem,既然硬盘是用来存储数据的,硬盘的最小存储单位是sector,但是用sector来存储就太没有效率了,一个sector只有512Bytes,而磁头是一个一个sector的读取,也就是说,如果我的档案有10MBytes,那么为了读这个档案,磁头必须要进行(I/O)20480次。难么为了克服这个效率上的问题,逻辑区块 block就诞生了。逻辑区块是在partition进行filesystem的格式化时,所指定的最小存储单位。block的大小为sector的2的次方倍数。如果格式化的时候,指定block为4KBytes,即8个sector所构成一个block,那么同样一个10MBytes的档案,磁头要读取的次数则大幅下降为2560次,这样可以大大的增加档案的读取效能。但是不一定越大越好,因为加入有一个0.1Kbytes的容量的文档,则会占用整个4Kbytes的block。会造成磁盘空间的浪费。

  3、inode

  当我们要将一个partition格式化(format)为ext2时,就必须要指定inode与Block的大小才行。也就是说,当partition被格式化为ext2的文档系统时,他一定会有inode table与block area这两个区域。Block是记录档案内容数据的区域,inode则是记录该档案的属性,以及档案内容放置在哪一个Block之内的信息。inode除了记录档案属性以外,同时还具有指向功能,指向档案内容防止的区域,好让操作系统可以正确的取得档案的内容。

  

  一块partition自ext2底下会被格式化为inode table与block area两个区域,那么读取/etc/crontab的流程为:

  (1)操作系统根据根目录(/)的相关资料可取得/etc这个目录所在的inode,并前往读取/etc这个目录的所有相关路径。

  (2)根据/etc的inode的资料,可以取得/etc这个目录底下所有档案的关联数据是放在哪一个Block当中,并前往该block读取档案的关联性内容。

  (3)由上个步骤的inode当中,可以取得 crontab这个档案的所有属性,并且可前往由 inode所指向的Block区域,顺利的取得crontab的档案内容。

  

  4、Linux 档案系统的运作:

  整个ext2/ext3的数据存取是透过journal与metadata还有数据存放区在记录的。在整部计算机的运作中,数据处理最快速的地方是CPU,接下来则是主存储器(RAM),至于硬盘,会慢很多。为了让Linux加快整个系统的存取效率,Linux上面通常采取 异步处理 的方式。

  当系统读取一个文档时,则该档案所在的区块数据会被加载到内存中,所以该磁盘区块就会被放置在主存储器的缓冲快取区,若这些区块的数据被改变时,刚开始数据仅有主存储器的区块数据会被改变,而且在缓冲区的区块数据会被标记为 Dirty,这个时候磁盘实体区块尚未被修正。这些 Dirty区块的数据必须回写到磁盘中,以维持磁盘实体1区块上的数据与主存储器中的区块数据的一致性。

  但是,如果Linux不正常关机,则由于数据尚未写入磁盘当中,会导致系统在再次开机时,会花相当多的时间进行校验,同时也可能会造成磁盘的损坏。

参考文献:《鸟哥的Linux私房菜》

  

  

  

Linux知识体系之磁盘与档案系统管理的更多相关文章

  1. Linux学习日记之磁盘与档案系统

    主要定义 磁盘的物理组成磁盘主要由圆形磁盘(多张).机械手臂.磁头等组成.每张磁盘都有不同的磁道,半径相同的磁道组成了磁柱,沿着中心划线可将磁盘分成若干扇区,每个扇区的大小是512Bytes. 磁盘分 ...

  2. 鸟哥的linux私房菜之磁盘与文件系统管理

    superblock:记录了该文件系统的整体信息包括inode/block的总量,使用量,剩余量以及文件系统的格式与相关信息. inode:记录档案的属性,一个档案占用一个inode,同事记录此档案所 ...

  3. Linux知识体系之路径属性与目录

    最近在看鸟哥的Linux私房菜,我觉得这本书还是很不错的.这里进行相关的总结. 1.Linux目录权限概念   Linux一般讲目录可存取的方式分为三个类别,分别是owner/group/other, ...

  4. linux知识体系

    0. Linux简介与厂商版本 1. Linux开机启动 2. Linux文件管理 3. Linux的架构 4. Linux命令行与命令 5. Linux文件管理相关命令 6. Linux文本流 7. ...

  5. 一、Linux知识体系结构图

    参考: https://blog.csdn.net/Swing_Liu/article/details/79202479

  6. (转)Linxu磁盘体系知识介绍及磁盘介绍

    Linxu磁盘体系知识介绍及磁盘介绍 系统管理 / 2017-01-14 / 0 条评论 / 浴春风 Linu磁盘设备基础知识指南磁盘速度快具备的条件: 1)主轴的转速5400/7200/10000/ ...

  7. linux 运维知识体系

    这里将会介绍一下,LINUX运维工程师的知识体系. 只能说是个人理解吧.并不是必要或者充分的,仅供网友参考. 大部分本博客都有涉及,并不完整. 1.LINUX运维基础 1.1.LINUX系统的简介,分 ...

  8. Linux之磁盘与文件系统管理

    磁盘及文件系统管理详解 [参考文献:马哥视频] 原文:http://blog.csdn.net/u013008795/article/details/51150075 目前市场上主流的磁盘是机械式硬盘 ...

  9. linux(3)磁盘与文件系统管理/查看硬盘、内存空间/文件系统的操作/ 文件的压缩和打包

    一.磁盘与文件系统管理 1.分区与文件系统分区:记录每一个分区的开始柱面和结束柱面主引导区(master boot recorder):记录分区的数据,记录硬盘里所有的分区信息分区划分好后,要将分区格 ...

随机推荐

  1. 一致性哈希java实现

    值得注意的点 哈希函数的选择 murmur哈希函数 该函数是非加密型哈希,性能高,且发生哈希碰撞的概率据说很低 md5 SHA 可以选择guava包,提供了丰富的哈希函数的API 支持虚拟节点+加权, ...

  2. ecshop商城_

    一.Ecshop简介: ECShop是Comsenz公司推出的一款B2C独立网店系统,适合企业及个人快速构建个性化网上商店.系统是基于PHP语言及MYSQL数据库构架开发的跨平台开源程序. ECSho ...

  3. 邓_phpcms_二次开发_留言板

    ================================================================= •在 phpcms/modules 目录下创建文件夹,并将其命名为g ...

  4. java垃圾回收的分类

    1.线程数 分为串行垃圾回收器和并行垃圾回收器.串行垃圾回收器一次只使用一个线程进行垃圾回收:并行垃圾回收器一次将开启多个线程同时进行垃圾回收.在并行能力较强的 CPU 上,使用并行垃圾回收器可以缩短 ...

  5. 单独编译IMX6Q的VPU示例程序:mxc_vpu_test.out

    mxc_vpu_test.out是飞思卡尔为IMX6Q编写的VPU示例程序,有编解码和简单的网络传输功能. 首先从/opt/freescale/pkgs/中提取出imx-test-3.0.35-4.1 ...

  6. JDK、JRE、JVM详解

    JDK.JRE.JVM JDK包含JRE,而JRE包含JVM JDK(Java Development Kit)是针对Java开发员的产品,是整个Java的核心,包括了Java运行环境JRE.Java ...

  7. 经典CSS坑:如何完美实现垂直水平居中?

    经典CSS坑:如何完美实现垂直水平居中? 踩了各种坑之后总结出的方法,开门见山,直接上代码和效果图.希望对读者有所帮助,后续如果有更好的方法,我也会持续更新 第一种方法:transform(个人认为最 ...

  8. Linux - ubuntu读取/root/.profile时发现错误:mesg:ttyname fa

    启动ubuntu,以root用户登陆,打开命令行终端 输入命令:#vim /root/.profile 找到.profile文件中的mesg n 将其替换成tty -s && mesg ...

  9. Mysql中的force index和ignore index

    前几天统计一个sql,是一个人提交了多少工单,顺便做了相关sql优化.数据大概2000多w. ) c order by c desc; 为了实验最少受其他因素干扰,将生产库的200多w数据导出来,用测 ...

  10. 国内不谈java

    今天晚上在整理电脑,不知道怎么回事,电脑里面放着一篇文章.打开一看写的挺好的,现在就贴出来,望共勉.   国内不谈java--会有千万人跳出来和你争嘴的.越是如此,我越是不忍心不说出来,越是不不忍心看 ...