【Linux】swap分区简介及空间增加方式

swap分区简介

Swap分区在系统的物理内存不够用的时候,把硬盘空间中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap分区中,等到那些程序要运行时,再从Swap分区中恢复保存的数据到内存中。

如果Swap空间用完,则服务进程无法启动,通常会出现“application is out of memory”的错误,严重时会造成服务进程的死锁。因此Swap空间的分配是很重要的。

通常情况下,Swap空间应大于或等于物理内存的大小,最小不应小于64M,通常Swap空间的大小应是物理内存的2-2.5倍。但根据不同的应用,应有不同的配置:如果是小的桌面系统,则只需要较小的Swap空间,而大的服务器系统则视情况不同需要不同大小的Swap空间。特别是数据库服务器和Web服务器,随着访问量的增加,对Swap空间的要求也会增加,具体配置参见各服务器产品的说明。

另外,Swap分区的数量对性能也有很大的影响。因为Swap交换的操作是磁盘IO的操作,如果有多个Swap交换区,Swap空间的分配会以轮流的方式操作于所有的Swap,这样会大大均衡IO的负载,加快Swap交换的速度。如果只有一个交换区,所有的交换操作会使交换区变得很忙,使系统大多数时间处于等待状态,效率很低。用性能监视工具就会发现,此时的CPU并不很忙,而系统却慢。这说明,瓶颈在IO上,依靠提高CPU的速度是解决不了问题的。

增加swap空间

一、 新增磁盘格式化为swap文件系统格式

1. 操作系统添加磁盘并分区

过程略...

 

2. 格式化/dev/sdb1 为swap格式

[root@drz ~]# mkswap /dev/sdb1

Setting up swapspace version 1, size = 5237152 KiB

no label, UUID=a27052be-af29-4b7b-b2ea-dd98cea07187

 

3. 启用swap空间

[root@drz ~]# free -m

             total       used       free     shared    buffers     cached

Mem:          1990        291       1699          0          7        106

-/+ buffers/cache:        177       1813

Swap:         4097          0       4097

##启用swap空间

[root@drz ~]# swapon /dev/sdb1

##验证增加的swap空间

[root@drz ~]# free -m

             total       used       free     shared    buffers     cached

Mem:          1990        295       1695          0          7        106

-/+ buffers/cache:        181       1809

Swap:         9212          0       9212


 

4.设置自动挂载

[root@drz ~]# vi /etc/fstab

tmpfs                   /dev/shm                tmpfs   defaults        0 0

devpts                  /dev/pts                devpts  gid=5,mode=620  0 0

sysfs                   /sys                    sysfs   defaults        0 0

proc                    /proc                   proc    defaults        0 0

/dev/sdb1               swap                    swap    defaults        0 0

 

二、 从已有磁盘中划分swap空间

1. 创建swap文件

[root@drz ~]# dd if=/dev/zero of=/home/swapfile bs=1M count=1024

1024+0 records in

1024+0 records out

1073741824 bytes (1.1 GB) copied, 23.5135 s, 45.7 MB/s

##if 表示 infile,of 表示 outfile,bs=1M 代表增加的模块大小,count=1024 代表 1024 个模块,也就是 1G 空间

 

2. 将swapfile设置为swap分区文件

[root@drz ~]# mkswap /home/swapfile

mkswap: /home/swapfile: warning: don't erase bootbits sectors

        on whole disk. Use -f to force.

Setting up swapspace version 1, size = 1048572 KiB

no label, UUID=6d05e7ef-20fe-4464-ac24-e22433343e26

 

3. 激活swap分区文件

##查看激活前swap大小

[root@drz ~]# free -m

             total       used       free     shared    buffers     cached

Mem:          1990       1354        636          0          8       1130

-/+ buffers/cache:        215       1775

Swap:         9212          0       9212

 

##激活文件

[root@drz ~]# swapon /home/swapfile

 

##验证增加情况

[root@drz ~]# free -m

             total       used       free     shared    buffers     cached

Mem:          1990       1355        635          0          8       1130

-/+ buffers/cache:        216       1774

Swap:        10236          0      10236


 

4.设置自动挂载

[root@drz ~]# vi /etc/fstab

[root@drz ~]# vi /etc/fstab

tmpfs                   /dev/shm               tmpfs   defaults          0 0

devpts                  /dev/pts               devpts  gid=5,mode=620    0 0

sysfs                   /sys                    sysfs   defaults         0 0

proc                    /proc                   proc    defaults         0 0

/home/swapfile          swap                    swap    defaults         0 0