
| 1.项盖 | |||
|---|---|---|---|
| 2.散热器 | 7.DVD光驱 | 12.导风罩 | 17.I/O模组 |
| 3.M.2接口固态硬盘 | 8.RAID控制器卡 | 13.后置硬盘背板 | 18.I/O模组 |
| 4.内存条 | 9.前置硬盘背板 | 14.硬盘 | 19.板载网卡 |
| 5.主板托架 | 10.风扇框 | 15.电源模块 |
说明:

服务器真实图片:


前面板图,主要是硬盘、开关机键、USB接口、VGA接口:

后面板图,1000M、10G网口(电网&接网线、光口&接光线)、BMC接口、USB接口、VGA接口(接显示器)、电源模块、后置硬盘:


Raiser卡图片:
网卡安装在Raiser卡上,Raiser卡安装在主板上。


网卡图片:

系统模块框图:

CPU与内存插槽示意图:

VGA线缆示意图:

在Linux系统中,一切都是文件,每个设备对应一个文件。
应用 / 文件系统↑块设备(sda / nvme0n1)↑协议(SATA / SAS / NVMe)↑物理接口(SATA口 / SFF-8643 / M.2)↑存储介质(HDD / SSD)
接口 ≠ 协议 ≠ 磁盘类型


机械硬盘HDD
磁盘盘片调整旋转,碰头寻道读写
转速越高读写速度越快,5400转/分钟、7200转/分钟、10K、15K
如下截图是BMC上看到的一块SATA接口的机械硬盘信息截图:
下图中协商速率大于支持的速率,实际最大只支持6Gbps,协商是指通道支持的速率,但是由于SATA协议只支持6G所以只能到6G

从协议层角度看HDD支持哪些?
HDD 历史上有多种协议,但在现代系统中,机械硬盘基本只剩 SATA 和 SAS 两种;不存在 NVMe HDD。
固态硬盘
NAND Flash存储,无机械结构,延迟小,抗震,
SSD 主流只有三大协议:SATA(AHCI)、SAS(SCSI)、NVMe(PCIe)
多个nvme盘时的命名规律
命名解释:
nvme 0 n 1│ │ │ ││ │ │ └─ Namespace ID│ │ └──── 命名空间分隔符│ └──────── 控制器编号└────────────── NVMe 设备类型
下图是一张 SATA接口的SSD硬件信息图,从图中可以看到支持的速率为6G,协商速率也为6G

下图是一张 SATA接口的SSD硬件信息图,从图中可以看到支持的速率为6G,协商速率也为2.5G,在使用时实际只支持2.5G

下图是一张 SAS接口的SSD硬件信息图,从图中可以看到支持的速率为12G,协商速率也为12G

下图是一张PCIe接口的NVMe SSD的磁盘信息

lsscsi -t 命令结果中有/nvme0n1 接口是pcie, lsblk命令也可看到nvme设备

smartctl -i /dev/nvme0n1 命令查看nvme ssd磁盘信息

把多块物理硬盘组合成一个“虚拟大硬盘”,实现提供性能、提供可靠性、提升容量。
物理硬盘 → RAID → 分区 → LVM → 文件系统 → 挂载多块硬盘↓做 RAID↓得到 1 块“虚拟磁盘”↓再做 GPT 分区(不是必须)↓再做 LVM(先把磁盘分区或者整块磁盘创建成PV,加入至VG,然后从VG中划分LV,格式化LV【建文件系统】,LV挂载至目录)↓再建文件系统↓挂载
分区=把一个物理磁盘(物理磁盘、RAID后的逻辑磁盘、虚拟机的虚拟磁盘)变成多个逻辑磁盘来管理。
操作系统只能从某个“分区”启动,没有分区,系统不知道从哪里启动。
BIOS的启动方式,系统盘的一个分区分挂载至/boot。
UEFI的启动方式,系统盘的一个分区分挂载至/boot/efi。

