Linux学习记录——第一章 主机规划与磁盘分区

 

目录

 

概述

主机相关硬件配备的基本要求

硬件对应的Linux文件名

磁盘分区

硬盘连接方式与文件名

磁盘组成

MSDOS(MBR)  与 GPT  磁盘分区表(partition table)

MSDOS (MBR)  分区 表格式与限制

GUID partition table, GPT  磁盘分区表

开机流程

BIOS  搭配 MBR/GPT  的开机流程

UEFI BIOS  搭配 GPT  开机的流程

Linux的目录树

目录树结构

文件系统与目录树的关系( 挂载)

主机硬盘的主要规划


概述

Linux与硬件的联系是非常紧密的,根据用途的不同需要不同的硬件来配置你的Linux,并且可以从底层让你对Linux有初步的了解。所以在学习Linux之前需要学习一些与硬件相关的知识。

主机相关硬件配备的基本要求

  1. 一般小型主机且不含 X Window 系统:
    o  用途:家庭用 NAT 主机(IP 分享器功能)或小型企业之非图形接口小型主机。
    o  CPU:五年内出产的产品即可。
    o  RAM:至少 512MB,不过还是大于 1GB 以上比较妥当!
    o  网络卡:一般的以太网络卡即可应付。
    o  显示适配器:只要能够被Linux捉到的显示适配器即可,例如NVidia或ATI的主流显示适配器均可。
    o  硬盘:20GB 以上即可!
  2. 桌上型(Desktop)Linux 系统/含 X Window:
    o  用途:Linux 的练习机或办公室(Office)工作机。(一般我们会用到的环境)
    o  CPU:最好等级高一点,例如 Intel I5, I7 以上等级。
    o  RAM:一定要大于 1GB 比较好!否则容易有图形接口停顿的现象。
    o  网络卡:普通的以太网络卡就好了!
    o  显示适配器:使用 256MB 以上内存的显示适配器!(入门级的都这个容量以上了)
    o  硬盘:越大越好,最好有 60GB。
  3. 中型以上 Linux 服务器:
    o  用途:中小型企业/学校单位的 FTP/mail/WWW 等网络服务主机。
    o  CPU:最好等级高一点,例如 I5, I7 以上的多核心系统。
    o  RAM:最好能够大于 1GB 以上,大于 4GB 更好!
    o  网络卡:知名的 broadcom 或 Intel 等厂牌,比较稳定效能较佳!
    o  显示适配器:如果有使用到图形功能,则一张 64MB 内存的显示适配器是需要的!
    o  硬盘:越大越好,如果可能的话,使用磁盘阵列,或者网络硬盘等等的系统架构, 能够具有更稳
    定安全的传输环境,更佳!
    o  建议企业用计算机不要自行组装,可购买商用服务器较佳, 因为商用服务器已经通过制造商的散热、
    稳定度等测试,对于企业来说,会是一个比较好的选择。

硬件对应的Linux文件名

在linux中所有的硬件都是被当做文件来看待的。

Linux学习记录——第一章 主机规划与磁盘分区

Linux学习记录——第一章 主机规划与磁盘分区

 

磁盘分区

硬盘连接方式与文件名

上图已经提到磁盘装置文件名为/dev/sd[a-p]的格式,如果是虚拟机则可能为/dev/vd[a-p]的格式。其中[a-p]则根据 Linux 核心侦测到磁盘的顺序进行分配

磁盘组成

Linux学习记录——第一章 主机规划与磁盘分区

其中扇区的物理量设计有两种大小,分别是 512bytes4Kbytes

整颗磁盘的第一个扇区非常重要,他记录了整颗磁盘的重要信息,称为 MBR (Master Boot Record) 格式。但随着磁盘容量的提升,读写出现困难,又出现了另一种格式称为 GPT (GUID partitiontable)

MSDOS(MBR)  与 GPT  磁盘分区表(partition table)

在上图中,所有磁盘盘的同一个磁道我们称为磁柱 (Cylinder), 通常那是文件系统的最小单位,也就是分区槽的最小单位。但是近来GPT可达到 64bit 纪录功能的分区表, 现在我们甚至可以使用扇区 (sector)号码来作为分区单位。所以说,我们就是利用参考对照磁柱或扇区号码的方式来处理。

MSDOS (MBR)  分区 表格式与限制

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

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

由于分区表所在区块仅有 64 bytes 容量,因此最多仅能有四组记录区,每组记录区记录了该区段的启始与结束的磁柱号码(其实分区表就相当于一个映射表,将整个磁盘分区,磁盘本身是不会分区的)。分区槽的名字大概会像下面这样:

Linux学习记录——第一章 主机规划与磁盘分区

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

当然想要多余四个的分区也是可以的,像下面这样利用额外的扇区来记录分区信息:

Linux学习记录——第一章 主机规划与磁盘分区

其实就是直接映射范围不够,采用间接映射来扩大范围。

  • 像第一磁区这样的叫做主要(Primary)分区槽,延伸分区的叫做延伸(Extended)分区槽,被延伸分割出来的的分区叫做逻辑分区槽(logical partition)。
  • 延伸分区最多只能有一个(操作系统的限制)。
  • 能够被格式化后,作为数据存取的分区槽为主要分区与逻辑分区。延伸分区无法格式化。
  • 操作系统无法抓取到 2.2T 以上的磁盘容量!

对应文件名如下:

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

注意1-4是给主要或延伸分区槽用的,逻辑分区槽只能从5开始。

GUID partition table, GPT  磁盘分区表

4K 的扇区设计,使用所谓的逻辑区块地址(Logical Block Address, LBA)来处理。GPT 将磁盘所有区块以此 LBA(为了兼容,预设为 512bytes ) 来规划,而第一个 LBA 称为 LBA0 (从0 开始编号)。

