41

CentOS 7系统增加swap

 4 years ago
source link: https://www.tuicool.com/articles/UvE32qY
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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大小的文件:

    # fallocate
    sudo fallocate -l 8G /swap
    # dd
    sudo dd bs=1GB count=8 if=/dev/zero of=/swap

    由于 dd 有复制的过程执行较慢,实践中建议用 fallocate

  2. swap文件会存放内存中的数据,出于安全考虑应限制其它用户的访问: sudo chmod 0600 /swap ;
  3. 将文件格式化为swap文件: sudo mkswap /swap
  4. 启用该swap文件: sudo swapon /swap ;如果不想使用swap,可用 swapoff 命令卸载: sudo swapoff /swap
  5. 如果希望系统启动后自动加载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/community/tutorials/how-to-add-swap-on-centos-7

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK