Skip to content

磁盘结构

物理结构

  • 机械硬盘(HDD, Hard Disk Drive)
    • 组成:由盘片、磁头、主轴电机、控制电路等机械部件构成。
    • 读写原理:通过磁头在高速旋转的盘片上移动进行磁记录。
    • 特点:容量大、成本低,但速度较慢(受转速影响,如5400/7200/10000 RPM)、易受震动损坏。
  • 固态硬盘(SSD, Solid State Drive)
    • 组成:由NAND闪存芯片、主控、缓存等电子元件构成,无机械部件。
    • 读写原理:通过电信号直接访问存储单元。
    • 特点:速度快、抗震、低功耗,但寿命受写入次数限制(TBW参数),单位容量成本较高。
  • 混合硬盘(SSHD, Solid State Hybrid Drive)
    • 结合HDD和SSD:用小容量闪存缓存频繁访问数据,提升性能,同时保留大容量机械存储。
对比项机械硬盘(HDD)固态硬盘(SSD)
存储原理磁性盘片 + 机械磁头读写NAND闪存芯片(无机械部件)
读写速度较慢(100-200 MB/s,随机访问延迟高)极快(500-7000 MB/s,随机访问延迟极低)
抗震性差(机械部件易受震动损坏)强(无活动部件,耐冲击)
噪音有(盘片旋转和磁头移动声)无(完全静音)
功耗较高(需驱动电机)较低(无机械运动,更省电)
发热量较高(机械摩擦产生热量)较低(主控和闪存芯片发热较小)
寿命较长(磁记录无写入次数限制)有限(NAND闪存有擦写次数限制,但足够家用)
容量大(单盘可达20TB+)较小(主流1TB-4TB,大容量价格高)
价格(每GB)低(适合大容量存储)高(但价格持续下降)
接口SATA、SASSATA、NVMe(PCIe)、M.2、U.2
启动时间较慢(需等待盘片加速)瞬间启动(无机械延迟)
碎片影响明显(碎片化会降低性能)几乎无影响(无磁头寻道问题)
适用场景大容量存储、冷数据备份、NAS系统盘、游戏、高性能计算、笔记本电脑
  • 选HDD:需要大容量、低成本存储(如电影、备份)。
  • 选SSD:追求速度、响应时间(如操作系统、游戏、生产力工具)。
  • 混合方案:SSD(系统+常用软件) + HDD(数据存储)是性价比之选。

接口类型

并口

特点

  • 多线传输:同时使用多根数据线(如8/16/32根)并行传输数据,每个时钟周期可发送多位数据。
  • 高带宽(理论):早期因并行传输被认为速度更快。
  • 信号干扰:由于多线并行,容易产生串扰(Crosstalk)时钟偏移(Skew),影响稳定性。
  • 短距离适用:长距离传输时信号衰减严重,故主要用于机内连接。

硬盘接口

PATA(Parallel ATA,又称IDE)
  • 用途:早期机械硬盘(HDD)和光驱接口。
  • 带宽:最高 133 MB/s(ATA-7标准)。
  • 连接方式:40/80针排线,支持主从设备(Master/Slave跳线设置)。
  • 缺点:线缆宽大(影响机箱散热)、速度受限、不支持热插拔。
SCSI(Parallel SCSI)
  • 用途:企业级服务器、工作站存储。
  • 带宽:最高 320 MB/s(Ultra320 SCSI)。
  • 特点:支持多设备串联(Daisy Chain)、高延迟但稳定性强。
IEEE 1284(并口打印机接口)
  • 用途:老式打印机、扫描仪。
  • 速度:约 2 MB/s(EPP/ECP模式)。

串口

特点

  • 单线/差分传输:数据按位依次传输(如1根数据线+时钟线),或使用差分信号(如LVDS)抗干扰。
  • 高频率低延迟:通过提高时钟频率弥补单线带宽限制,实际速度远超并口。
  • 抗干扰强:差分信号(如PCIe、SATA)适合长距离和高速传输。
  • 简化布线:线缆更细(如SATA仅7针),支持热插拔。

硬盘接口