MBR和GPT是磁盘分区表标准,用于描述硬盘如何划分分区、如何启动操作系统。
MBR=Master Boot Record(主引导记录)
属于BIOS时代的分区标准。
MBR结构
MBR只有 512 Bytes,里面包含 3部分:
MBR = 引导程序 + 分区表 在同一个扇区,一旦损坏,系统无法启动,分区丢失。
MBR分区表只有 64字节
每个分区项 = 16字节 所以最多:
64 / 16 = 4个分区因此 MBR最大只能有:
为了解决不够用 → 发明了:
扩展分区(Extended Partition)
4个主分区不够 → 把其中一个改成“扩展分区”扩展分区里面再套无限逻辑分区
最终结构:
MBR├─ 主分区1├─ 主分区2├─ 主分区3└─ 扩展分区├─ 逻辑分区5├─ 逻辑分区6├─ 逻辑分区7
注意: 没有分区4 → 因为扩展分区占了位置。
MBR使用 32位地址:
最大扇区数 = 2^32每扇区 = 512B最大容量 = 2TB
所以: 👉 MBR最大只支持 2TB
GPT = GUID Partition Table
属于:UEFI 时代的分区标准 是为替代 MBR 设计的现代方案。
GPT不是只在一个扇区。
GPT在磁盘 头尾各保存一份分区表
磁盘开始│├─ Protective MBR(兼容MBR)├─ GPT Header(主头)├─ Partition Table(主表)││ ← 数据区 →│├─ Partition Table(备份表)└─ GPT Header(备份头)磁盘结尾
┌───────────────────────────────┐│ LBA 0 ││ Master Boot Record (512B) ││ ┌───────────────────────────┐ ││ │ BootLoader 446B │ ││ │ 分区表 64B (4个分区项) │ ││ │ 结束标志 55AA │ ││ └───────────────────────────┘ │└───────────────────────────────┘││ 分区数据区域│├───────────────┬───────────────┬───────────────┐│ 主分区1 │ 主分区2 │ 主分区3 │├───────────────┴───────────────┬───────────────┤│ 扩展分区 (容器) │ ││ ├─逻辑分区5 │ ││ ├─逻辑分区6 │ ││ └─逻辑分区7 │ │└───────────────────────────────────────────────┘
| Bootloader 代码区 | 446 字节 | |
磁盘开始┌───────────────────────────────┐│ Protective MBR (兼容MBR) │└───────────────────────────────┘┌───────────────────────────────┐│ GPT Header (主头) ││ • 磁盘GUID ││ • 分区表位置 ││ • CRC校验 │└───────────────────────────────┘┌───────────────────────────────┐│ Partition Table (主分区表) ││ 分区1 GUID ││ 分区2 GUID ││ 分区3 GUID ││ ... 默认128个分区 │└───────────────────────────────┘││ 巨大的数据区域│├───────────────┬───────────────┬───────────────┐│ 分区1 │ 分区2 │ 分区3 │├───────────────┴───────────────┴───────────────┤│ 分区4 分区5 分区6 …… 分区128 │└───────────────────────────────────────────────┘┌───────────────────────────────┐│ Partition Table (备份分区表) │└───────────────────────────────┘┌───────────────────────────────┐│ GPT Header (备份头) │└───────────────────────────────┘磁盘结束
开机上电│▼BIOS 固件启动│▼读取硬盘 第0扇区 (MBR)│▼执行 MBR 中的 BootLoader (446B):把操作系统内核加载到内存中并启动│▼查找 “活动分区”(Active Partition)│▼加载 分区中的 BootLoader│▼启动操作系统
MBR分区下的lsblk -f 命令结果,可以看到/boot挂载在第一个分区上。

