CentOS-7系统增加swap

49次阅读

共计 1822 个字符,预计需要花费 5 分钟才能阅读完成。

转载请注明文章出处:CentOS 7 系统增加 swap

swap 是位于磁盘上的特殊文件(或分区),属于“虚拟内存”的一部分。通俗点就是内存的备胎,内存充足的情况下,基本上没 swap 什么事(和设置有关);内存不够用时系统便将内存中的部分数据腾挪到 swap 中,为正在运行的程序腾出内存。

使用 swap 能让系统运行更多或更大型的程序,但由于 swap 的读写速度远逊于内存,频繁使用 swap 可能让系统和程序有延迟卡顿。

大内存计算机 swap 有必要吗?

对于内存较小的计算机,swap 是非常有必要的。swap 的存在能让执行吃内存程序变得可能,执行慢总比不能运行或者奔溃强。但现代计算机动辄 8G 以上的内存,如非运行大型或专业软件,内存足够日常使用。这种情况下,swap 有存在的必要吗?

答案还是看使用场景。个人电脑上运行桌面版 Linux 并且开启休眠功能,则应该 划分不小于内存的 swap 分区;如果是内存足够大且常年不关机的服务器,没有 swap 也毫无问题。

ssd 硬盘要不要设置 swap?

之前的 ssd 硬盘有读写寿命的问题,因此不建议将 swap 文件或分区放到 ssd 硬盘上。

目前的 ssd 硬盘技术已经升级换代更智能,如果有 swap 需求,放在 ssd 硬盘上也没什么问题。

swap 设置多大好?

如果开启休眠功能,应该划分 swap 分区,并且分区大小不能小于内存,建议的值是“内存大小 +2G”。

不用休眠功能的服务器,swap 可以为文件,一种确定 swap 大小的实用方法是:1G 内存及以下,swap 大小为内存的两倍;2-4G 内存,与内存同等大小;5-16G 内存,swap 可固定为 4G;17-32G 内存,8G swap;33 G 及以上,固定为 16G swap。

上述方法不绝对,有特殊需求可酌情增减 swap 大小。

怎样增加 swap?

安装操作系统时候可以分区(单独挂载点)形式指定 swap,也可以在系统安装完成后动态添加和删除。

查看 swap

free命令可以查看系统 活动的 swap信息,例如:

$ free -m
# 输出如下
#               total        used        free      shared  buff/cache   available
# Mem:           7976        4979         328         124        2669        2703
# Swap:             0           0           0

第二行是 swap 信息,可以看到没有活动的 swap。

也可以用 swapon 命令查看活动的 swap,例如:

$ swapon -s
# 没有 swap 信息,所以无输出
# 有 swap 的输出为
# Filename              Type        Size    Used    Priority
# /swap                                     file    2097148 281052  -2

增加 swap

假设我们打算运行一个非常占用内存的程序,8G 物理内存不够,便可借助 swap 增加系统可用的 虚拟内存。操作方法如下:

  1. 选定或创建一个作为 swap 的文件(也可以用分区),常用创建指定大小文件的命令有 fallocatedd。例如创建一个 8G 大小的文件:

    <pre># fallocate

sudo fallocate -l 8G /swap

dd

sudo dd bs=1GB count=8 if=/dev/zero of=/swap
</pre>


由于 `dd` 有复制的过程执行较慢,实践中建议用 `fallocate`;
  1. swap 文件会存放内存中的数据,出于安全考虑应限制其它用户的访问:sudo chmod 0600 /swap;
  2. 将文件格式化为 swap 文件:sudo mkswap /swap
  3. 启用该 swap 文件:sudo swapon /swap;如果不想使用 swap,可用 swapoff 命令卸载:sudo swapoff /swap
  4. 如果希望系统启动后自动加载 swap 文件,在 /etc/fstab 文件增加一行:/swap swap swap sw 0 0

增加 swap 后,可用 swapon -sfree -m命令查看 swap 信息。

swap 相关设置

和 swap 最直接相关,也是影响系统性能的一个设置参数便是 vm.swappiness。其值是 0 -100 的整数,指示内存用掉 百分之多少 时开始使用 swap。100 表示尽可能使用 swap,0 则表示只有物理内存不够时才用上 swap 备胎。对于服务器,建议 10-30 之间。

设置和更改 swappiness 的命令是:sudo sysctl vm.swappiness=10。该命令只对当前系统有效,系统重启后又恢复默认值。要想设置永久生效,在 /etc/sysctl.conf 中增加或更改对应的设置行:vm.swappiness = 10

参考

  1. https://www.digitalocean.com/…

正文完
 0