简述linux系统中的磁盘分区规划过程(linux磁盘分区方案)

1、各硬件设备在Linux中的文件名

由之前的学习我们知道个人计算机常见的磁盘接口有两种, 分别是SATA与SAS接口,目前的主流是SATA接口。

举例来说,SATA接口的硬盘的文件名即为/dev/sd[a-d],其中, 括号内的字母为a-d当中的任意一个,亦即有/dev/sda, /dev/sdb, /dev/sdc, 及 /dev/sdd这四个文件的意思。

  1. 正常的物理机大概使用的都是 /dev/sd[a-] 的磁盘文件名
  2. 至于虚拟机环境底下,为了加速,可能就会使用 /dev/vd[a-p] 这种设备文件名

以下是常用的设备,以及在linux里面的文件名:

简述linux系统中的磁盘分区规划过程(linux磁盘分区方案)

简述linux系统中的磁盘分区规划过程(linux磁盘分区方案)

2、磁盘格式

我们在计算器概论中,有提及过:磁盘的组成主要有磁盘盘、机械手臂、磁盘读取头与主轴马达所组成, 而数据的写入其实是在磁盘盘上面。磁盘盘上面又可细分出扇区(Sector)与磁道(Track)两种单位, 其中扇区的物理量设计有两种大小,分别是 512bytes 与 4Kbytes。假设磁盘只有一个磁盘盘,那么磁盘盘有点像底下这样:

简述linux系统中的磁盘分区规划过程(linux磁盘分区方案)

那么是否每个扇区都一样重要呢?其实整个磁盘的第一个扇区特别的重要,因为他记录了整颗磁盘的重要信息!

早期磁盘第一个扇区里面含有的重要信息我们称为MBR (Master Boot Record) 格式,但是由于近年来磁盘的容量不断扩大,造成读写上的一些困扰, 甚至有些大于 2TB 以上的磁盘分区已经让某些操作系统无法存取。因此后来又多了一个新的磁盘分区格式,称为 GPT (GUID partition table)! 这两种分区格式与限制不太相同啦! 那么分区表又是啥?其实你刚刚拿到的整个硬盘就像一根原木,你必须要在这根原木上面切割出你想要的区段, 这个区段才能够再制作成为你想要的家具!如果没有进行切割,那么原木就不能被有效地使用。 同样的道理,你必须要针对你的硬盘进行分区,这样硬盘才可以被你使用的!

2.1 MBR(MS-DOS) 格式

在前一小节的图示中, 我们有看到【开始与结束磁道】吧?而通常磁盘可能有多个磁盘盘,所有磁盘盘的同一个磁道我们称为磁柱 (Cylinder), 通常那是文件系统的最小单位,也就是分区的最小单位啦

早期的 Linux 系统为了兼容于 Windows 的磁盘,因此使用的是支持 Windows 的 MBR(Master Boot Record, 主引导记录) 的方式来处理启动引导程序与分区表!而启动引导程序记录区与分区表则通通放在磁盘的第一个扇区, 这个扇区通常是 512bytes 的大小 (旧的磁盘扇区都是 512bytes),所以说,第一个扇区 512bytes 会有这两个数据:

  • 主引导记录(Master Boot Record, MBR):可以安装启动引导程序的地方,有446 bytes
  • 分区表(partition table):记录整块硬盘分区的状态,有64 bytes

由于分区表所在区块仅有64 bytes容量,因此最多仅能有四组记录区,每组记录区记录了该区段的起始与结束的磁柱号码

若将硬盘以长条形来看,然后将磁柱以柱形图来看,那么那64 bytes的记录区段有点像底下的图示:

简述linux系统中的磁盘分区规划过程(linux磁盘分区方案)

  • P1:/dev/sda1
  • P2:/dev/sda2
  • P3:/dev/sda3
  • P4:/dev/sda4