BIOS 启动特点
• 只能读取磁盘前512B• 只能识别MBR• 启动链很短• 极度依赖第0扇区
关键问题: 👉 MBR坏 = 直接无法开机
开机上电│▼UEFI 固件启动│▼读取 GPT 分区表│▼找到 EFI System Partition (ESP)│▼读取 EFI 启动文件│ (类似 exe 程序)▼运行 bootx64.efi 【boot loader】│▼启动操作系统│▼/boot/vmlinuz-xxx.xxx 内核文件│▼启动init/systemd等进程
UEFI系统执行lsblk -f 查看磁盘挂载,可以看到有一个分区挂载至/boot/efi,文件系统为FAT32

/boot/efi/目录下的BOOTX84.EFI文件截图如下所示:

查看磁盘分区,确认为GPT

UEFI 不再从“扇区”启动,而是从文件系统启动。
ESP 分区格式:
FAT32 文件系统典型结构:
EFI System Partition└─ /EFI/├─ Microsoft/│ └─ Boot/│ └─ bootmgfw.efi│├─ ubuntu/│ └─ grubx64.efi│└─ Boot/└─ bootx64.efi
本质:
👉 UEFI 直接运行 .efi 可执行文件
就像:
BIOS = 读磁盘扇区UEFI = 运行硬盘里的程序
BIOS启动:固件 → MBR → 分区Boot → OS扇区级启动UEFI启动:固件 → GPT → ESP分区 → .EFI程序 → OS文件级启动
解决分区固定大小的问题,引入LVM。
LVM 是一个 虚拟存储层,插在分区和文件系统之间。
PV 可以是:
把多个 PV 合成一个池子:
VG = PV + PV + PV在 VG 里切出 LV:
LV 就是新的“分区”例如:
vg_data├─ lv_root 100G├─ lv_home 500G├─ lv_var 200G
这些 LV 才会格式化:
mkfs.ext4 /dev/vg_data/lv_home然后挂载使用。
| 必须要有 ESP 分区 | |
典型 Linux GPT 分区:
/dev/sda1 EFI 512M ← 必须(UEFI)/dev/sda2 LVM 其余空间 ← 给 LVM
没有 LVM(传统)
磁盘├─ 分区1 → 文件系统 → /├─ 分区2 → 文件系统 → /home└─ 分区3 → 文件系统 → /var
空间 固定死 ❌
使用 LVM
磁盘└─ 分区(LVM类型)↓PV↓VG (存储池)↓├─ LV → 文件系统 → /├─ LV → 文件系统 → /home└─ LV → 文件系统 → /var
空间 可动态调整 ✅
没有软件的硬件是没有用的,为了管理计算机硬件资源 ,有了操作系统 这个系统软件的生产。由于操作系统会控制所有的硬件并且提供核心功能,因此计算机能够认识硬件内的文件,并且进一步读取硬盘内的软件与执行该软件来达成各项目的。
问题是,既然操作系统也是软件,那么计算机是如何认识这个操作系统软件并且执行的?天机的时候,计算机没有任何软件系统,那它要如何读取硬盘内的操作系统的?这就是涉及到计算机的开机程序了BIOS&UEFI。
CMOS记录各项硬件参数且嵌入在主板上面的存储器,BIOS是一个写入到主板上的一个固件。在开机的时候,计算机系统会主动执行的第一个程序就是BIOS。
接下来BIOS会分析计算机里面有哪些存储设备,以硬盘为例,BIOS会依据用户的设定去取得能够开机的硬盘,并且到该硬盘里去读取第一个磁区的MBR位置。MBR这个仅有446bytes的硬盘容量存放了最基本的开机管理程序boot loader。
boot loader加载内核,由于boot loader是操作系统在安装的时候所提供的,所以它会认识硬盘内的文件系统格式,因此能够读取内核。
boot loader的作用:
提供菜单:用户可以选择不同的开机项目,这也是多系统开机的重要功能。
载入内核:直接指向可开机的程序来开始操作系统。
转交其他loader:将开机管理功能转交给其他loader负责。
简单的说,整个开机流程到操作系统之前的动作是这样的:
UEFI是BIOS的替代产品,使用C语言开发,比起使用组合语言的传统BIOS要更容易开发。
传统BIOS与UEFI的对比如下表:
从上图可发现,与传统BIOS不同,UEFI简直就像一个低端的操作系统,也跟操作系统类似,只需要加载驱动程序即可控制硬件。UEFI加入了一个安全启动(secure boot)机制,即将开机的操作系统必须要被UEFI所验证,否则就无法顺利开机。
目录树结构就是以根目录为主,然后向下呈现分支的目录结构的一种目录结构。整个目录树架构最近来可好的就是根目录(root directory),这个根目录的表示方法为一条斜线"/"。