SATA(Serial ATA)
  • 用途:取代PATA,成为HDD/SSD主流接口。
  • 带宽
    • SATA I:1.5 Gbps(~150 MB/s)
    • SATA II:3 Gbps(~300 MB/s)
    • SATA III:6 Gbps(~600 MB/s)
  • 优势:线缆小巧、支持热插拔(部分主板需配置)。
SAS(Serial Attached SCSI)
  • 用途:企业级存储,兼容SATA(但SATA设备不能用于SAS接口)。
  • 带宽
    • SAS 12Gbps(~1200 MB/s)
    • SAS 24Gbps(新一代)
  • 特点:双端口冗余、高可靠性、支持全双工。
PCIe/NVMe
  • 用途:高性能SSD(如M.2 NVMe、U.2)。
  • 带宽
    • PCIe 3.0 x4:4 GB/s
    • PCIe 4.0 x4:8 GB/s
    • PCIe 5.0 x4:16 GB/s
  • 优势:直接连接CPU,超低延迟,适合高速存储。
USB(串行通信)
  • 用途:外接存储设备(移动硬盘、U盘)。
  • 带宽
    • USB 3.2 Gen 2x2:20 Gbps(~2.5 GB/s)
    • USB4(雷电3兼容):40 Gbps

并口 vs 串口对比表

对比项并口(Parallel)串口(Serial)
传输方式多根数据线同时传输单根数据线按位传输
典型接口PATA(IDE)、Parallel SCSISATA、SAS、PCIe/NVMe、USB
带宽上限低(PATA 133 MB/s,SCSI 320 MB/s)高(NVMe PCIe 4.0 x4 可达 8 GB/s)
抗干扰能力差(易受串扰影响)强(差分信号抗干扰)
线缆复杂度宽大(如40/80针IDE排线)细小(如SATA 7针、M.2无缆线)
适用场景早期硬盘、老式外设现代SSD、高速外设、企业存储
发展趋势已被淘汰(SATA/NVMe取代)主流(未来向PCIe 5.0/6.0演进)

总结

  • 并口(PATA/SCSI):早期技术,受限于信号干扰和带宽,已被串口取代。
  • 串口(SATA/SAS/NVMe):现代主流,凭借高速度、低延迟和抗干扰优势,成为存储接口标准。
  • 未来趋势:PCIe 5.0/6.0和NVMe协议将进一步推动串口存储性能提升。

Linux 磁盘分区表示

磁盘设备命名

  • IDE 硬盘(旧式)/dev/hdX
    • 例如:/dev/hda(第一块 IDE 硬盘),/dev/hdb(第二块 IDE 硬盘)。
  • SATA/SCSI/SAS/NVMe 硬盘(现代)/dev/sdX
    • 例如:/dev/sda(第一块 SATA/SCSI 硬盘),/dev/sdb(第二块)。
  • NVMe SSD/dev/nvmeXnY
    • 例如:/dev/nvme0n1(第一块 NVMe 硬盘),/dev/nvme0n1p1(第一个分区)。

分区命名

  • 主分区/扩展分区/dev/sdXNX 是磁盘字母,N 是分区号,1~4)
    • 例如:/dev/sda1(第一块硬盘的第一个主分区)。
  • 逻辑分区/dev/sdXNN 从 5 开始)
    • 例如:/dev/sda5(第一块硬盘的第一个逻辑分区)。

磁盘命名的区别

设备名接口类型典型用途
/dev/sdaSATA/SCSI/SAS第一块普通硬盘(系统盘)
/dev/sdbSATA/SCSI/SAS第二块普通硬盘(数据盘)
/dev/nvme0n1NVMe SSD高速固态硬盘(现代电脑)
/dev/hdaIDE(旧式)老式机械硬盘

磁盘分区管理(MBR和GPT)

MBR(Master Boot Record,主引导记录)

MBR是Master Boot Record的简称,也就是主引导记录,是位于磁盘最前边的一段引导(Loader)代码,主要用来引导操作系统的加载与启动。MBR 中包含硬盘的主引导程序和硬盘分区表。分区表有 4 个分区记录区,每个分区记录区占 16 个字节,共 64 字节。446 字节存放主引导程序,2 字节校验。