上图中我们假设硬盘只有400个磁柱,共分为四个分区,第四个分区所在为第301到400号磁柱的范围。 当你的操作系统为Windows时,那么第一到第四个分区的代号应该就是C, D, E, F。当你有资料要写入F区时, 你的数据会被写入这个磁盘的301~400号磁柱之间的意思。

由于分区表就只有64 bytes而已,最多只能容纳四组分区的记录, 这四个分区的记录被称为主要(Primary)或扩展(Extended)分区。

根据上面的图示与说明,我们可以得到几个重点信息:

  • 其实所谓的【分区】只是针对那个64 bytes的分区表进行设定而已!
  • 硬盘默认的分区表仅能写入四组分区信息
  • 这四组分区信息我们称为主要(Primary)或扩展(Extended)分区
  • 分区的最小单位通常为磁柱(cylinder)
  • 当系统要写入磁盘时,一定会参考磁盘分区表,才能针对某个分区进行数据的处理

为啥要分区?

基本上你可以这样思考分区的角度:

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

既然分区表只有记录四组数据的空间,那么是否代表我一个硬盘最多只能分区出四个分区?当然不是啦!有经验的朋友都知道, 你可以将一个硬盘分区成十个以上的分区的!那又是如何做到的呢?在Windows/Linux系统中, 我们是通过刚刚谈到的扩展分区(Extended)的方式来处理的啦!

扩展分区

扩展分区的意思是: 既然第一个扇区所在的分区表只能记录四组数据, 那我可否利用额外的扇区来记录更多的分区信息?实际上图示有点像底下这样:

简述linux系统中的磁盘分区规划过程(linux磁盘分区方案)

实际上扩展分区并不是只占一个区块,而是会分布在每个分区的最前面几个扇区来记载分区信息的!只是为了方便读者记忆,

逻辑分区

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

如上图右下方那个区块有继续分区出5个分区, 这5个由扩展分区继续切出来的分区,就被称为逻辑分区(logical partition)。 同时注意一下,由于逻辑分区槽是由扩展分区继续分区出来的,所以他可以使用的磁柱范围就是扩展分区所设定的范围喔! 也就是图中的101~400啦!

同样的,上述的分区槽在Linux系统中的装置文件名分别如下:

  • P1:/dev/sda1
  • P2:/dev/sda2
  • L1:/dev/sda5
  • L2:/dev/sda6
  • L3:/dev/sda7
  • L4:/dev/sda8
  • L5:/dev/sda9

仔细看看,怎么设备文件名没有/dev/sda3与/dev/sda4呢?因为前面四个号码都是保留给Primary或Extended用了, 所以逻辑分区的设备名称号码就由5号开始了!这在 MBR 方式的分区表中是个很重要的特性,不能忘记!

MBR 主要分区、扩展分区与逻辑分区的特性我们作个简单的定义:

  • 主要分区与扩展分区最多可以有四个(硬盘的限制) ;
  • 扩展分区最多只能有一个(操作系统的限制) ;
  • 逻辑分区是由扩展分区继续划分出来的分区;
  • 能够被格式化后,作为数据存取的分区为主要分区与逻辑分区。扩展分区无法格式化;
  • 逻辑分区的数量依操作系统而不同,在Linux系统中SATA硬盘已经可以突破63个以上的分区限制;

MBR 内的存放启动引导程序的区块仅 446bytes,无法容纳较多的程序代码。 这个 2.2TB 限制的现象在早期并不会很严重。但是,近年来硬盘厂商动不对推出的磁盘容量就高达好几个 TB 的容量!目前 (2015) 单一磁盘最高容量甚至高达 8TB 了! 如果磁盘阵列的系统,使用 MBR 的话...那得要 2TB/2TB 地割下去,虽然 Linux kernel 现在已经可以透过某些机制让磁盘分区高过 63 个以上,但是这样就得要割出将几十个分区~ 真要命... 为了解决这个问题,所以后来就有 GPT 这个磁盘分区的格式出现了!这个在我们下章介绍!!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发表评论

登录后才能评论