Add Swap on Ubuntu 14.04(ali vps) - WBowam/wbowam.github.com GitHub Wiki

Date:2015-06-20
Title: Add Swap on Ubuntu 14.04
Tags: Ubuntu,Swap
Category:IT

情景

我有一台阿里vps,512M内存,20G磁盘。

内存不够用,想🈹4G磁盘做SWAP。

磁盘里有数据,不能格式化。

具体情况如下 tulpar@ali ~ df -hl

Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        20G   17G  2.6G  87% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
udev            234M  4.0K  234M   1% /dev
tmpfs            49M  824K   49M   2% /run
none            5.0M     0  5.0M   0% /run/lock
none            245M     0  245M   0% /run/shm
none            100M     0  100M   0% /run/user

tulpar@ali ~ free -m

             total       used       free     shared    buffers     cached
Mem:           489        316        172          0         22         93
-/+ buffers/cache:        201        288
Swap:            0          0          0

解决思路

  1. 在20G的磁盘上创建一个4G大小的文件
  2. 把上述文件的空间作为SWAP分区

具体方法如下

1. 创建4G大小的文件

1.1 方法一

sudo dd if=/dev/zero of=/swapfile bs=1G count=4

1.2 方法二

sudo fallocate -l 4G /swapfile

结果
ls -lh /swapfile
-rw-r--r-- 1 root root 4.0G Apr 28 17:19 /swapfile
2. 把上述文件作为SWAP

2.1 为了SWAP_FILE的读写安全,设置文件权限为只有root能读写

sudo chmod 600 /swapfile

ls -lh /swapfile
-rw------- 1 root root 4.0G Apr 28 17:19 /swapfile

2.2 设置SWAP

## 设置
$ sudo mkswap /swapfile
Setting up swapspace version 1, size = 4194300 KiB
no label, UUID=e2f1e9cf-c0a9-4ed4-b8ab-714b8a7d6944
## 启动
$ sudo swapon /swapfile
## 查看状态
$ sudo swapon -s
Filename                Type        Size    Used    Priority
/swapfile               file        4194300 0       -1
$ free -m
             total       used       free     shared    buffers     cached
Mem:          3953        101       3851          0          5         30
-/+ buffers/cache:         66       3887
Swap:         4095          0       4095

2.3 永久的设置SWAP(2.2中得方法设置SWAP,重启后会失效)

/etc/fstab中加入下面一行

/swapfile   none    swap    sw    0   0
3 设置SWAP的使用量

3.1 设置 在/etc/sysctl.conf末尾加入下一行

vm.vfs_cache_pressure = 50

或为了不重启

sysctl vm.swappiness=10

3.2 查看当前swappiness

cat /proc/sys/vm/swappiness