如何在linux的环境中,创建swap内存?

发布时间 2023-09-15 10:39:59作者: Zhai_David

背景说明

 

swap内存是系统中的临时内存,或者说,用磁盘的文件空间,当做物理内存来使用。主要是,为了解决一些系统,物理内存不够的情况,可以用swap内存作为一些补充。

但是要注意,swap内存的效率是非常的低的,如果应用对内存有足够的需求,可以考虑增加物理内存来提升性能。

通过下面的内容,你将会知道,如何在centos 7的环境中,创建、格式化、挂载swap内存。

 

创建swap内存的过程

 

  • 查看当前的swap的挂载情况
swapon -s

 

  • 也可以,通过free查看swap的内存情况
[root@nccztsjb-node-22 ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           7631         150        6896          16         584        7205
Swap:             0           0           0
[root@nccztsjb-node-22 ~]# 

通过以上的输出结果,可以知道,目前机器的swap内存是0的。

 

  • 查看主机的磁盘空间,找到一个合适的位置存放swap文件
[root@nccztsjb-node-22 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda2        49G  3.9G   43G   9% /
devtmpfs        3.8G     0  3.8G   0% /dev
tmpfs           3.8G     0  3.8G   0% /dev/shm
tmpfs           3.8G   17M  3.8G   1% /run
tmpfs           3.8G     0  3.8G   0% /sys/fs/cgroup
/dev/vda1       477M  136M  313M  31% /boot
tmpfs           764M     0  764M   0% /run/user/0
[root@nccztsjb-node-22 ~]# 

通过上面的输出结果,可以知道,根目录 / ,存在可用的空间,当然也可以选择挂载的磁盘。

 

  • 创建swap文件
dd if=/dev/zero of=/swapfile count=20480 bs=1MiB
  • 这里面的块大小参数bs=1MiB,也就是1M。
  • count表示这样的块的个数,目前是20480,也就是:20480 * 1M = 20G
  • 如果要调整swap文件的大小,修改count的参数值,就可以了。

注意:不要使用fallocate命令创建文件,这样的文件,是无法进行挂载的。

 

查看创建的文件

[root@nccztsjb-node-22 ~]# ls -l /swapfile 
-rw-r--r-- 1 root root 21474836480 Sep 15 10:17 /swapfile
[root@nccztsjb-node-22 ~]# 

 

  • 修改文件的权限
chmod 600 /swapfile

确保,只有root用户能够读取这个文件。

[root@nccztsjb-node-22 ~]# ls -l /swapfile 
-rw------- 1 root root 21474836480 Sep 15 10:17 /swapfile
[root@nccztsjb-node-22 ~]# 

 

  • 格式化swap文件
mkswap -f /swapfile

 

  • 挂载swap文件
swapon /swapfile

 

  • 检查swap的挂载情况
[root@nccztsjb-node-22 ~]# swapon -s
Filename                                Type            Size    Used    Priority
/swapfile                               file    20971516        0       -1
[root@nccztsjb-node-22 ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           7631         166         137          16        7327        7131
Swap:         20479           0       20479
[root@nccztsjb-node-22 ~]# 

通过上面的查询结果,知道,swap已经成功的挂载了。

 

  • 设置swap文件开机自动挂载

这个配置是手动的进行挂载,当服务器重启之后,配置就丢失了,需要重新的挂载。

这里面,设置开机自动挂载。

echo "/swapfile   swap    swap    sw  0   0" >> /etc/fstab

 

执行过程

[root@nccztsjb-node-22 ~]# echo "/swapfile   swap    swap    sw  0   0" >> /etc/fstab
[root@nccztsjb-node-22 ~]# cat !$
cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Fri Jun 22 08:49:12 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=6475aff8-0ed4-4a56-bddd-fdc303b5b9c1 /                       ext4    defaults        1 1
UUID=fc99d9d7-58f0-4605-af4f-8127edf6fb9b /boot                   ext4    defaults        1 2
/swapfile   swap    swap    sw  0   0
[root@nccztsjb-node-22 ~]# 

通过上面的步骤,就实现了swap内存文件的创建、格式化、挂载和开机自动启动。

 

就通过物理文件的方式,间接的增加了系统的内存大小。