一、认识服务器的硬件
1.1 硬件结构
| 1.项盖 | 6.前置硬盘 | 11.风扇 | 16.PCIe卡 |
|---|---|---|---|
| 2.散热器 | 7.DVD光驱 | 12.导风罩 | 17.I/O模组 |
| 3.M.2接口固态硬盘 | 8.RAID控制器卡 | 13.后置硬盘背板 | 18.I/O模组 |
| 4.内存条 | 9.前置硬盘背板 | 14.硬盘 | 19.板载网卡 |
| 5.主板托架 | 10.风扇框 | 15.电源模块 |
说明:
- 内存边的两个黑色小框是CPU的位置
- PCIE卡可以接网卡,显卡,存储扩展卡,RAID卡等
服务器真实图片:
前面板图,主要是硬盘、开关机键、USB接口、VGA接口:
后面板图,1000M、10G网口(电网&接网线、光口&接光线)、BMC接口、USB接口、VGA接口(接显示器)、电源模块、后置硬盘:
Raiser卡图片:
网卡安装在Raiser卡上,Raiser卡安装在主板上。
网卡图片:
系统模块框图:
CPU与内存插槽示意图:
VGA线缆示意图:
1.2 硬件设备在Linux中的文件名
在Linux系统中,一切都是文件,每个设备对应一个文件。
| 设备 | 设备在Linux内的文件名 |
|---|---|
| SCSI/SATA/USB硬驱 | /dev/sd[a-p] |
| USB快闪碟 | /dev/sd[a-p] (与SATA相同) |
| VirtI/O界面 | /dev/vd[a-p] (用于虚拟机内) |
| 软碟机 | /dev/fd[0-1] |
| 打印机 | /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] (旧式系统才有) |
二、磁盘
2.1 磁盘的相关概念
应用 / 文件系统 ↑ 块设备(sda / nvme0n1) ↑ 协议(SATA / SAS / NVMe) ↑ 物理接口(SATA口 / SFF-8643 / M.2) ↑ 存储介质(HDD / SSD)接口 ≠ 协议 ≠ 磁盘类型
| 存储介质分类 | 磁盘“协议”分类 | 物理接口分类 |
|---|---|---|
| 机械硬盘HDD | SATA 6Gbps | SATA(7 针数据线 + 15 针电源) |
| 固态硬盘SSD | SAS 12G/24G | SAS 接口(SFF 系列:SFF-8482\SFF-8643\SFF-8644SFF-8654) |
| NVMe(为SSD量身定制的协议) | PCIe接口(形态M.2\U.2\AIC\EDSFF) |
2.2 按存储介质分类
机械硬盘HDD
磁盘盘片调整旋转,碰头寻道读写
转速越高读写速度越快,5400转/分钟、7200转/分钟、10K、15K
如下截图是BMC上看到的一块SATA接口的机械硬盘信息截图:
下图中协商速率大于支持的速率,实际最大只支持6Gbps,协商是指通道支持的速率,但是由于SATA协议只支持6G所以只能到6G
从协议层角度看HDD支持哪些?
硬盘类型 接口 协议 SATA HDD SATA ATA SAS HDD SAS SCSI SCSI HDD SCSI SCSI FC HDD FC SCSI over FC HDD 历史上有多种协议,但在现代系统中,机械硬盘基本只剩 SATA 和 SAS 两种;不存在 NVMe HDD。
固态硬盘
NAND Flash存储,无机械结构,延迟小,抗震,
SSD 主流只有三大协议:SATA(AHCI)、SAS(SCSI)、NVMe(PCIe)
| 你看到的 | 实际协议 | 速率 | 说明 |
|---|---|---|---|
| SATA SSD | AHCI | 6Gb/s [~600 MB/s] | 老协议 |
| SAS SSD | SCSI | 12Gb/s [~1.2 GB/s] | 企业级 |
| NVMe SSD | NVMe | 7 GB/s | 高性能 |
| M.2 SATA | AHCI | 6Gb/s [~600 MB/s] | 不是 NVMe |
| M.2 NVMe | NVMe | PCIe 代际 × 通道数 × 协议效率 × SSD 控制器/闪存能力 × 系统平台限制 | 高速 |
| PCIe 版本 | 单通道带宽(约) | x4 总带宽 | x8 总带宽 |
|---|---|---|---|
| PCIe 3.0 | ~1 GB/s | ~4 GB/s | ~8 GB/s |
| PCIe 4.0 | ~2 GB/s | ~8 GB/s | ~16 GB/s |
| PCIe 5.0 | ~4 GB/s | ~16 GB/s | ~32 GB/s |
多个nvme盘时的命名规律
| 盘 | 设备名 |
|---|---|
| 第 1 块 NVMe | /dev/nvme0n1 |
| 第 2 块 NVMe | /dev/nvme1n1 |
| 第 3 块 NVMe | /dev/nvme2n1 |
命名解释:
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技术
把多块物理硬盘组合成一个“虚拟大硬盘”,实现提供性能、提供可靠性、提升容量。
3.1 解决三个问题
| 单盘问题 | RAID解决 |
|---|---|
| 容量小 | 多盘合并 |
| 性能低 | 并行读写 |
| 容易坏 | 冗余备份 |
3.2 RAID工作位置
物理硬盘 → RAID → 分区 → LVM → 文件系统 → 挂载3.3 RAID三种核心技术
| 技术 | 作用 | RAID级别 |
|---|---|---|
| Striping(条带) | 提升速度 | RAID0 |
| Mirroring(镜像) | 提升安全 | RAID1 |
| Parity(校验) | 兼顾容量+安全 | RAID5、RAID6 |
3.4 硬RAID与软RAID
| 类型 | 工具 |
|---|---|
| 硬RAID | RAID卡 |
| 软RAID | mdadm |
3.5 真实环境中使用
多块硬盘 ↓ 做 RAID ↓ 得到 1 块“虚拟磁盘” ↓ 再做 GPT 分区(不是必须) ↓ 再做 LVM(先把磁盘分区或者整块磁盘创建成PV,加入至VG,然后从VG中划分LV,格式化LV【建文件系统】,LV挂载至目录) ↓ 再建文件系统 ↓ 挂载四、磁盘分区MBR&GPT
4.1 为什么需要磁盘分区
分区=把一个物理磁盘(物理磁盘、RAID后的逻辑磁盘、虚拟机的虚拟磁盘)变成多个逻辑磁盘来管理。
操作系统只能从某个“分区”启动,没有分区,系统不知道从哪里启动。
BIOS的启动方式,系统盘的一个分区分挂载至/boot。
UEFI的启动方式,系统盘的一个分区分挂载至/boot/efi。
MBR和GPT是磁盘分区表标准,用于描述硬盘如何划分分区、如何启动操作系统。
4.2 MBR与GPT分区
MBR=Master Boot Record(主引导记录)
属于BIOS时代的分区标准。
MBR结构
MBR只有 512 Bytes,里面包含 3部分:
| 偏移 | 大小 | 内容 |
|---|---|---|
| 0–445 | 446B | Boot Loader 引导代码 |
| 446–509 | 64B | 分区表(最多4项) |
| 510–511 | 2B | 结束标志 0x55AA |
MBR = 引导程序 + 分区表 在同一个扇区,一旦损坏,系统无法启动,分区丢失。
4.2.1 MBR分区方式
MBR分区表只有64字节
每个分区项 = 16字节
所以最多:
64 / 16 = 4个分区因此 MBR最大只能有:
- 4个主分区(Primary)
为了解决不够用 → 发明了:
扩展分区(Extended Partition)
4个主分区不够 → 把其中一个改成“扩展分区” 扩展分区里面再套无限逻辑分区最终结构:
MBR ├─ 主分区1 ├─ 主分区2 ├─ 主分区3 └─ 扩展分区 ├─ 逻辑分区5 ├─ 逻辑分区6 ├─ 逻辑分区7注意:
没有分区4 → 因为扩展分区占了位置。
4.2.2 MBR最大容量限制
MBR使用 32位地址:
最大扇区数 = 2^32 每扇区 = 512B 最大容量 = 2TB所以:
👉MBR最大只支持 2TB
4.3 GPT分区
GPT = GUID Partition Table
属于:UEFI 时代的分区标准
是为替代 MBR 设计的现代方案。
| MBR问题 | GPT解决方式 |
|---|---|
| 单点损坏 | 分区表双备份 |
| 最大2TB | 支持ZB级容量 |
| 4分区限制 | 默认128分区 |
| BIOS依赖 | UEFI启动 |
4.3.1 GPT磁盘布局
GPT不是只在一个扇区。
GPT在磁盘头尾各保存一份分区表
磁盘开始 │ ├─ Protective MBR(兼容MBR) ├─ GPT Header(主头) ├─ Partition Table(主表) │ │ ← 数据区 → │ ├─ Partition Table(备份表) └─ GPT Header(备份头) 磁盘结尾4.4 BIOS + MBR vs UEFI + GPT
| 启动体系 | 分区表 |
|---|---|
| BIOS | MBR |
| UEFI | GPT |
4.4.1 MBR 磁盘结构
┌───────────────────────────────┐ │ LBA 0 │ │ Master Boot Record (512B) │ │ ┌───────────────────────────┐ │ │ │ BootLoader 446B │ │ │ │ 分区表 64B (4个分区项) │ │ │ │ 结束标志 55AA │ │ │ └───────────────────────────┘ │ └───────────────────────────────┘ │ │ 分区数据区域 │ ├───────────────┬───────────────┬───────────────┐ │ 主分区1 │ 主分区2 │ 主分区3 │ ├───────────────┴───────────────┬───────────────┤ │ 扩展分区 (容器) │ │ │ ├─逻辑分区5 │ │ │ ├─逻辑分区6 │ │ │ └─逻辑分区7 │ │ └───────────────────────────────────────────────┘| 内容 | 大小 | 说明 |
|---|---|---|
| Bootloader 代码区 | 446 字节 | 启动代码,负责查找并加载活动分区的引导记录 。 |
| 磁盘分区表 (DPT) | 64 字节 | 记录主分区信息,每项 16 字节,共 4 项 。 |
| 结束签名 (55 AA) | 2 字节 | 标识该扇区是有效的 MBR 。 |
4.4.2 GPT 磁盘结构
磁盘开始 ┌───────────────────────────────┐ │ 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 (备份头) │ └───────────────────────────────┘ 磁盘结束4.5 BIOS + MBR vs UEFI + GPT 启动流程图
4.5.1 BIOS + MBR 启动流程(传统)
开机上电 │ ▼ BIOS 固件启动 │ ▼ 读取硬盘 第0扇区 (MBR) │ ▼ 执行 MBR 中的 BootLoader (446B):把操作系统内核加载到内存中并启动 │ ▼ 查找 “活动分区”(Active Partition) │ ▼ 加载 分区中的 BootLoader │ ▼ 启动操作系统MBR分区下的lsblk -f 命令结果,可以看到/boot挂载在第一个分区上。
BIOS 启动特点
• 只能读取磁盘前512B • 只能识别MBR • 启动链很短 • 极度依赖第0扇区关键问题:
👉 MBR坏 = 直接无法开机
4.5.2 UEFI + GPT 启动流程(现代)
开机上电 │ ▼ 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
4.5.3 什么是 ESP 分区(重点)
UEFI 不再从“扇区”启动,而是从文件系统启动。
ESP 分区格式:
FAT32 文件系统典型结构:
EFI System Partition └─ /EFI/ ├─ Microsoft/ │ └─ Boot/ │ └─ bootmgfw.efi │ ├─ ubuntu/ │ └─ grubx64.efi │ └─ Boot/ └─ bootx64.efi本质:
👉 UEFI 直接运行.efi 可执行文件
就像:
BIOS = 读磁盘扇区 UEFI = 运行硬盘里的程序4.5.4 两种启动方式对比图
BIOS启动: 固件 → MBR → 分区Boot → OS 扇区级启动 UEFI启动: 固件 → GPT → ESP分区 → .EFI程序 → OS 文件级启动五、LVM逻辑卷管理
解决分区固定大小的问题,引入LVM。
LVM 是一个虚拟存储层,插在分区和文件系统之间。
5.1 LVM的三层结构
| 层级 | 名称 | 类比 |
|---|---|---|
| PV | Physical Volume | 硬盘/分区 |
| VG | Volume Group | 存储池 |
| LV | Logical Volume | 虚拟分区 |
1️⃣ PV(物理卷)
PV 可以是:
- 整块磁盘
- 一个分区
- 多块磁盘组合
2️⃣ VG(卷组)= 存储池
把多个 PV 合成一个池子:
VG = PV + PV + PV3️⃣ LV(逻辑卷)= 新分区
在 VG 里切出 LV:
LV 就是新的“分区”例如:
vg_data ├─ lv_root 100G ├─ lv_home 500G ├─ lv_var 200G这些 LV 才会格式化:
mkfs.ext4 /dev/vg_data/lv_home然后挂载使用。
5.3 用了LVM还需要分区吗
| 场景 | 是否需要分区 |
|---|---|
| 普通数据盘 | 可以整盘做 PV |
| 系统盘(UEFI+GPT) | 必须要有 ESP 分区 |
| BIOS系统 | 需要 /boot 分区 |
典型 Linux GPT 分区:
/dev/sda1 EFI 512M ← 必须(UEFI) /dev/sda2 LVM 其余空间 ← 给 LVM5.2 理解图
没有 LVM(传统)
磁盘 ├─ 分区1 → 文件系统 → / ├─ 分区2 → 文件系统 → /home └─ 分区3 → 文件系统 → /var空间固定死❌
使用 LVM
磁盘 └─ 分区(LVM类型) ↓ PV ↓ VG (存储池) ↓ ├─ LV → 文件系统 → / ├─ LV → 文件系统 → /home └─ LV → 文件系统 → /var空间可动态调整✅
六、开机流程中的BIOS与UEFI
没有软件的硬件是没有用的,为了管理计算机硬件资源 ,有了操作系统 这个系统软件的生产。由于操作系统会控制所有的硬件并且提供核心功能,因此计算机能够认识硬件内的文件,并且进一步读取硬盘内的软件与执行该软件来达成各项目的。
问题是,既然操作系统也是软件,那么计算机是如何认识这个操作系统软件并且执行的?天机的时候,计算机没有任何软件系统,那它要如何读取硬盘内的操作系统的?这就是涉及到计算机的开机程序了BIOS&UEFI。
6.1 BIOS
CMOS记录各项硬件参数且嵌入在主板上面的存储器,BIOS是一个写入到主板上的一个固件。在开机的时候,计算机系统会主动执行的第一个程序就是BIOS。
接下来BIOS会分析计算机里面有哪些存储设备,以硬盘为例,BIOS会依据用户的设定去取得能够开机的硬盘,并且到该硬盘里去读取第一个磁区的MBR位置。MBR这个仅有446bytes的硬盘容量存放了最基本的开机管理程序boot loader。
boot loader加载内核,由于boot loader是操作系统在安装的时候所提供的,所以它会认识硬盘内的文件系统格式,因此能够读取内核。
boot loader的作用:
提供菜单:用户可以选择不同的开机项目,这也是多系统开机的重要功能。
载入内核:直接指向可开机的程序来开始操作系统。
转交其他loader:将开机管理功能转交给其他loader负责。
简单的说,整个开机流程到操作系统之前的动作是这样的:
- BIOS:开机主动执行的软件
- MBR:第一个可开机装置的第一个磁区内的主要开机记录区块,内含开机管理程序
- 启动管理器boot loader:一个可读取核心来执行的软件
- 核心文件:启动操作系统的功能
6.2 UEFI
UEFI是BIOS的替代产品,使用C语言开发,比起使用组合语言的传统BIOS要更容易开发。
传统BIOS与UEFI的对比如下表:
| 比较项目 | 传统 BIOS | UEFI |
|---|---|---|
| 使用程序语言 | 组合语言 | C 语言 |
| 硬件资源控制 | 使用中断 (IRQ) 管理 不可变的内存访问 不可变得输入/输出访问 | 使用驱动程序与协议 |
| 处理器运作环境 | 16 位 | CPU 保护模式 |
| 扩充方式 | 透过IRQ连结 | 直接加载驱动程序 |
| 第三方厂商支持 | 较差 | 较佳且可支持多平台 |
| 图形化能力 | 较差 | 较佳 |
| 内置简化操作系统前环境 | 不支持 | 支持 |
从上图可发现,与传统BIOS不同,UEFI简直就像一个低端的操作系统,也跟操作系统类似,只需要加载驱动程序即可控制硬件。UEFI加入了一个安全启动(secure boot)机制,即将开机的操作系统必须要被UEFI所验证,否则就无法顺利开机。
七、Linux安装模式下,磁盘分割的选择
7.1 目录树结构
目录树结构就是以根目录为主,然后向下呈现分支的目录结构的一种目录结构。整个目录树架构最近来可好的就是根目录(root directory),这个根目录的表示方法为一条斜线"/"。
7.2 文件系统与目录树的关系(挂载)
挂载就是利用一个目录当成进入点,将磁盘或者磁盘分区的数据放置在该目录下;也就是说,进入该目录就可以读取该磁盘(磁盘分区)的意思。这个动作称为挂载,进入点的目录,称为‘挂载点’。由于整个Linux系统最重要的是根目录,因此根目录一定需要挂载到某个分区。我们以下图作为一个说明:
上图中假设我的硬盘分为两区,partition 1是挂载到根目录,至于partition 2则是挂载到/home这个目录。 这也就是说,当我的数据放置在/home内的各次目录时,数据是放置到partition 2的,如果不是放在/home底下的目录, 那么数据就会被放置到partition1了。
八、vmware workstation uefi方式安装centos9,
选择语言
选择安装位置
磁盘分区选择“自动”
磁盘分区选择“Custom自定义”
设置root密码
开始安装
知识拓展
BMC&IPMI&Redfish学习
三者的关系如下图所示:
┌───────────────┐ │ 管理程序 │ │ Ansible / 云 │ └──────┬────────┘ │ ┌─────────┴─────────┐ │ │ Redfish IPMI (HTTPS/JSON) (UDP/二进制) │ │ └─────────┬─────────┘ │ BMC │ ┌──────┴──────┐ │ 硬件本体 │ └─────────────┘BMC是硬件管家,Baseboard Management Controller,独立于操作系统的微控制器,即使服务器关机,系统故障,只要接电,就能管理服务器.
BMC能干什么?
- 开关机
- 远程控制台(KVM相关于接显示器)
- 硬件监控,查看CPU\内存\磁盘\网卡\电源等硬件信息
- 事件日志,查看硬件错误
- 固件升级,BIOS/BMC/网卡等各种硬件的固件版本
- 装系统,可以打开远程控制台(KVM)挂载ISO进行系统安装
IPMI是什么?
IPMI(Intelligent Platform Management Interface) 是由intel主导,1998年开发的协议,用来和BMC通信.
IPMI的通信方式
| 通道 | 说明 |
|---|---|
| LAN | UDP 623 |
| Serial | 串口 |
使用nmap测试服务器BMC地址的623端口返回截图如下:
可以看到service是asf-rmcp
Redfish是什么?
Redfish基于HTTPS+JSON的硬件管理API,取代IPMI.
Redfish核心特点
| 特性 | 说明 |
|---|---|
| 协议 | HTTPS |
| 数据格式 | JSON |
| 风格 | RESTful |
| 安全 | TLS + Token |
| 生态 | 标准统一 |
Redfish能干什么?
| 能力 | 说明 |
|---|---|
| 开关机 | POST /Actions/ComputerSystem.Reset |
| 硬件信息 | CPU / 内存 / 磁盘 |
| BIOS 配置 | 自动化改参数 |
| 固件升级 | API 批量刷 |
| 事件订阅 | Webhook |
IPMI vs Redfish 对比
| 对比项 | IPMI | Redfish |
|---|---|---|
| 年代 | 老 | 新 |
| 协议 | UDP / RMCP+ | HTTPS |
| 数据格式 | 二进制 | JSON |
| 安全 | 弱 | 强 |
| 自动化 | 差 | 极好 |
| 云平台 | 不友好 | 标配 |
BMC服务配置截图
图片解读:
如果需要使用远程控制使用KVM协议,使用的端口号为7578
扇区
扇区是机械硬件上进行数据读写的最小物理单位。
- 传统大小:绝大多数硬盘的每个扇区大小为512字节。
- 现在标准:现在更大容量的硬盘普遍使用4KB(4096字节)的扇区,称为“高级格式”。
无论哪种大小,操作系统都无法只读写一个扇区里的一个字节,要读就必须把整个扇区的数字全部读出来,要写也必须是整个扇区地写。
扇区的结构与组成:
- 标识符(ID):记录该扇区的编号和位置信息,就像门牌号。
- 数据区(Data Field):真正存储用户数据的地方,大小是512字节或4KB。
- 纠错码(ECC):一段校验数据。当读取扇区时,磁盘控制器会根据数据区的内容重新计算一个ECC值,并与扇区上原有的ECC对比。如果一致,说明数据正确;如果不一致,说明该扇区可能损坏(出现“坏道”)。
现在操作系统通常使用LBA(逻辑块寻址),LBA就是给整个硬盘的所有扇区从0开始编一个逻辑号,然后硬盘内部固件再自动把这个逻辑号翻译成实际的物理位置,这就简化了操作系统的设计。
扇区vs操作系统中的“块”
操作系统不能直接使用扇区,而是使用“块”(Linux叫法)或“簇”(windows叫法)
扇区:物理层的最小单位(硬件决定的)
块/簇:逻辑层的最小单位(操作系统决定的),通常由1个、2个、4个、8个等扇区组成。
为什么要有“块”?
如果操作系统按扇区(512字节)管理,那对于一个大文件(比如1GB),需要管理200多万个扇区,效率极低。把多个扇区组成一个“块”(比如8个扇区=4KB),管理单位就变成了约25万个块,效率大大提高。
一个例子:
你写一个“1KB”的文本文件。
- 物理上:硬盘至少写了2个512字节的扇区。
- 逻辑上:如果系统块大小是4KB,那么文件系统会分配1个完整的块(4KB),实际只用了前1KB,剩下的3KB就是内部碎片(浪费了)。
总结一张表:
| 特性 | 扇区 (Sector) | 块/簇 (Block/Cluster) |
|---|---|---|
| 层级 | 物理层 | 逻辑层/文件系统层 |
| 决定者 | 硬件制造商 | 操作系统(格式化时设定) |
| 大小 | 固定(512字节或4KB) | 可变(1、2、4、8个扇区) |
| 作用 | 硬盘自己寻址、读写的最小单位 | 操作系统分配存储空间的最小单位 |
| 损坏影响 | 出现物理坏道 | 该块内的所有扇区都无法使用 |
windows系统查看物理扇区与簇大小命令:
fsutil fsinfo ntfsinfo C:命令中其中C为盘符,下图为命令截图:
命令解释:
- 硬盘物理扇区大小:4096 字节 (4KB)—— 这是硬盘硬件真实读写的最小单位。
- 操作系统/文件系统使用的“块”(这里叫“群集/簇”)大小:4096 字节 (4KB)—— 这是Windows分配空间的最小单位。
- 关键比例:1个群集 = 1个物理扇区(4096 / 4096 = 1)。这是最理想、最高效的对齐状态。
- 为什么显示“每扇区字节数:512”?—— 这是逻辑扇区,是为了兼容老旧的软件/系统而模拟出来的。硬盘内部会把8个逻辑扇区(8×512=4096)拼成一个物理扇区来处理。
Linux系统查看扇区大小命令:
fdisk /dev/sdi -l由上图命令结果可知:扇区大小为4096bytes
Linux系统查看“块”大小命令:
stat -f / 其中"/" 为挂载目录