GPT 使用了 34 个 LBA 区块来纪录分区信息,除了前面 34 个 LBA 之外,整个磁盘的最后 33 个 LBA 也拿来作为另一个备份。

  • LBA0 (MBR 相容区块)

与 MBR 模式相似的,这个兼容区块也分为两个部份,一个就是跟之前 446 bytes 相似的区块,储存了第一阶段的开机管理程序! 而在原本的分区表的纪录区内,这个兼容模式仅放入一个特殊标志的分区,用来表示此磁盘为 GPT 格式之意。而不懂 GPT 分区表的磁盘管理程序, 就不会认识这颗磁盘,除非用户有特别要求要处理这颗磁盘,否则该管理软件不能修改此分区信息,进一步保护了此磁盘。

  • LBA1 (GPT 表头纪录)

这个部份纪录了分区表本身的位置与大小,同时纪录了备份用的 GPT 分区 (就是前面谈到的在最后 34 个 LBA 区块) 放置的位置, 同时放置了分区表的检验机制码 (CRC32),操作系统可以根据这个检验码来判断 GPT 是否正确。若有错误,还可以透过这个纪录区来取得备份的 GPT(磁盘最后的那个备份区块) 来恢复 GPT 的正常运作。

  • LBA2-33 (实际纪录分区信息处)

从 LBA2 区块开始,每个 LBA 都可以纪录 4 笔分区纪录,所以在默认的情况下,总共可以有 4*32 = 128 笔分区纪录。因为每个 LBA 有 512bytes,因此每笔纪录用到 128bytes 的空间,除了每笔纪录所需要的标识符与相关的纪录之外,GPT 在每笔纪录中分别提供了 64bits 来记载开始/结束的扇区号码,因此,GPT 分区表对于单一分区槽来说, 他的最大容量限制就会在『 2 64 * 512bytes = 2 63 * 1Kbytes = 2 33 *TB = 8 ZB 』,要注意 1ZB =2 30 TB 。


此外,GPT 分区已经没有所谓的主、延伸、逻辑分区的概念,既然每笔纪录都可以独立存在, 当然每个都可以视为是主分区。每一个分区都可以拿来格式化使用。

开机流程

BIOS  搭配 MBR/GPT  的开机流程

BIOS 则是一个写入到主板上的一个固件(固件就是写入到硬件上的一个软件程序)。这个 BIOS 就是在开机的时候,计算机系统会主动执行的第一个程序了。

简单流程:

  1. BIOS:开机主动执行的韧体,会认识第一个可开机的装置;
  2. MBR:第一个可开机装置的第一个扇区内的主要启动记录区块,内含开机管理程序;
  3. 开机管理程序(boot loader):一支可读取核心文件来执行的软件;
  4. 核心文件:开始操作系统的功能...

第二点要注意,如果你的分区表为 GPT 格式的话,那么 BIOS 也能够从 LBA0 的 MBR 兼容区块读取第一阶段的开机管理程序代码, 如果你的开机管理程序能够认识 GPT 的话,那么使用 BIOS同样可以读取到正确的操作系统核心。

由于 LBA0 仅提供第一阶段的开机管理程序代码,因此如果你使用类似 grub 的开机管理程序的话,那么就得要额外分区出一个『 BIOS boot 』的分区槽, 这个分区槽才能够放置其他开机过程所需的程序代码!在 CentOS 当中,这个分区槽通常占用 2MB 左右而已。

BIOS 与 MBR 都是硬件本身会支持的功能,至于 Boot loader 则是操作系统安装在 MBR 上面的一套软件,主要任务为:

  • 提供选单:用户可以选择不同的开机项目,这也是多重引导的重要功能。
  • 载入核心文件:直接指向可开机的程序区段来开始操作系统。
  • 他转交其他loader:将开机管理功能转交给其他loader负责(开机管理程序除了可以安装在 MBR 之外, 还可以安装在每个分区槽的启动扇区(boot sector))。

 Linux学习记录——第一章 主机规划与磁盘分区

 注意:如果要安装多重引导, 最好先安装 Windows 再安装 Linux。

Linux 在安装的时候,你可以选择将开机管理程序安装在 MBR 或各别分区槽的启动扇区, 而且 Linux 的loader 可以手动设定选单(就是上图的 M1, M2...),所以你可以在 Linux 的 boot loader 里面加入 Windows 开机的选项。
Windows 在安装的时候,他的安装程序会主动的覆盖掉 MBR 以及自己所在分区槽的启动扇区,你没有选择的机会, 而且他没有让我们自己选择选单的功能。

UEFI BIOS  搭配 GPT  开机的流程

UEFI 主要是想要取代 BIOS 这个固件界面,因此我们也称 UEFI 为 UEFI BIOS。使用 C 程序语言,比起使用汇编语言的传统 BIOS 要更容易开发。

Linux学习记录——第一章 主机规划与磁盘分区

Linux的目录树

目录树结构

前面讲过Linux的所有数据都是以文件形态来呈现的,所以,整个 Linux 系统最重要的地方就是在于目录树架构

Linux学习记录——第一章 主机规划与磁盘分区

文件系统与目录树的关系( 挂载)

所谓的挂载就是利用一个目录当成进入点,将磁盘分区槽的数据放置在该目录下; 也就是说,进入该目录就可以读取该分区槽的意思。

主机硬盘的主要规划

目前还是新手所以仅分区出根目录与内存置换空间( / & swap )即可。 然后再预留一些剩余的磁盘以供后续的练习之用。

这部分等以后熟练了再来写。