第2章 主机规划与磁盘分区
第二章 主机规划与磁盘分区
2.2 磁盘分区
2.2.1 磁盘连接的方式与设备文件名的关系
正常的实体机器大概使用的都是/dev/sd[a-]
的磁盘文件名,至于虚拟机环境下面,为了加速,可能就会使用/dev/vd[a-p]这种磁盘文件名喔!
2.2.2 MSDOS(MBR)与GPT磁盘分区表(partition table)
分区表其实目前有两种格式喔,我们就依序来谈谈这两种分区表格式吧。
- MSDOS(MBR)分区表格式与限制
早期的Linux系统为了兼容于Windows的磁盘,因此使用的是支持Windows的MBR(Master Boot Record,主要开机记录区)的方式来处理开机管理程序与分区表!而开机管理程序记录区与分区表则通通放在磁盘的第一个扇区,这个扇区通常是512Bytes的大小(旧的磁盘扇区都是512Bytes喔!),所以说,第一个扇区512Bytes会有这两个数据:- 主要开机记录区(Master Boot Record,MBR):可以安装开机管理程序的地方,有446Bytes
- 分区表(partition table):记录整颗硬盘分区的状态,有64Bytes
由于分区表所在区块仅有64Bytes容量,因此最多仅能有四组记录区,每组记录区记录了该区段的起始与结束的柱面号码。
- GUID partition table,GPT磁盘分区表
因为过去一个扇区大小就是512Bytes而已,不过目前已经有4K的扇区设计出现!为了相容于所有的磁盘,因此在扇区的定义上面,大多会使用所谓的逻辑区块位址(Logical Block Address,LBA)来处理。GPT将磁盘所有区块以此LBA(默认为512Bypes喔!)来规划,而第一个LBA称为LBA0(从0开始编号)。
与MBR仅使用第一个512Bytes区块来记录不同,GPT使用了34个LBA区块来纪录分区信息!同时与过去MBR仅有一份记录区块,被干掉就死光光不同,GPT除了前面34个LBA之外,整个磁盘的最后33个LBA也拿来作为另一个备份!这样或许会比较安全些吧!- LBA0(MBR相容区块)
- LBA1(GPT表头记录)
- LBA2-33(实际记录分区信息处)
2.2.3 开机流程中的BIOS与UEFI开机检测程序
基本上,目前的主机系统在载入硬件驱动方面的程序,主要有早期的BIOS与新的UEFI两种机制,我们分别来谈谈啰!
- BIOS搭配MBR/GPT的开机流程
BIOS与CMOS。CMOS是记录各项硬件参数且嵌入在主板上面的储存器,BIOS则是一个写入到主板上的一个固件(再次说明,固件就是写入到硬件上的一个软件程序)。这个BIOS就是在开机的时候,计算机系统会主动执行的第一个程序了!
接下来BIOS会去分析计算机里面有哪些储存设备,我们以硬盘为例,BIOS会依据使用者的设置去取得能够开机的硬盘,并且到该硬盘里面去读取第一个扇区的MBR位置。MBR这个仅有446Bytes的硬盘容量里会放置最基本的开机管理程序,此时BIOS就功成圆满,而接下来就是MBR内的开机管理程序的工作了。
这个开机管理程序的目的是在载入(load)核心文件,由于开机管理程序是操作系统在安装的时候所提供的,所以他会认识硬盘内的文件系统格式,因此就能够读取核心文件,然后接下来就是核心文件的工作,开机管理程序与BIOS也功成圆满,将之后的工作交给大家所知道的操作系统啦!
简单的说,整个开机流程到操作系统之前的动作应该是这样的:- BIOS:开机主动执行的固件,会认识第一个可开机的设备;
- MBR:第一个可开机设备的第一个扇区内的主要开机记录区块,内含开机管理程序;
- 开机管理程序(boot loader):一支可读取核心文件来执行的软件;
- 核心文件:开始操作系统的功能……
第二点要注意,如果你的分区表为GPT格式的话,那么BIOS也能够从LBA0的MBR相容区块读取第一阶段的开机管理程序码,如果你的开机管理程序能够认识GPT的话,那么使用BIOS同样可以读取到正确的操作系统核心喔!换句话说,如果开机管理程序不懂GPT,例如Windows XP的环境,那自然就无法读取核心文件,开机就失败了!
- UEFI BIOS搭配GPT开机的流程
我们现在知道GPT可以提供到64bit的寻址,然后也能够使用较大的区块来处理开机管理程序。但是BIOS其实不懂GPT耶!还得要通过GPT提供相容模式才能够读写这个磁盘设备~而且BIOS仅为16位的程序,在与现阶段新的操作系统接轨方面有点弱掉了!为了解决这个问题,因此就有了UEFI(Unified Extensible Firmware Interface)这个统一可延伸固件界面的产生。
UEFI主要是想要取代BIOS这个固件界面,因此我们也称UEFI为UEFI BIOS就是了。UEFI使用C程序语言,比起使用组合语言的传统BIOS要更容易开发!
2.2.4 Linux安装模式下,磁盘分区的选择(极重要)
- 目录树结构(Directory tree)
我们前面有谈过Linux内的所有数据都是以文件的形态来呈现的,所以啰,整个Linux系统最重要的地方就是在于目录架构。所谓的目录树架构(directory tree)就是以根目录为主,然后向下呈现分支状的目录结构的一种文件架构)。所以整个目录树架构最重要的就是那个根目录(root directory),这个根目录的表示方式为一条斜线“/",所有的文件都与目录树有关。- 自定安装“Custom”:
- A:初次接触Linux:只要分区“/”及“swap”即可
- B:建议分区的方式:预留一个备用的剩余磁盘容量!
- 自定安装“Custom”:
2.3 安装Linux前的规划
2.3.3 主机硬盘的主要规划
比较麻烦一点的分区方式就是先分析这部主机的未来用途,然后根据用途去分析需要较大容量的目录,以及读写较为频繁的目录,将这些重要的目录分别独立出来而不与根目录放在一起,那当这些读写较为频繁的磁盘分区有问题时,至少不会影响到根目录的系统数据,那挽救方面就比较容易啊!在默认的CentOS环境中,下面的目录是比较符合容量大且(或)读写频繁的目录啰:
- /boot
- /
- /home
- /var
- Swap