# linux 分区 {#linux-分区}
本文讲述如何为现有的 linux 系统创建 swap 虚拟内存。swap 虚拟内存可以在安装操作系统的过程中创建,也可以安装完操作系统后通过命令行手工创建。swap 虚拟内存就像是后备箱,当物理内存不够用时,系统会从物理内存中腾出一些空间,挪出访问频率较低的数据到 swap 虚拟内存中,以保证系统正常运行。
# 1. linux swap 虚拟内存的分类 {#_1-linux-swap-虚拟内存的分类}
Linux 下可以创建两种类型的 swap 虚拟内存:swap 分区和 swap 文件。
根据实际情况任选其一即可。
| 类型 | 优点 | 缺点 | |---------|-----------------------------------------------------------------------------------------------|-----------------------------------------| | swap 分区 | swap 分区上面由于没有文件系统,所以相当于内核直接访问连续的磁盘空间,效率相对要高点 | 调整 swap 空间大小不方便,因为 swap 空间大小取决于绑定的分区的大小 | | swap 文件 | 1. 灵活,随时可以增加或移除 swap 文件, 可以灵活调整 swap 空间大小。 2. swap 文件可以有多个,如果当前的 swap 空间不够用,可以继续创建新的 swap 文件。 | swap 文件放在指定分区的文件系统里面,所以有可能受文件系统性能的影响。 |
# 2. 创建 swap 分区 {#_2-创建-swap-分区}
可以在安装操作系统的分区创建过程中配置。
也可以安装完操作系统后,手工创建,但是需要有空余的分区可用才行。手工创建方法请自行搜索。
若安装操作系统时没有创建 swap 分区, 又没有额外的空闲分区用于创建 swap,那么就只能采用swap 文件的方式了。
# 3. 创建 swap 文件 {#_3-创建-swap-文件}
# 3.1 查看当前系统是否配置 swap 空间 {#_3-1-查看当前系统是否配置-swap-空间}
执行 free -m 命令,显示结果表明当前系统没有配置 swap 空间
[root@iZ2ze7011et12xez70sp3dZ ~]# free -m
total used free shared buff/cache available
Mem: 1838 1338 86 0 413 330
Swap: 0 0 0
[root@iZ2ze7011et12xez70sp3dZ ~]#
# 3.2 创建 swap 文件 {#_3-2-创建-swap-文件}
执行如下命令, 创建 swap 文件
dd if=/dev/zero of=/swap1 bs=1M count=2048
[root@iZ2ze7011et12xez70sp3dZ ~]# dd if=/dev/zero of=/swap1 bs=1M count=2048
记录了2048+0 的读入
记录了2048+0 的写出
2147483648字节(2.1 GB)已复制,20.0148 秒,107 MB/秒
[root@iZ2ze7011et12xez70sp3dZ ~]#
[root@iZ2ze7011et12xez70sp3dZ ~]# ll /swap1 -h
-rw-r--r-- 1 root root 2.0G 10月 15 15:59 /swap1
[root@iZ2ze7011et12xez70sp3dZ ~]#
可以看出,已经创建了大小为 2G 的 swap 文件,大小可以根据实际需要做调整。
提示
-
dd 命令的解释
dd 命令用于创建 1 个文件, if=/dev/zero 表示输入内容为空内容即 0,of=/swap1 表示生成文件的路径, bs=1M 表示 1 次读写的缓冲区大小, count 代表读写的次数。 -
建议 swap 空间大小设置为内存的 2 倍
# 3.3 格式化 swap 文件为 swap 格式 {#_3-3-格式化-swap-文件为-swap-格式}
将生成的 swap 文件设置为 swap 格式。 执行如下命令:
mkswap /swap1
[root@iZ2ze7011et12xez70sp3dZ ~]# mkswap /swap1
正在设置交换空间版本 1,大小 = 2097148 KiB
无标签,UUID=5a4e9805-a1fb-4c91-af99-5d65c7f20e45
[root@iZ2ze7011et12xez70sp3dZ ~]#
# 3.4 激活 swap 文件 {#_3-4-激活-swap-文件}
执行如下命令,临时 激活 swap 文件。
swapon /swap1
[root@iZ2ze7011et12xez70sp3dZ ~]# swapon /swap1
swapon: /swap1:不安全的权限 0644,建议使用 0600。
[root@iZ2ze7011et12xez70sp3dZ ~]#
提示
若想永久激活 swap 文件,需要修改/etc/fstab 文件,补充如下内容。
/swap1 swap swap defaults 0 0
那么,系统启动后,会自动激活 swap 文件。
# 3.5 验证 {#_3-5-验证}
提示
swapon -s 用于可以列出每个 swap 文件的大小,而 free -m 用于查看系统整体的 swap 空间大小。
# 3.5.1 执行 swapon -s,列出当前系统的所有 swap 文件。 {#_3-5-1-执行-swapon-s-列出当前系统的所有-swap-文件。}
[root@iZ2ze7011et12xez70sp3dZ ~]# swapon -s
文件名 类型 大小 已用 权限
/swap1 file 2097148 0 -2
[root@iZ2ze7011et12xez70sp3dZ ~]#
# 3.5.2 查看系统总的 swap 虚拟内存大小 {#_3-5-2-查看系统总的-swap-虚拟内存大小}
执行 free -m,确认系统已经成功创建了 2G 的 swap 虚拟内存。
[root@iZ2ze7011et12xez70sp3dZ ~]# free -m
total used free shared buff/cache available
Mem: 1838 1342 63 0 431 324
Swap: 2047 0 2047
[root@iZ2ze7011et12xez70sp3dZ ~]
# 4. 删除 swap 文件 {#_4-删除-swap-文件}
需要使用 swapoff 命令停用 swap 文件,再使用 rm 删除 swap 文件。