Linux Swap大小

Swap是什么?

Swap是Linux下的虚拟内存分区,内存的交换区,当Linux物理内存不够使用时,,将磁盘空间(SWAP分区)虚拟成内存来使用

Swap详解

对操作系统而言,如果存在物理内存不足的情况,通常使用硬盘空间进行弥补,这也就是我们常看到的虚拟内存技术。Swap空间的主要作用是在物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,这些释放的内存将被保存到swap空间中,供其他应用使用。在针对Linux web服务器的时候,调整swap能提高系统很大的性能。

Swap常见命令

  • 查看当前swap资源: swapon -s
  • 查看系统中Swap: cat /proc/swaps
  • 加载交换分区: swapon swapon /swapfile
  • 卸载交换分区: swapoff swapoff /swapfile
  • 构建swap(格式化)版本: mkswap mkswap /swapfile (重新格式化,通知下File System)
  • 查看swap使用比例 cat /proc/sys/vm/swappiness

创建swap

Linux下可以创建两种类型的交换空间,一种是swap分区,一种是swap文件。前者适合有空闲的分区可以使用,后者适合于没有空的硬盘分区

 经典的Swap设置规则:如果物理内存大小小于2G,设置的Swap分区大小为物理内存的两倍。如果物理内存大小大于等于2G,可以考虑设置Swap分区等于物理内存或者1.5倍内存大小

添加swap文件拓展swap空间

示例操作:在原有1G的交换空间下,通过添加一个9G交换文件,将swap交换文件设置为10G

  1. 查看内存,单位为M,最初swap文件只有1G
    这里写图片描述
  2. 查看磁盘
    这里写图片描述
  3. 查看swap文件列表,只有swapfile一个文件
    这里写图片描述
  4. 创建大小为9G的交换文件swapfile2
    dd命令:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换
    这里写图片描述
  5. 格式化挂载交互分区
    这里写图片描述
  6. 加载启动swap文件
    这里写图片描述
  7. 查看swap列表,两个swapfile文件,其中swapfile2为新增文件
    这里写图片描述

    以上操作在重启系统后swap空间将会失去swapfile ,将swapfile 加入到/etc/fstab 条目将可以使得系统在init进程中调用swapon -a 来自动挂载swapfile ,这样每次机器重启后swapfile 都处于有效的swap空间。

  8. 写入/etc/fstab
在/etc/fstab文件中加入下面这样一行:
/usr/swap/swapfile                  swap                    swap    defaults        0 0

备注:
这个dd命令很好用,可以用来把大文件分割成小的文件组,利用cat可以将那些小文件组重新组合成原来的大文件。

VPS

VPS(Virtual Private Server 虚拟专用服务器)技术,将一部服务器分割成多个虚拟专享服务器的优质服务。每个VPS都可分配独立公网IP地址、独立操作系统、独立超大空间、独立内存、独立执行程序和独立系统配置等
VPS只有一个根分区,没有swap交换分区。VPS内存不大,于是,我为其增加了一个swap交换文件。

  1. 进入一个目录
    cd /var/

  2. 获取256M的文件块:
    dd if=/dev/zero of=swapfile bs=1024 count=262144

  3. 创建swap文件
    /sbin/mkswap swapfile

  4. 激活swap文件
    /sbin/swapon swapfile

  5. 查看一下swap是否正确
    /sbin/swapon -s

  6. 加到fstab文件中让系统引导时自动启动
    vi /etc/fstab

/var/swapfile swap swap defaults 0 0

调整swap使用比例

/proc/sys/vm/swappiness,值默认值是60, swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。现在服务器的内存动不动就是上百G,或者云主机架构,机器io太慢会极大的影响机器性能,所以我们可以把这个参数值设置的低一些,让操作系统尽可能的使用物理内存,降低系统对swap的使用,从而提高系统的性能。另:在大内存服务器中我们需要设置这个值为0,尤其是在MySQL服务器上)

  • 临时修改方案:
# sysctl vm.swappiness=10
vm.swappiness = 10
# cat /proc/sys/vm/swappiness
10

这里我们的修改已经生效,但是如果我们重启了系统,又会变成60.

  • 永久修改方案:
在/etc/sysctl.conf 文件里添加如下参数:
vm.swappiness=10
或者:
# echo 'vm.swappiness=10'>> /etc/sysctl.conf
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值