zoukankan      html  css  js  c++  java
  • 磁盘分区(一)

        整理自《鸟哥的Linux私房菜》,整理者:华科小涛http://www.cnblogs.com/hust-ghtao/微笑

        我们都知道一块磁盘是可以被分成多个分区(partition)的,以Windows观点来看,你可能会有一块磁盘并且将它分区成C,D,E盘。那个C,D,E就是分区。但是Linux的设备都是以文件形式存在,那么分区的文件名又是什么?如何进行磁盘分区,磁盘分区有哪些限制?

    1. 磁盘的连接方式与设备文件名的关系

        个人计算机常见的磁盘接口有两种,分别是IDE接口和SATA接口,目前主流的已经是SATA接口了。我们称可连接到IDE接口的设备成为IDE设备,不管是磁盘还是光盘。

        以IDE接口来说,主机会提供两个IDE接口,每个接口连接两个设备,所以最多可以连接到4个设备。每个接口的IDE设备又有Master和Slave之分。4个设备的文件名如表所示。

                                image

        再以SATA接口来说,由于SATA/USB/SCSIA等磁盘接口都是使用SCSI模块来驱动的,因此这些接口的磁盘设备文件名都是使用SCSI模块来驱动的,因此这些接口的磁盘设备文件名都是/dev/sd[a-p]的格式。但是与IDE接口不同的是,SATA/USB接口的磁盘设备文件名根本就没有一定的顺序,顺序是由Linux内核检测到磁盘的顺序决定的。

    2. 磁盘的组成

                                    

                                                image

            磁盘的组成主要有:

    • #圆形的盘片(主要记录数据的部分);
    • #机械手臂与机械手臂上的磁头(可读写盘片上的数据);
    • #主轴马达,可以转动盘片,让机械手臂的磁头在盘片上读写数据。

           而盘片的组成:

    • $扇区为最小的物理存储单位,每个扇区512B;
    • $将扇区组成一个园,那就是柱面,柱面是分区的最小单位;
    • $第一个扇区最重要,有硬盘主引导记录MBR和分区表,其中MBR446B,分区表64B。

           各种接口的磁盘在Linux中的文件名分别是:

    • /dev/sd[a-p][1-15]:表示SCSI,SATA,USB,Flash等接口的磁盘文件名。
    • /dev/hd[a-d][1-63]:为IDE接口的磁盘文件名。

    3.磁盘分区表

        那磁盘是怎么分区的呢,总不能拿锯子来割吧!柱面是文件系统的最小单位,也是分区的最小单位,我们就利用参考柱面号码的方式来进行分区。其实分区的本质就是:在分区表设置每个区的起始柱面和结束柱面号码。     

        在分区表所在的64B容量中,总共分为4组记录区,每个记录区记录了对应分区的起始柱面和结束柱面的号码。若将硬盘以长条形式来看,然后将柱面以柱形图来看,那么64B的记录区段如图所示:

                                                     image                              

        假设上面的硬盘设备文件名为/dev/hda时,那么这4个分区在Linux系统中的设备文件名如下所示,文件名后面会再接一个数字,这个数字与分区的位置有关。

    • P1:/dev/hda1
    • P2:/dev/hda2
    • P3:/dev/hda3
    • p4:/dev/hda4

    由于分区表只有64B,最多只能容纳4个分区,这4个分区被称为主分区或扩展分区。

        总结一下:

    1. 其实所谓的分区,只是针对那64B的分区表进行设置而已。
    2. 硬盘的默认分区表仅能写入4组分区信息。
    3. 这4组分区信息我们称为主或扩展分区。
    4. 分区的最小单位是柱面。
    5. 当系统要写入磁盘时,一定要参考磁盘分区表,才能针对某个分区进行数据的处理。

        上面我们介绍了分区的基本知识,让我们回头想下,为什么要分区?

    1. 数据的安全性。不同分区使不同类型的数据隔离,既保证数据安全也便于管理。
    2. 系统的性能。由于分区将数据集中在某个柱面的区段,由于数据集中了将有助于数据读取的速度与性能。
          捕获
  • 相关阅读:
    乐观锁和悲观锁
    c++ inline使函数实现可以在头文件中,避免多重定义错误
    无锁队列的实现
    同步异步阻塞非阻塞
    log(m+n)找第k大
    ios开发常见的 工具 - 值得收藏
    iOS 性能优化得 方法
    搭建 安卓开发环境 !
    项目支持 64 - bit
    AFN学习笔记
  • 原文地址:https://www.cnblogs.com/hust-ghtao/p/4003932.html
Copyright © 2011-2022 走看看