创建交换空间所需的交换文件是一个普通的文件,但是,创建交换文件与创建普通文件不同,必须通过dd命令来完成,同时这个文件必须位于本地硬盘上,不能在网络文件系统(NFS)上创建swap交换文件。例如:
[root@localhost ~]# dd if=/dev/zero of=/data/swapfile bs=1024 count=65536 # if=输入文件(/dev/zero提供无限零数据流),of=输出文件(指定交换文件路径),bs=设置读写块大小(1024字节=1KB),count=复制块数量(65536个块,总大小=64MB)
65536+0 records in
65536+0 records out
if=输入文件,或者设备名称。
of=输出文件或者设备名称。
ibs=bytes 表示一次读入bytes 个字节(即一个块大小为 bytes 个字节)。
obs=bytes 表示一次写bytes 个字节(即一个块大小为 bytes 个字节)。
bs=bytes,同时设置读写块的大小,以bytes为单位,此参数可代替 ibs 和 obs。
count=blocks 仅拷贝blocks个块。
激活和使用swap
首先通过mkswap命令指定作为交换空间的设备或者文件:
[root@localhost ~]# mkswap /data/swapfile # 将普通文件格式化为交换空间格式,写入swap签名
通过swapon命令激活swap:
[root@localhost ~]# /usr/sbin/swapon /data/swapfile # 激活交换文件,系统开始使用该交换空间


dd 和 fdisk 在创建 swap 时的核心区别:
| 维度 | dd 命令 | fdisk 命令 |
|---|---|---|
| 操作对象 | 文件(普通文件) | 磁盘/分区(/dev/sdb、/dev/sda1) |
| 本质 | 创建一个内容为0的普通文件 | 修改磁盘分区表,划分出一个独立分区 |
| 大小 | 任意指定(64MB、1GB、10GB) | 受磁盘剩余空间和分区表限制 |
| 是否需要格式化 | mkswap 格式化文件 | mkswap 格式化分区 |
| 激活方式 | swapon /data/swapfile | swapon /dev/sdb1 |
| 永久挂载 | /etc/fstab 写文件路径 | /etc/fstab 写设备路径或UUID |
| 性能 | 略低(通过文件系统层) | 略高(直接访问块设备) |
| 灵活性 | 高(随时增删改,无需重分区) | 低(大小固定,调整需删分区) |
| 适用场景 | 临时扩容、云主机无法分区时 | 物理机、长期固定交换分区 |
一句话本质
- dd = 造一个“交换文件”(像一个装满0的大箱子,放在现有文件系统里)
- fdisk = 划一个“交换分区”(从磁盘上切一块独立区域,不经过文件系统)
直观对比示例
方式1:dd 创建交换文件
# 1. 生成文件
dd if=/dev/zero of=/swapfile bs=1M count=1024 # 1GB文件
# 2. 格式化
mkswap /swapfile
# 3. 激活
swapon /swapfile
# 4. 查看
swapon --show
# /swapfile file 1048572 0 -2
# ^ 类型是 file
方式2:fdisk 创建交换分区
# 1. 分区
fdisk /dev/sdb
# n → p → 1 → 回车 → +1G → t → 82 → w
# 2. 通知内核
partprobe /dev/sdb
# 3. 格式化
mkswap /dev/sdb1
# 4. 激活
swapon /dev/sdb1
# 5. 查看
swapon --show
# /dev/sdb1 partition 1048572 0 -2
# ^ 类型是 partition
如何选择?
| 场景 | 推荐方式 | 原因 |
|---|---|---|
| 临时加个swap应急 | dd 文件 | 不用分区,用完就删,灵活 |
| 云服务器(不能重启) | dd 文件 | 无法修改分区表,文件方案唯一解 |
| 物理机/长期固定 | fdisk 分区 | 性能略好,独立隔离 |
| 已有空闲分区 | fdisk 分区 | 现成的直接用 |
| 磁盘已无空闲空间 | dd 文件 | 只要硬盘还有容量,文件就能建 |
终极总结
| 命令 | 本质 | 类比 |
|---|---|---|
| dd | 在文件系统里创建一个文件当swap | 在房间里放个水箱当蓄水池 |
| fdisk | 从磁盘上划一个独立区域当swap | 在房子外专门建个水池 |
两者最终都被 mkswap + swapon 激活使用,殊途同归。
dd 适合灵活应急,fdisk 适合规范部署。
发表回复