20220804 02. 主机规划与磁盘分区

2.1 Linux与硬件的搭配

虽然个人计算机各元件的主要接口是大同小异的,包括前面第零章计算机概论讲到的种种接 口等, 但是由于新的技术来得太快,Linux核心针对新硬件所纳入的驱动程序模块比不上硬件 更新的速度, 加上硬件厂商针对Linux所推出的驱动程序较慢,因此你在选购新的个人计算机 (或服务器)时, 应该要选择已经过安装Linux测试的硬件比较好。

在安装Linux之前,你最好了解一下你的Linux预计是想达成什么任务,这样在选购硬件 时才会知道那个元件是最重要的。 举例来说,桌面电脑(Desktop)的使用者,应该会用到X Window系统, 此时,显卡的优劣与内存的大小可就占有很重大的影响。如果是想要做成文件 服务器, 那么硬盘或者是其他的储存设备,应该就是您最想要增购的元件啰

Linux对于计算机各元件/设备的分辨, 与大家惯用的 Windows系统完全不一样!因为,各个元件或设备在Linux下面都是“一个文件!”

因此,你在认识各项设备之 后,学习Linux的设备文件名之前, 务必要先将Windows对于设备名称的概念先拿掉

2.1.1 认识计算机的硬件配备

个人计算机各组件的相关性

如何挑选计算机硬件呢?

  • 游戏机/工作机的考虑

  • “性能/价格”比与“性能/消耗的瓦数”比的考虑

  • 支持度的考虑

2.1.3 各硬件设备在Linux中的文件名

在Linux系统中,每个设备都被当成一个文件来对待

在Linux这个系统当中,几乎所有的硬件设备文件都在/dev这个目录 内

常见的设备与其在Linux当中的文件名:

设备 设备在Linux内的文件名
SCSI/SATA/USB硬盘机 /dev/sd[a-p]
USB闪存盘 /dev/sd[a-p](与SATA相同)
VirtI/O界面 /dev/vd[a-p](用于虚拟机内)
软盘机 /dev/fd[0-7]
打印机 /dev/lp[0-2](25针打印机)
/dev/usb/lp[0-15](USB 接口)
鼠标 /dev/input/mouse[0-15](通用)
/dev/psaux (PS/2界面)
/dev/mouse (当前鼠标)
CDROM/DVDROM /dev/scd[0-1](通用)
/dev/sr[0-1](通用,CentOS 较常见)
/dev/cdrom (当前 CDROM)
磁带机 /dev/ht0 (IDE 界面)
/dev/st0 (SATA/SCSI界面)
/dev/tape (当前磁带)
IDE硬盘机 /dev/hd[a-d](旧式系统才有)

由于 IDE 界面的磁盘机几乎已经被淘汰,现在连 IDE 界面的磁盘 文件名也都被仿真成 /dev/sd[a-p] 了

如果你的机器使用的是跟网际网络供应商 (ISP) 申请使用的云端机器,这时可能会得到的是虚拟机。为了加速,虚拟机内的磁盘是使 用仿真器产生, 该仿真器产生的磁盘文件名为 /dev/vd[a-p] 系列的文件名

2.2 磁盘分区

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

个人计算机常见的磁盘接口有两种, 分别是SATA与SAS 接口,目前(2015)的主流是SATA接口

磁盘的组成主要有盘片、机械手臂、磁头与主轴马达所组成, 而数据 的写入其实是在盘片上面。盘片上面又可细分出扇区(Sector)与磁道(Track)两种单位, 其中扇区的物理量设计有两种大小,分别是 512Bytes 与 4KBytes。

磁碟盘组成示意图

其实整颗磁盘的第一个扇区特别的重要,因为他记录了整 颗磁盘的重要信息! 早期磁盘第一个扇区里面含有的重要信息我们称为MBR (Master Boot Record) 格式

但是由于近年来磁盘的容量不断扩大,造成读写上的一些困扰, 甚至有些大 于 2TB 以上的磁盘分区已经让某些操作系统无法存取。因此后来又多了一个新的磁盘分区格式,称为 GPT (GUID partition table)

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

通常磁盘可能有多个盘片,所有盘片的同一 个磁道我们称为柱面 (Cylinder), 通常那是文件系统的最小单位,也就是分区的最小单位

GPT 这个可达到 64bit 纪录功能的分区表, 现在我们甚 至可以使用扇区 (sector) 号码来作为分区单位

分区表其实目前有两种格式

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

