51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

linux创建swap虚拟内存

# 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 文件。

赞(2)
未经允许不得转载:工具盒子 » linux创建swap虚拟内存