Appearance
磁盘结构
物理结构
- 机械硬盘(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、SAS | SATA、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 SCSI | SATA、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/sdXN
(X
是磁盘字母,N
是分区号,1~4)- 例如:
/dev/sda1
(第一块硬盘的第一个主分区)。
- 例如:
- 逻辑分区:
/dev/sdXN
(N
从 5 开始)- 例如:
/dev/sda5
(第一块硬盘的第一个逻辑分区)。
- 例如:
磁盘命名的区别
设备名 | 接口类型 | 典型用途 |
---|---|---|
/dev/sda | SATA/SCSI/SAS | 第一块普通硬盘(系统盘) |
/dev/sdb | SATA/SCSI/SAS | 第二块普通硬盘(数据盘) |
/dev/nvme0n1 | NVMe SSD | 高速固态硬盘(现代电脑) |
/dev/hda | IDE(旧式) | 老式机械硬盘 |
磁盘分区管理(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) |
何时使用主分区?
- 系统关键分区(如
/boot
、/
、/efi
等),因为某些引导加载程序(如 GRUB)可能要求这些分区是主分区。 - 分区数量 ≤ 4,不需要额外逻辑分区时。
- 需要直接引导的分区(如 Windows 的
C:
盘通常必须是主分区)。
示例:
/dev/sda1
→/boot
(主分区)/dev/sda2
→/
(主分区)/dev/sda3
→/home
(主分区)/dev/sda4
→ 扩展分区(用于逻辑分区)
何时使用逻辑分区?
- 需要超过 4 个分区(因为 MBR 只允许 4 个主分区)。
- 数据存储分区(如
/data
、/backup
等非关键分区)。 - 不需要引导的分区(逻辑分区通常不用于
/boot
或/
)。
示例:
/dev/sda4
→ 扩展分区(不直接使用)/dev/sda5
→/data
(逻辑分区)/dev/sda6
→/backup
(逻辑分区)/dev/sda7
→swap
(逻辑分区)
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 | 分区表类型(gpt 或 dos (即 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) |
注意事项
- 数据风险:误操作会导致数据丢失,操作前务必确认设备名
- 生效需重启:部分操作需要
partprobe
或重启生效 - GPT 磁盘:如需操作 GPT 分区表,建议使用
gdisk
或parted
- 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/nvme0n1p4
→swap
/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 |
注意事项
- 数据安全:
- 操作前务必备份数据
- 调整分区大小需文件系统支持(如
ext4
/xfs
)
- 单位规范:
- 建议使用 MiB/GiB 避免歧义(
1MiB=1048576B
) - 起始位置从
1MiB
开始以保证对齐
- 建议使用 MiB/GiB 避免歧义(
- 与文件系统的关系:
parted
只操作分区表,格式化需用mkfs
- 调整大小后可能需要
resize2fs
/xfs_growfs
MBR vs GPT 对比表
对比项 | MBR | GPT |
---|---|---|
最大磁盘容量 | 2TB | 9.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
注意事项
- 数据风险:误操作会导致数据丢失,操作前务必确认设备名
- 生效需重启:部分操作需要
partprobe
或重启生效 - GPT 磁盘:如需操作 GPT 分区表,建议使用
gdisk
或parted
- 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 [选项] 设备/文件 [大小]
注意事项
交换分区/文件创建后需要
swapon
才能生效交换文件大小建议为物理内存的1-2倍
生产环境建议使用专用交换分区而非文件
使用
free -h
或swapon --show
验证交换空间状态永久生效需在
/etc/fstab
中添加条目:bash/swapfile none swap sw 0 0
swapon – 启用交换空间
swapon
是 Linux 系统中用于激活交换空间(swap space)的命令,将指定的设备或文件作为虚拟内存使用。通常用于系统内存不足时扩展可用内存。
bash
swapon [选项] [设备/文件]
注意事项
需要 root 权限执行
交换文件/分区需先通过
mkswap
初始化永久生效需在
/etc/fstab
添加配置:/swapfile none swap sw 0 0
使用
swapoff
命令可停用交换空间生产环境建议交换空间大小为物理内存的1-2倍
swapoff - 停止交换空间
swapoff
是 Linux 系统中用于 停用交换空间(swap space) 的命令,可以释放交换分区或交换文件占用的资源。通常在调整交换空间或维护系统时使用。
bash
swapoff [选项] [设备/文件]
注意事项
- 需要 root 权限(使用
sudo
执行)。 - 确保系统有足够的内存,否则停用交换空间可能导致 OOM(内存不足)错误。
- 永久停用交换空间 需要修改
/etc/fstab
,删除或注释掉对应的swap
行。 - 重新启用交换空间 可使用
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