早期的 Linux 系统为了相容于 Windows 的磁盘,因此使用的是支持 Windows 的 MBR(Master Boot Record, 主要开机纪录区) 的方式来处理开机管理程序与分区表

第一个扇区 512Bytes 会有这两个数据:

  • 主要开机记录区(Master Boot Record, MBR):可以安装开机管理程序的地方,有446 Bytes

  • 分区表(partition table):记录整颗硬盘分区的状态,有64 Bytes

由于分区表就只有64 Bytes而已,最多只能容纳四笔分区的记录, 这四个分区的记录被称为 主要(Primary)或延伸(Extended)分区

  • 其实所谓的“分区”只是针对那个64 Bytes的分区表进行设置而已!

  • 硬盘默认的分区表仅能写入四组分区信息

  • 这四组分区信息我们称为主要(Primary)或延伸(Extended)分区

  • 分区的最小单位“通常”为柱面(cylinder)

  • 当系统要写入磁盘时,一定会参考磁盘分区表,才能针对某个分区进行数据的处理

前面四个号码(/dev/sda[1-4])都是保留给 Primary或Extended用的嘛! 所以逻辑分区的设备名称号码就由5号开始了

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

  • 主要分区与延伸分区最多可以有四笔(硬盘的限制)

  • 延伸分区最多只能有一个(操作系统的限制)

  • 逻辑分区是由延伸分区持续切割出来的分区;

  • 能够被格式化后,作为数据存取的分区为主要分区与逻辑分区。延伸分区无法格式化;

  • 逻辑分区的数量依操作系统而不同,在Linux系统中SATA硬盘已经可以突破63个以上的分区限制;

过去 MBR 分区表的限制中经常可以发现如下的问题:

  • 操作系统无法抓取到 2.2T 以上的磁盘容量!

  • MBR 仅有一个区块,若被破坏后,经常无法或很难救援。

  • MBR 内的存放开机管理程序的区块仅 446Bytes,无法容纳较多的程序码。

GUID partition table, GPT 磁盘分区表

因为过去一个扇区大小就是 512Bytes 而已,不过目前已经有 4K 的扇区设计出现!为了相容 于所有的磁盘,因此在扇区的定义上面, 大多会使用所谓的逻辑区块位址(Logical Block Address, LBA)来处理。GPT 将磁盘所有区块以此 LBA(默认为 512Bytes 喔!) 来规划, 而第一个 LBA 称为 LBA0 (从 0 开始编号)。

与 MBR 仅使用第一个 512Bytes 区块来纪录不同, GPT 使用了 34 个 LBA 区块来纪录分区 信息!同时与过去 MBR 仅有一的区块,被干掉就死光光的情况不同, GPT 除了前面 34 个 LBA 之外,整个磁盘的最后 33 个 LBA 也拿来作为另一个备份!

  • LBA0 (MBR 相容区块)

  • LBA1 (GPT 表头纪录)

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

现在 GPT 分区默认可以提供多达 128 笔纪录

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

2.2.3 开机流程中的 BIOS 与 UEFI 开机检测程序

目前的主机系统在载入硬件驱动方面的程序,主要有早期的 BIOS 与新的 UEFI 两种 机制

BIOS 搭配 MBR/GPT 的开机流程

CMOS是记录各项硬件参 数且嵌入在主板上面的储存器,BIOS则是一个写入到主板上的一个固件(再次说明, 固件就 是写入到硬件上的一个软件程序)

个BIOS就是在开机的时候,计算机系统会主动执行的 第一个程序了

简单的说,整个开机流程到操作系统之前的动作应该是这样的:

  1. BIOS:开机主动执行的固件,会认识第一个可开机的设备;

  2. MBR:第一个可开机设备的第一个扇区内的主要开机记录区块,内含开机管理程序;

  3. 开机管理程序(boot loader):一支可读取核心文件来执行的软件;

  4. 核心文件:开始操作系统的功能...

boot loader的主要任务有下面这些项目:

  • 提供菜单:使用者可以选择不同的开机项目,这也是多重开机的重要功能!

  • 载入核心文件:直接指向可开机的程序区段来开始操作系统;

  • 转交其他loader:将开机管理功能转交给其他loader负责。

多重开机

  • 每个分区都拥有自己的开机扇区(boot sector)

  • 图中的系统盘为第一及第二分区

  • 实际可开机的核心文件是放置到各分区内的!

  • loader只会认识自己的系统盘内的可开机核心文件,以及其他loader而已;

  • loader可直接指向或者是间接将管理权转交给另一个管理程序。

