how to add swap on ubuntu
在 digitalocean 最低配的 vps 上安装 Rails 环境,发现 bundle install 报错,一查发现好尴尬的问题,内存不够。
Cannot allocate memory - /usr/bin/ruby2.3 -r ./siteconf20161125-1500-iefngg.rb extconf.rb 2>&1
最直接的方法是加内存,还有一种方法就是给系统添加 swap 下面是在 Ubuntu 添加 swap 的过程的记录。
- 检查系统中是否已经添加 swap
sudo swapon -s
查看文件系统
df
得到的数字实在是比较尴尬hww@ubuntu-512mb-nyc2-01:~/my_page$ df Filesystem 1K-blocks Used Available Use% Mounted on udev 242192 0 242192 0% /dev tmpfs 50024 2896 47128 6% /run /dev/vda1 20510568 3664972 15789724 19% / tmpfs 250112 0 250112 0% /dev/shm tmpfs 5120 0 5120 0% /run/lock tmpfs 250112 0 250112 0% /sys/fs/cgroup tmpfs 50024 0 50024 0% /run/user/1000
vda1 这块盘只有了百分之六,分配 256M 给 swap 绰绰有余,哈哈。
新建和开启 swap
- 新建 swap 文件
sudo dd if=/dev/zero of=/swapfile bs=1024 count=256k
注一定要用 swapfile 作为拷贝的 target 文件 设置 swap 文件
sudo mkswap /swapfile
Setting up swapspace version 1, size = 256 MiB (268431360 bytes) no label, UUID=66b103eb-4c49-4ed9-9327-4ed98cf8c2e4
激活 swap 文件
sudo swapon /swapfile
现在你可以看到新建的 swap 文件了hww@ubuntu-512mb-nyc2-01:~/my_page$ sudo mkswap /swapfile Setting up swapspace version 1, size = 256 MiB (268431360 bytes) no label, UUID=66b103eb-4c49-4ed9-9327-4ed98cf8c2e4
- 新建 swap 文件
swap 启动挂载
sudo vi /etc/fstab
把这行配置拷贝进去/swapfile none swap sw 0 0
还有一个配置我不懂代表啥,但是很有道理的样子
Swappiness in the file should be set to 10. Skipping this step may cause both poor performance, whereas setting it to 10 will cause swap to act as an emergency buffer, preventing out-of-memory crashes. You can do this with the following commands: echo 10 | sudo tee /proc/sys/vm/swappiness echo vm.swappiness = 10 | sudo tee -a /etc/sysctl.conf
最后就是设置/swapfile
文件权限
sudo chown root:root /swapfile
sudo chmod 0600 /swapfile
还有就是系统已存在 swap ,扩大可使用下面的方法
- Turn the swapfile off : swapoff -a
- sudo dd if=/dev/zero of=/swapfile bs=1024 count=1024k
- Follow the remaining steps from after the dd command. Except for the Fstab modification as that is already completed.
- Your swapfile is now bigger完毕