得劲

为小内存VPS添加Swap/交换内存/虚拟内存
这两天virmach5刀年付KVM小鸡着实火了一把。小内存鸡也并不是不能用,几年前大家都是小内存玩得6的飞起。其实...
扫描右侧二维码阅读全文
13
2018/08

为小内存VPS添加Swap/交换内存/虚拟内存

这两天virmach5刀年付KVM小鸡着实火了一把。小内存鸡也并不是不能用,几年前大家都是小内存玩得6的飞起。其实小内存VPS可以通过添加SWAP交换分区来给VPS提高一下性能。

购买链接


优惠码LETAUGUST2018可以优惠5$

128M 512M 1024M

128MB
10/yr
5GB Disk (SSD RAID 10)
250GB BW @ 1Gbps
1 IPv4
SolusVM/KVM
购买
512MB
15/yr
10GB Disk (SSD RAID 10)
375GB BW @ 1Gbps
1 IPv4
SolusVM/KVM
购买
1GB
20/yr
20GB Disk (SSD RAID 10)
500GB BW @ 1Gbps
1 IPv4
SolusVM/KVM)
购买
优惠码 LETAUGUST2018 LETAUGUST2018 LETAUGUST2018

下面介绍一下为小内存鸡添加SWAP的方法KVM/OpenVZ/XEN

准备工作

查看当前硬盘使用

命令:df -m

~#df -m
Filesystem                                             1M-blocks  Used Available Use% Mounted on
rootfs                                                     14621  1117     12763   9% /
udev                                                          10     0        10   0% /dev
tmpfs                                                         50     1        50   1% /run
/dev/disk/by-uuid/12dc23                                   14621  1117     12763   9% /
tmpfs                                                          5     0         5   0% /run/lock
tmpfs                                                        202     0       202   0% /run/shm

查看当前SWAP大小

命令:#free -m

 ~# free -m
             total       used       free     shared    buffers     cached
Mem:           256        232         23          2          0        181
-/+ buffers/cache:         51        204
Swap:          128          0        128

根据剩余硬盘大小来按需分配swap

KVM添加SWAP方法

创建 SWAP文件

dd if=/dev/zero of=/var/swap-plus bs=1024 count=512000

bs 是字节数,这里是1024 B,count 是blocks块数,of 是要输出的SWAP交换区文件,可以自定
所以: bs=1024 B=1 KB,512000 * 1 KB=512000 KB / 1024 ≈ 512 MB

~# dd if=/dev/zero of=/var/swap-plus bs=1024 count=512000
512000+0 records in
512000+0 records out
524288000 bytes (524 MB) copied, 4.09314 s, 128 MB/s

查看文件是否创建成功,大小是否正确(因为按1000计算,所以会不足 512MB)

~# du -ah /var|grep "swap-plus"
501M    /var/swap-plus

建立 SWAP文件

~# mkswap /var/swap-plus
Setting up swapspace version 1, size = 511996 KiB
no label, UUID=c48fef60-7d49-450c-bfd1-7a7826de7cdd

启用 SWAP文件

~#swapon /var/swap-plus

这里无任何提示,查看是否正常:

~#swapon -s
Filename                Type        Size    Used    Priority
/dev/vda2                               partition   131068  0   -1
/var/swap-plus                         file     511996  0   -2

~#free -m
             total       used       free     shared    buffers     cached
Mem:           244        240          4          0         34        175
-/+ buffers/cache:         30        214
Swap:          627          0        627

设置开机自动加载

echo "/var/swap-plus swap swap defaults 0 0" >> /etc/fstab

取消和删除

取消 SWAP文件
swapoff /var/swap-plus
取消 开机启动加载
sed -i "/swap-plus/d" /etc/fstab
取消后,可以再 free -m 查看一下SWAP,确定取消了,那么就可以删除 SWAP文件了。
删除 SWAP文件
rm -rf /var/swap-plus

OpenVZ 添加SWAP的方法

OpenVZ的小鸡添加SWAP需要用脚本来进行

创建脚本

vi swap-plus.sh
脚本内容如下:

#!/bin/bash
#Addition SWAP For OpenVZ
echo 'Start adding SWAP space ......';
SWAP="${1:-512}";
NEW="$[SWAP*1024]";
TEMP="${NEW//?/ }";
OLD="${TEMP:1}0";
umount /proc/meminfo 2> /dev/null
sed "/^Swap\(Total\|Free\):/s,$OLD,$NEW," /proc/meminfo > /etc/fake_meminfo
mount --bind /etc/fake_meminfo /proc/meminfo
echo 'Add the ready!';

其中512为SWAP的大小

脚本权限

chmod  +x swap-plus.sh

执行脚本

sh ./swap-plus.sh

执行完毕可以检查是否成功free -m

~# free -m
             total       used       free     shared    buffers     cached
Mem:           256        232         23          2          0        181
-/+ buffers/cache:         51        204
Swap:          512          0        512

脚本自启动

然后修改 /etc/rc.local 在对应位置加入 /root/swap-plus.sh 再重启系统,free -m查看。

Xen 添加SWAP的方法

XEN和KVM的方法应该是一样的。这个没有环境,所以没有测试过。

进入一个目录

cd /var/

获得SWAP文件:

dd if=/dev/zero of=swapfile bs=1024 count=262144

创建swap文件

/sbin/mkswap swapfile

激活swap文件

/sbin/swapon swapfile

查看一下swap是否正确:

/sbin/swapon -s

自动启动

vi /etc/fstab

在末尾增加以下内容

/var/swapfile swap swap defaults 0 0

也可以执行如下命令,感觉这样更方便

echo "/var/swapfile swap swap defaults 0 0" >>/etc/fstab

DD命令的参数介绍

功能:把指定的输入文件拷贝到指定的输出文件中,并且在拷贝过程中可以进行格式转换。可以用该命令实现DOS下的diskcopy命令的作用。先用dd命令把软盘上的数据写成硬盘的一个寄存文件,再把这个寄存文件写入第二张软盘上,完成diskcopy的功能。需要注意的是,应该将硬盘上的寄存文件用rm命令删除掉。系统默认使用标准输入文件和标准输出文件。

语法:dd [选项]
if = 输入文件(或设备名称)。
of = 输出文件(或设备名称)。
ibs = bytes 一次读取bytes字节,即读入缓冲区的字节数。
skip = blocks 跳过读入缓冲区开头的ibs*blocks块。
obs = bytes 一次写入bytes字节,即写入缓冲区的字节数。
bs = bytes 同时设置读/写缓冲区的字节数(等于设置ibs和obs)。
cbs = byte 一次转换bytes字节。
count=blocks 只拷贝输入的blocks块。

参考连接

1.Linux 添加 SWAP 交换内存/虚拟内存 的简单方法
2.给小内存VPS添加SWAP交换分区(Xen & OpenVZ)

Last modification:August 21st, 2018 at 04:56 pm
If you think my article is useful to you, please feel free to appreciate

Leave a Comment

2 comments

  1. mjj

    这就很6了,诺基鸭mjj

    1. 得劲
      @mjj

      哪位大佬大驾光临,有失远迎.|´・ω・)ノ