UEFI BIOS 搭配 GPT 开机的流程

UEFI (Unified Extensible Firmware Interface) 统一可延伸固件界 面

UEFI 主要是想要取代 BIOS 这个固件界面

比较项目 传统 BIOS UEFI
使用程序语言 组合语言 C 语言
硬件资源控制 使用中断 (IRQ) 管理 不可变的内存存取不可变得输入/输出存取 使用驱动程序 与协定
处理器运行环境 16 位 CPU 保护模式
扩充方式 通过 IRQ 链接 直接载入驱动程序
第三方厂商支持 较差 较佳且可支持多平台
图形化能力 较差 较佳
内置简化操作系 统前环境 不支持 支持

与传统的 BIOS 不同,UEFI 简直就像是一个低阶的操作系统

2.2.4 Linux安装模式下,磁盘分区的选择(极重要)

目录树结构 (directory tree)

Linux内的所有数据都是以文件的形态来呈现的

整个Linux系统最重 要的地方就是在于目录树架构

圖2.2.9、目錄樹相關性示意圖

根目录的表示方法为一条斜线 /

整个Linux系统使用的是目录树架构,但是我们的文件数据其实是放置在磁盘分 区当中的, 现在的问题是“如何结合目录树的架构与磁盘内的数据”呢? 这个时候就牵扯到“挂 载(mount)”的问题啦

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

所谓的“挂载”就是利用一个目录当成进入点,将磁盘分区的数据放置在该目录下; 也就是 说,进入该目录就可以读取该分区的意思。这个动作我们称为“挂载”,那个进入点的目录我们 称为“挂载点”。

由于整个Linux系统最重要的是根目录,因此根目录一定需要挂载到某个分区 的。 至于其他的目录则可依使用者自己的需求来给予挂载到不同的分区。我

圖2.2.10、目錄樹與分割槽之間的相關性

上图中假设我的硬盘分为两个分区,partition 1是挂载到根目录,至于partition 2则是挂载 到/home这个目录

判断某个文件在那个partition下面:我想 要知道/home/vbird/test这个文件在哪个partition时,由test --> vbird --> home --> /,看那 个“进入点”先被查到那就是使用的进入点了。 所以test使用的是/home这个进入点而不是/

distributions安装时,挂载点与磁盘分区的规划

  • 自订安装“Custom”:

    • A:初次接触Linux:只要分区“ / ”及“swap”即可

    • B:建议分区的方法:预留一个备用的剩余磁盘容量

  • 选择Linux安装程序提供的默认硬盘分区方式

2.3 安装Linux前的规划

2.3.1 选择适当的distribution

事实上每个Linux distributions使用 的都是来自于http://www.kernel.org官方网站所提供的Linux核心,各家distribution使用的软件 其实也都是大同小异, 最大的差别或许就是在于软件的安装模式而已

CentOS官方网站:http://mirror.centos.org/centos/7/isos/

怎么我想要下载的文件名会是 CentOS-7-x86_64-Everything-1503- 01.iso 这样的格式?

其实从 CentOS 7 之后,版本命名的依据就跟 发表的日期有关了!那个 CentOS-7 讲的是 7.x 版本,x86_64 指的是 64 位操作系统, Everything 指的是包山包海的版本,1503 指的是 2015 年的 3 月发表的版本, 01.iso 则得要 与 CentOS7 搭配,所以是 CentOS 7.1 版的意思

.iso,这就是所谓的image文件(镜像文件)

2.3.2 主机的服务规划与硬件的关系

  • NAT(达成IP分享器的功能)

  • SAMBA(加入Windows网络上的芳邻)

  • Mail(邮件服务器)

  • Web(WWW服务器)

  • DHCP(提供用户端自动取得IP的功能)

  • FTP

2.3.3 主机硬盘的主要规划

基本硬盘分区的模式

  • 最简单的分区方法:仅分区出根目录与内存交换空 间( / & swap )即可

  • 稍微麻烦一点的方式: 较麻烦一点的分区方式就是先分析这部主机的未来用途,然后根 据用途去分析需要较大容量的目录, 以及读写较为频繁的目录,将这些重要的目录分别 独立出来而不与根目录放在一起

2.3.4 鸟哥的两个实际案例

  • 案例一:家用的小型Linux服务器,IP分享与文件分享中心

  • 案例二:提供Linux的PC丛集(Cluster)计算机群

posted @ 2022-11-08 17:57  流星<。)#)))≦  阅读(55)  评论(0编辑  收藏  举报