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就是在开机的时候,计算机系统会主动执行的 第一个程序了
简单的说,整个开机流程到操作系统之前的动作应该是这样的:
-
BIOS:开机主动执行的固件,会认识第一个可开机的设备;
-
MBR:第一个可开机设备的第一个扇区内的主要开机记录区块,内含开机管理程序;
-
开机管理程序(boot loader):一支可读取核心文件来执行的软件;
-
核心文件:开始操作系统的功能...
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系统最重 要的地方就是在于目录树架构
根目录的表示方法为一条斜线 /
整个Linux系统使用的是目录树架构,但是我们的文件数据其实是放置在磁盘分 区当中的, 现在的问题是“如何结合目录树的架构与磁盘内的数据”呢? 这个时候就牵扯到“挂 载(mount)”的问题啦
文件系统与目录树的关系(挂载)
所谓的“挂载”就是利用一个目录当成进入点,将磁盘分区的数据放置在该目录下; 也就是 说,进入该目录就可以读取该分区的意思。这个动作我们称为“挂载”,那个进入点的目录我们 称为“挂载点”。
由于整个Linux系统最重要的是根目录,因此根目录一定需要挂载到某个分区 的。 至于其他的目录则可依使用者自己的需求来给予挂载到不同的分区。我
上图中假设我的硬盘分为两个分区,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)计算机群