美文网首页我爱编程
Linux磁盘与文件系统

Linux磁盘与文件系统

作者: 南风nanfeng | 来源:发表于2018-05-28 18:04 被阅读19次

    磁盘连接的方式与硬盘装置文件名的关系

    • 个人计算机常见的磁盘接口有两种, 分别是 IDE 不 SATA 接口。

    目前(2009)主流已经是 SATA 接口了,但是老一点主机其实大部分还是使用 IDE 接口。 我们称呼可连接到 IDE 接口的装置为 IDE 装置,不管是磁盘还是光盘设备。以 IDE 接口来说,由于一个 IDE 扁平电缆可以连接两个 IDE 装置,又通常主机都会提供两个 IDE 接口,因此最多可以接到四个 IDE 装置。 也就是说,如果你已经有一个光盘设备了,那最多还能再接三颗 IDE 接口的磁盘啰。 这两个 IDE 接口通常被称为 IDE1(primary)及 IDE2(secondary), 而每条扁平电缆上面的 IDE 装置可以被区分为 Master 不 Slave。这四个 IDE 装置的文件名为:

    IDE\Jumper Master Slave
    IDE1(Primary) /dev/hda /dev/hdb
    IDE2(Secondary) /dev/hdc /dev/hdd

    再以 SATA 接口来说,由于 SATA/USB/SCSI 等磁盘接口都是使用 SCSI 模块来驱动的, 因此这些接口的磁盘装置文件名都是/dev/sd[a-p]的格式。 但是与 IDE 接口不同的是,SATA/USB 接口的磁盘根本就没有一定的顺序,那如何决定他的装置文件名呢? 这个时候就得要根据 Linux 核心侦测到磁盘的顺序了!这里以底下的例子让你了解啰。

    例题:
    如果你的 PC 上面有两个 SATA 磁盘以及一个 USB 磁盘,而主板上面有六个 SATA 的插槽。这两个 SATA 磁盘分别安插在主板上的 SATA1, SATA5 插槽上, 请问这三个磁盘在Linux 中的装置文件名为何?
    答:由于是使用侦测到的顺序来决定装置文件名,幵非不实际插槽代号有关,因此装置的文件名如下:
    1. SATA1 插槽上的装置文件名:/dev/sda
    2. SATA5 插槽上的装置文件名:/dev/sdb
    3. USB 磁盘(开机完成后才被系统捉到):/dev/sdc
    
    • 磁盘的组成
      磁盘的组成主要有磁盘盘、机械手臂、磁盘读取头与主轴马达所组成, 而数据
      的写入其实是在磁盘盘上面。
      磁盘盘上面又可以区分出扇区(Sector)与磁柱(Cylinder)两种单位, 其中扇区每个为 512bytes 那么大。 假设磁盘叧有一个磁盘盘,那举磁盘盘有点像底下这样:

      磁盘盘组结构图.jpg
      那么是否每个扇区都一样重要呢?其实整颗磁盘的第一个扇区特别重要,因为他记录了整颗磁盘的重要信息! 磁盘的第一个扇区主要记录了两个重要的信息,分别是:
      1. 主要启动记录区(Master Boot Record, MBR):可以安装开机管理程序的地方,有 446 bytes
      2. 磁盘分区表(partition table):记录整颗硬盘分割的状态,有 64 bytes
      MBR 是很重要,因为当系统在开机的时候会主动去读取这个区块的内容,这样系统就会知道你的程序放在哪里该如何进行开机。 如果你要安装多重引导的系统,MBR 这个区块的管理就非常非常的重要了!
      那举分割表又是啥?其实你刚刚拿到的整颗硬盘就像一根原木,你必须要在这根原木上面切割出你想要的区段, 这个区段才能够再制作成为你想要的家具!如果没有进行切割,那举原木就不能被有效的使用。 同样的道理,你必须要针对你的硬盘迚行分割,这样硬盘可以被你使用!
    • 磁盘分区表(partition table)
      硬盘总不能真得拿锯子来切切割割吧?那怎么办?在前一小节的图示中,我们有看到『开始与结束磁柱』吧?那是文件系统的最小单位,也就是分割槽的最小单位啦!我们就是利用参考对照磁柱号码的方式来处理啦! 在分割表所在的 64 bytes 容量中,总共分为四组记录区,每组记录区记录了该区段的启始与结束的磁柱号码。 若将硬盘以长条形来看,然后将磁柱以柱形图来看,那么 64 bytes 的记录区段有点像底下的图示:


      磁盘分区表的作用示意图.png

    假设上面的硬盘装置文件名为/dev/hda 时,那举这四个分割槽在 Linux 系统中的装置文件名如下所示, 重点在文档名后面会再接一个数字,这个数字与该分割槽所在的位置有关喔!
    P1:/dev/hda1
    P2:/dev/hda2
    P3:/dev/hda3
    P4:/dev/hda4
    由于分割表就只有 64 bytes 而已,最多只能容纳四笔分割的记录, 这四个分割的记录被称为主要(Primary)或延伸(Extended)分割槽。 根据上面的图示与说明,我们可以得到几个重点信息:
    1.其实所谓的『分割只是针对那个 64 bytes的分割表设定而已!
    2.硬盘默讣的分割表仅能写入四组分割信息
    3.这四组分割信息我们称为主要(Primary)或延伸(Extended)分割槽
    4.分割槽的最小单位为磁柱(cylinder)
    5.当系统要写入磁盘时,一定会参考磁盘分区表,才能针对某个分割槽进行数据的处理

    为什么要磁盘分区?
    答:第一、 数据的安全性:因为每个分割槽的数据是分开的!所以,当你需要将某个分割槽的数据重整时,例如你要将计算机中 Windows 的 C 槽重新安装一次系统时, 可以将其他重要数据移动到其他分割槽,例如将邮件、桌面数据移动到 D 槽去,那么 C 槽重灌系统并不会影响到 D 槽! 所以善用分割槽,可以让你的数据更安全。
    第二、系统癿效能考虑:由于分割槽将数据集中在某个磁柱的区段,例如上图当中第一个分割槽位于磁柱号码 1~100号,如此一来当有数据要读取该分割槽时, 磁盘叧会搜寻前面 1~100 癿磁柱范围,由于数据集中了,将有助于数据读取的速度与效能!所以说,分割是很重要!
    

    既然分割表只有记录四组数据的空间,那么是否代表我一颗硬盘最多只能分割出四个分割槽?当然不是啦!有经验的朋友都知道, 可以将一颗硬盘分割成十个以上的分割槽!那又是如何达到癿呢?在Windows/Linux 系统中, 我们是透过刚刚谈到的延伸分割(Extended)的方式来处理!延伸分割的想法是: 既然第一个扇区所在的分割表只能记录四笔数据, 那我可否利用额外的扇区来记录更多的分割信息?实际上图示有点像底下这样:


    磁盘分区表的作用示意图 (2).png

    在上图当中,我们知道硬盘的四个分割记录区仅使用到两个,P1 为主要分割,而 P2 则为延伸分割。请注意, 延伸分割的目的是使用额外的扇区记录分割信息,延伸分割本身并不能被拿来格式化。 然后我们可以透过延伸分割所指向的那个区块继续作分割的记录。

    如上图右下方那个区块有继续分割出五个分割槽, 这五个由延伸分割继续切出来的分割槽,就被称为逻辑分割槽(logical partition)。 同时注意一下,由于逻辑分割槽是由延伸分割继续分割出来的,所以他可以使用癿磁柱范围就是延伸分割所设定的范围喔! 也就是图中的 101~400 啦!
    同样的,上述的分割槽在 Linux 系统中的装置文件名分别如下:
    P1:/dev/hda1
    P2:/dev/hda2
    L1:/dev/hda5
    L2:/dev/hda6
    L3:/dev/hda7
    L4:/dev/hda8
    L5:/dev/hda9
    仔细看看,怎举装置文件名没有/dev/hda3 不/dev/hda4 呢?因为前面四个号码都是保留给 Primary或 Extended 用的嘛! 所以逻辑分割槽的装置名称号码由 5 号开始了!这是个很重要癿特性。
    主要分割、延伸分割与逻辑分割的特性我们作个简单的定义:
    1.主要分割不延伸分割最多可以有四笔(硬盘癿限制)
    2.延伸分割最多只能有一个(操作系统癿限制)
    3.逻辑分割是由延伸分割持续切割出来的分割槽;
    4.能够被格式化后,作为数据存取的分割槽为主要分割与逻辑分割。延伸分割无法格式化;
    5.逻辑分割的数量依操作系统而不同,在 Linux 系统中,IDE 硬盘最多有 59 个逡辑分割(5 号到63 号), SATA 硬盘则有 11 个逻辑分割(5 号到 15 号)。

    认识 EXT2 文件系统

    Linux 最传统的磁盘文件系统(filesystem)使用的是 EXT2,而文件系统是建立在硬盘上面的,因此我们得了解硬盘的物理组成。

    • 硬盘组成不分割

    相关文章

      网友评论

        本文标题:Linux磁盘与文件系统

        本文链接:https://www.haomeiwen.com/subject/rolgjftx.html