挂载就是利用一个目录当成进入点,将磁盘或者磁盘分区的数据放置在该目录下;也就是说,进入该目录就可以读取该磁盘(磁盘分区)的意思。这个动作称为挂载,进入点的目录,称为‘挂载点’。由于整个Linux系统最重要的是根目录,因此根目录一定需要挂载到某个分区。我们以下图作为一个说明:

上图中假设我的硬盘分为两区,partition 1是挂载到根目录,至于partition 2则是挂载到/home这个目录。 这也就是说,当我的数据放置在/home内的各次目录时,数据是放置到partition 2的,如果不是放在/home底下的目录, 那么数据就会被放置到partition1了。



选择语言

选择安装位置

磁盘分区选择“自动”

磁盘分区选择“Custom自定义”


设置root密码


开始安装


┌───────────────┐│ 管理程序 ││ Ansible / 云 │└──────┬────────┘│┌─────────┴─────────┐│ │Redfish IPMI(HTTPS/JSON) (UDP/二进制)│ │└─────────┬─────────┘│BMC│┌──────┴──────┐│ 硬件本体 │└─────────────┘
BMC是硬件管家,Baseboard Management Controller,独立于操作系统的微控制器,即使服务器关机,系统故障,只要接电,就能管理服务器.
IPMI(Intelligent Platform Management Interface) 是由intel主导,1998年开发的协议,用来和BMC通信.
IPMI的通信方式
使用nmap测试服务器BMC地址的623端口返回截图如下:

可以看到service是asf-rmcp
Redfish基于HTTPS+JSON的硬件管理API,取代IPMI.
Redfish核心特点
Redfish能干什么?

图片解读:
如果需要使用远程控制使用KVM协议,使用的端口号为7578
扇区是机械硬件上进行数据读写的最小物理单位。
无论哪种大小,操作系统都无法只读写一个扇区里的一个字节,要读就必须把整个扇区的数字全部读出来,要写也必须是整个扇区地写。
扇区的结构与组成:
现在操作系统通常使用LBA(逻辑块寻址),LBA就是给整个硬盘的所有扇区从0开始编一个逻辑号,然后硬盘内部固件再自动把这个逻辑号翻译成实际的物理位置,这就简化了操作系统的设计。
扇区vs操作系统中的“块”
操作系统不能直接使用扇区,而是使用“块”(Linux叫法)或“簇”(windows叫法)
扇区:物理层的最小单位(硬件决定的)
块/簇:逻辑层的最小单位(操作系统决定的),通常由1个、2个、4个、8个等扇区组成。
为什么要有“块”? 如果操作系统按扇区(512字节)管理,那对于一个大文件(比如1GB),需要管理200多万个扇区,效率极低。把多个扇区组成一个“块”(比如8个扇区=4KB),管理单位就变成了约25万个块,效率大大提高。
一个例子: 你写一个“1KB”的文本文件。
总结一张表:
| 层级 | ||
| 决定者 | ||
| 大小 | ||
| 作用 | ||
| 损坏影响 |
windows系统查看物理扇区与簇大小命令:
fsutil fsinfo ntfsinfo C:命令中其中C为盘符,下图为命令截图:

命令解释:
Linux系统查看扇区大小命令:
fdisk /dev/sdi -l
由上图命令结果可知:扇区大小为4096bytes
Linux系统查看“块”大小命令:
stat -f /其中"/" 为挂载目录