主分区可以直接使用,而逻辑分区必须包含在扩展分区内。

特点

项目MBR 的限制
最大磁盘容量2TB(受限于32位寻址)
分区数量最多4个主分区,或3主分区+1扩展分区(扩展分区内可再分逻辑分区)
兼容性广泛兼容(所有BIOS系统、Windows/Linux旧版本)
安全性无冗余校验,分区表损坏可能导致数据丢失
主导位置硬盘的第一个扇区(512字节)。引导代码(446字节),分区表(64字节,最多4个主分区),签名(2字节,0x55AA)

何时使用主分区?

  1. 系统关键分区(如 /boot//efi 等),因为某些引导加载程序(如 GRUB)可能要求这些分区是主分区。
  2. 分区数量 ≤ 4,不需要额外逻辑分区时。
  3. 需要直接引导的分区(如 Windows 的 C: 盘通常必须是主分区)。

示例

  • /dev/sda1/boot(主分区)
  • /dev/sda2/(主分区)
  • /dev/sda3/home(主分区)
  • /dev/sda4 → 扩展分区(用于逻辑分区)

何时使用逻辑分区?

  1. 需要超过 4 个分区(因为 MBR 只允许 4 个主分区)。
  2. 数据存储分区(如 /data/backup 等非关键分区)。
  3. 不需要引导的分区(逻辑分区通常不用于 /boot/)。

示例

  • /dev/sda4 → 扩展分区(不直接使用)
    • /dev/sda5/data(逻辑分区)
    • /dev/sda6/backup(逻辑分区)
    • /dev/sda7swap(逻辑分区)

MBR管理硬盘 - fdisk

语法格式

bash
fdisk [选项] <磁盘设备>

常见交互选项

bash
m   查看帮助菜单
p   打印当前分区表
n   新建分区
d   删除分区
t   修改分区类型(如 82=swap, 83=Linux)
w   保存并退出
q   不保存退出

输出示例解析

磁盘整体信息
bash
Disk /dev/sda: 238.5 GiB, 256060514304 bytes, 500118192 sectors
Disk model: Samsung SSD 860 
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 3A1B2C3D-4E5F-6789-ABCD-EF0123456789
字段说明
Disk /dev/sda磁盘设备名(这里是第一块 SATA 硬盘)。
238.5 GiB磁盘总容量(GiB = Gibibyte,约 238.5 GB)。
256060514304 bytes磁盘总字节数。
500118192 sectors总扇区数(每个扇区默认 512 字节)。
Disk model磁盘型号(部分硬盘会显示厂商信息,如 Samsung SSD 860)。
Units计算单位(这里显示扇区大小,1 sector = 512 bytes)。
Sector size逻辑扇区/物理扇区大小(通常相同,高级硬盘可能不同,如 4K 对齐)。
I/O size最小/最佳 I/O 操作大小(影响性能)。
Disklabel type分区表类型(gptdos(即 MBR))。
Disk identifier磁盘的唯一标识符(GPT 是 UUID,MBR 是随机生成的 16 进制码)。
分区详细信息
Device       Start       End   Sectors   Size Type
/dev/sda1     2048   1050623   1048576   512M EFI System
/dev/sda2  1050624   2050047    999424   488M Linux filesystem
/dev/sda3  2050048 500117503 498067456 237.5G Linux filesystem
字段说明
Device分区设备名(如 /dev/sda1)。
Start分区的起始扇区(从磁盘开头计算的偏移量)。
End分区的结束扇区。
Sectors该分区占用的扇区数(End - Start + 1)。
Size分区大小(自动换算为易读单位,如 512M、237.5G)。
Type分区类型: - EFI System(UEFI 启动分区) - Linux filesystem(普通 Linux 分区) - Linux swap(交换分区) - Microsoft basic data(Windows NTFS/FAT)

注意事项

  1. 数据风险:误操作会导致数据丢失,操作前务必确认设备名
  2. 生效需重启:部分操作需要 partprobe 或重启生效
  3. GPT 磁盘:如需操作 GPT 分区表,建议使用 gdiskparted
  4. SSD 对齐:现代 SSD 建议使用 -u=sectors 参数确保对齐

扩展知识

  • 分区后需用 mkfs 格式化文件系统
  • 使用 blkid 查看新分区的 UUID
  • 通过 /etc/fstab 实现自动挂载

常见问题

(1)为什么第一个分区从 2048 扇区开始?

  • 早期磁盘从 63 扇区开始,但现代系统默认 1MB 对齐(2048 × 512B = 1MB),避免 SSD 性能下降。

(2)如何判断磁盘是 MBR 还是 GPT?

  • 查看 Disklabel type

    sudo fdisk -l /dev/sda | grep "Disklabel"

    输出可能是 dos(MBR)或 gpt

(3)如何查看分区的文件系统类型?

  • 使用 blkid 命令:

    sudo blkid /dev/sda1

    输出示例:

    /dev/sda1: UUID="1234-5678" TYPE="vfat" PARTUUID="abcd-efgh"
    • TYPE="vfat" 表示 FAT32(常见于 EFI 分区)。
    • TYPE="ext4" 表示 Linux ext4 分区。

GPT(GUID Partition Table,GUID 分区表)

GPT磁盘是指使用GUID分区表的磁盘,GUID磁盘分区表(GUID Partition Table,缩写:GPT)其含义为“全局唯一标识磁盘分区表”,是一个实体硬盘的分区表的结构布局的标准

特点

项目GPT 的优势
最大磁盘容量支持 9.4ZB(1ZB = 10亿TB,理论无实际限制)
分区数量最多 128 个主分区(Windows 默认限制)
兼容性需 UEFI 启动(现代操作系统均支持,如 Win8+/Linux/macOS)
安全性支持 CRC 校验,分区表损坏可恢复
功能扩展支持 >2TB 磁盘,适合 NVMe SSD 和大容量存储
引导位置保护性MBR(第一个扇区,兼容旧系统),主GPT头(第二个扇区),分区表(随后的多个扇区),备份分区表和GPT头(磁盘末尾)

GPT 分区适用场景

推荐所有新系统使用 GPT,特别是:

  • UEFI 引导的计算机(必须使用 GPT)。
  • 大容量磁盘(>2TB)
  • 需要多个分区(>4)

示例

  • /dev/nvme0n1p1/boot/efi(ESP 分区,FAT32)
  • /dev/nvme0n1p2/(ext4)
  • /dev/nvme0n1p3/home(ext4)
  • /dev/nvme0n1p4swap
  • /dev/nvme0n1p5/data(可以继续增加,无限制)

GPT管理硬盘

parted - 语法格式

bash
parted [选项] <磁盘设备> [命令]

交互模式常用命令

命令功能示例
print显示当前分区表print
mklabel创建分区表类型mklabel gpt
mkpart新建分区mkpart primary ext4 1MiB 10GiB
resizepart调整分区大小resizepart 2 20GiB
rm删除分区rm 3
unit设置单位unit GB
quit退出quit

注意事项

  1. 数据安全
    • 操作前务必备份数据
    • 调整分区大小需文件系统支持(如 ext4/xfs
  2. 单位规范
    • 建议使用 MiB/GiB 避免歧义(1MiB=1048576B
    • 起始位置从 1MiB 开始以保证对齐
  3. 与文件系统的关系
    • parted 只操作分区表,格式化需用 mkfs
    • 调整大小后可能需要 resize2fs/xfs_growfs

MBR vs GPT 对比表

对比项MBRGPT
最大磁盘容量2TB9.4ZB(理论值)
分区数量4个主分区(或扩展分区+逻辑分区)128个主分区(Windows 默认)
启动模式仅支持 BIOS(Legacy)需 UEFI(但可通过 CSM 兼容 BIOS 启动)
数据安全性无校验,易损坏CRC 校验,冗余备份
兼容性兼容所有老系统需现代系统(Win8+/Linux/macOS)
适用场景旧电脑、小容量磁盘新硬件、大容量 SSD/HDD

MBR磁盘分区流程步骤

1、查看添加硬盘设备

bash
ll /dev/sd*

2、进入交互模式

bash
fdisk /dev/sdb

3、交互模式-添加扩展分区

输入选项n,主分区选择p,扩展分区选择e

bash
[root@localhost ~]# fdisk /dev/sdb

欢迎使用 fdisk (util-linux 2.39.1)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。


命令(输入 m 获取帮助):n
分区类型
   p   主分区 (0个主分区,0个扩展分区,4空闲)
   e   扩展分区 (逻辑分区容器)
选择 (默认 p):e
分区号 (1-4, 默认  1): 
第一个扇区 (2048-20971519, 默认 2048): 
最后一个扇区,+/-sectors +size{K,M,G,T,P} (2048-20971519, 默认 20971519): 

创建了一个新分区 1,类型为“Extended”,大小为 10 GiB。

4、交互模式-添加逻辑分区

输入选项n,分区类型选择l。如果没有可分配空间会默认添加逻辑分区

bash
命令(输入 m 获取帮助):n
所有主分区的空间都在使用中。
添加逻辑分区 5
第一个扇区 (4096-20971519, 默认 4096): 
最后一个扇区,+/-sectors +size{K,M,G,T,P} (4096-20971519, 默认 20971519): 

创建了一个新分区 5,类型为“Linux”,大小为 10 GiB。

5、查看分区

输入指令p

bash
命令(输入 m 获取帮助):p
Disk /dev/sdb:10 GiB,10737418240 字节,20971520 个扇区
磁盘型号:VMware Virtual S
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x4a507e20

设备       启动  起点     末尾     扇区 大小 Id 类型
/dev/sdb1        2048 20971519 20969472  10G  5 扩展
/dev/sdb5        4096 20971519 20967424  10G 83 Linux

6、交互模式-保存退出

输入指令w

bash
命令(输入 m 获取帮助):w
分区表已调整。
将调用 ioctl() 来重新读分区表。
正在同步磁盘。

7、分区格式化

bash
[root@localhost ~]# mkfs.ext4 /dev/sdb5
mke2fs 1.47.0 (5-Feb-2023)
创建含有 2620928 个块(每块 4k)和 655360 inode 的文件系统
文件系统 UUID:30b5655b-24c3-462f-95ee-71065794e1b3
超级块的备份存储于下列块:
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

正在分配组表:完成                            
正在写入 inode表:完成                            
创建日志(16384 个块):完成
写入超级块和文件系统账户统计信息:已完成

8、创建挂载目录

bash
mkdir /data

9、查看设备信息

根据自己操作系统选择设备路径

bash
blkid /dev/sdb5

10、挂载磁盘

bash
mount /dev/sdb5 /data

11、检测

bash
df -Th

12、开机自启动

永久生效需在/etc/fstab添加配置

bash
/dev/sdb5 /data ext4 defaults 0 0

注意事项

  1. 数据风险:误操作会导致数据丢失,操作前务必确认设备名
  2. 生效需重启:部分操作需要 partprobe 或重启生效
  3. GPT 磁盘:如需操作 GPT 分区表,建议使用 gdiskparted
  4. SSD 对齐:现代 SSD 建议使用 -u=sectors 参数确保对齐

扩展知识

  • 分区后需用 mkfs 格式化文件系统
  • 使用 blkid 查看新分区的 UUID
  • 通过 /etc/fstab 实现自动挂载

GPT磁盘分区流程步骤

1、查看添加硬盘设备/dev/sdc

bash
[root@localhost ~]# ll /dev/sd*
brw-rw----. 1 root disk 8,  0  4月17日 14:30 /dev/sda
brw-rw----. 1 root disk 8,  1  4月17日 14:30 /dev/sda1
brw-rw----. 1 root disk 8,  2  4月17日 14:30 /dev/sda2
brw-rw----. 1 root disk 8,  3  4月17日 14:30 /dev/sda3
brw-rw----. 1 root disk 8, 16  4月17日 14:57 /dev/sdb
brw-rw----. 1 root disk 8, 17  4月17日 14:57 /dev/sdb1
brw-rw----. 1 root disk 8, 21  4月17日 14:59 /dev/sdb5
brw-rw----. 1 root disk 8, 32  4月17日 14:30 /dev/sdc

2、进入交互模式

bash
parted /dev/sdc

3、创建新的磁盘卷标设置gpt

bash
(parted) mklabel                                                          
新的磁盘卷标类型? gpt

4、设置分区名称

bash
(parted) mkpart                                                           
分区名称?  []? yunjisuan

5、设置文件系统类型

bash
文件系统类型?  [ext2]? ext4

6、设置起始点

bash
起始点? 0

7、设置结束点

bash
结束点? 10G                                                              
警告: 所产生的分区没有适当为获得最佳性能而对齐:34s % 2048s != 0s
忽略/Ignore/放弃/Cancel? ignore

8、退出

bash
(parted) q                                                                
信息: 你可能需要 /etc/fstab。

9、分区格式化

bash
[root@localhost ~]# mkfs.ext4 /dev/sdc1
mke2fs 1.47.0 (5-Feb-2023)
创建含有 2441402 个块(每块 4k)和 610800 inode 的文件系统
文件系统 UUID:f07106e3-7c69-4ce3-86de-d1256a770a1b
超级块的备份存储于下列块:
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

正在分配组表:完成                            
正在写入 inode表:完成                            
创建日志(16384 个块):完成
写入超级块和文件系统账户统计信息:已完成

10、查看设备信息

bash
[root@localhost ~]# blkid /dev/sdc1
/dev/sdc1: UUID="f07106e3-7c69-4ce3-86de-d1256a770a1b" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="yunjisuan" PARTUUID="b3bd25a6-360d-4433-ae17-1a37ca039286"

11、创建挂载目录

bash
mkdir /data

12、挂载

bash
mount /dev/sdc1 /data

13、检测挂载

bash
df -Th

14、开机自启动

永久生效需在/etc/fstab添加配置

bash
/dev/sdc1 /data ext4 defaults 0 0

swap交换分区

定义

交换分区是磁盘上的一块区域,可以是一个分区,也可以是一个文件,或者是他们的组合。当系统物理内存不够用时,操作系统会将内存中暂时不用的数据保存到交换分区上,从而腾出内存空间供其他程序使用,相当于一块临时的“虚拟内存”。

作用

  • 释放内存空间 :当物理内存使用完毕后,系统会将一些暂时不用的进程credential 交换到交换分区中,为其他正在运行的进程腾出物理内存空间,避免系统因内存不足而无法正常运行。
  • 提高系统稳定性 :在系统内存紧张的情况下,交换分区可以作为一种应急缓冲,防止因内存耗尽而导致系统崩溃或出现“application is out of memory”等错误,增强了系统的稳定性和可靠性。
  • 平衡内存使用 :通过调整 swappiness 参数,可以控制内核使用交换分区的积极程度,从而平衡系统的内存使用策略,以适应不同的应用场景和性能需求。

配置方法

  • 创建交换分区 :可以使用fdisk等工具对磁盘进行分区操作,创建一个专门用于交换的分区,然后使用mkswap命令将该分区格式化为交换分区格式,例如mkswap /dev/sdb2
  • 创建交换文件 :使用dd命令创建一个指定大小的空文件,如sudo dd if=/dev/zero of=/var/swap bs=1M count=1024创建一个1GB大小的交换文件,再使用mkswap命令将其格式化为交换分区文件,最后使用swapon命令启用该交换文件。
  • 启用交换分区 :对于分区,使用swapon命令即可启用交换分区,如swapon /dev/sdb2。对于文件,同样使用swapon命令启用,如swapon /var/swap
  • 设置开机自动挂载 :编辑/etc/fstab文件,添加相应的挂载信息,使得交换分区或交换文件在系统启动时自动挂载。例如,对于交换分区,可添加UUID=device_UUID none swap defaults 0 0;对于交换文件,可添加/swapfile none swap sw 0 0

注意事项

  • 大小设置 :通常建议交换分区的大小为物理内存的 2 倍左右,但具体大小应根据系统实际负载、运行情况及未来可能的应用来综合考虑。例如,4GB 或 4GB 以下内存的系统,最少需要 2GB 交换分区;大于 4GB 而小于 16GB 内存的系统,最少需要 4GB 交换分区。
  • 性能影响 :由于硬盘的读写速度远低于内存,频繁地使用交换分区会导致系统性能下降,因此在实际使用中应尽量避免过度依赖交换分区,可通过增加物理内存等方式来提升系统性能。
  • 安全与备份 :交换分区中的数据在系统重启后会丢失,因此重要数据不应存储在交换分区中。同时,为了确保系统的正常运行,应定期备份交换分区的相关配置信息。

操作命令

free - 查看内存和交换空间使用情况

free 命令用于显示系统的物理内存和交换空间使用情况,包括总内存、已用内存、空闲内存等信息。

语法格式

bash
free [选项]

输出字段说明

              total        used        free      shared  buff/cache   available
Mem:        8169348     2345232     3412345      123456     2411771     5123456
Swap:       2097148           0     2097148
  • total: 总内存量
  • used: 已使用内存(包括buffers/cache)
  • free: 完全空闲内存
  • shared: 共享内存
  • buff/cache: 缓存和缓冲区使用的内存
  • available: 估计可用于启动新应用的内存

mkswap – 初始化交换分区或文件

mkswap 命令用于将磁盘分区或文件初始化为Linux交换空间(swap area),这是虚拟内存系统的重要组成部分。

bash
mkswap [选项] 设备/文件 [大小]

注意事项

  1. 交换分区/文件创建后需要swapon才能生效

  2. 交换文件大小建议为物理内存的1-2倍

  3. 生产环境建议使用专用交换分区而非文件

  4. 使用free -hswapon --show验证交换空间状态

  5. 永久生效需在/etc/fstab中添加条目:

    bash
    /swapfile none swap sw 0 0

swapon – 启用交换空间

swapon 是 Linux 系统中用于激活交换空间(swap space)的命令,将指定的设备或文件作为虚拟内存使用。通常用于系统内存不足时扩展可用内存。

bash
swapon [选项] [设备/文件]

注意事项

  1. 需要 root 权限执行

  2. 交换文件/分区需先通过 mkswap 初始化

  3. 永久生效需在/etc/fstab添加配置:

    /swapfile none swap sw 0 0
  4. 使用 swapoff 命令可停用交换空间

  5. 生产环境建议交换空间大小为物理内存的1-2倍

swapoff - 停止交换空间

swapoff 是 Linux 系统中用于 停用交换空间(swap space) 的命令,可以释放交换分区或交换文件占用的资源。通常在调整交换空间或维护系统时使用。

bash
swapoff [选项] [设备/文件]

注意事项

  1. 需要 root 权限(使用 sudo 执行)。
  2. 确保系统有足够的内存,否则停用交换空间可能导致 OOM(内存不足)错误。
  3. 永久停用交换空间 需要修改 /etc/fstab,删除或注释掉对应的 swap 行。
  4. 重新启用交换空间 可使用 swapon 命令。

swap交换分区流程

1、查看增加设备

bash
ll /dev/sd*

2、进入磁盘分区交互模式

bash
fdisk /dev/sdb

3、交互模式-添加主分区

bash
命令(输入 m 获取帮助):n
分区类型
   p   主分区 (0个主分区,0个扩展分区,4空闲)
   e   扩展分区 (逻辑分区容器)
选择 (默认 p):

4、交互模式-设置分区号和扇区大小

bash
分区号 (1-4, 默认  1): 
第一个扇区 (2048-20971519, 默认 2048): 
最后一个扇区,+/-sectors +size{K,M,G,T,P} (2048-20971519, 默认 20971519):

5、交互模式-更改分区类型

bash
命令(输入 m 获取帮助):t
已选择分区 1
Hex 代码或别名(输入 L 列出所有代码):82
# 82为Linux swap / So

6、交互模式-查看分区并保存

bash
命令(输入 m 获取帮助):p
命令(输入 m 获取帮助):w

7、格式化交换分区

bash
mkswap /dev/sdb1

8、查看文件系统信息

bash
blkid /dev/sdb1

9、开启交换分区

bash
# 创建挂载目录
mkdir /data
# 激活
swapon /dev/sdb1 /data

10、开机自动挂载

永久生效需在/etc/fstab添加配置

bash
/dev/sdb1 /data none swap sw 0 0