linux下修改swap扩展内存


刚入了一台 digital ocean 的 VPS,1 核 1G,30G+SSD 只要 10$, 遂在上面跑了一个 gitlab,作为个人 git 仓库,然而启动后出现了 502,已检查发现内存不够,原来默认没有分 swap(好坑),手动添加一下吧

查看 swap 分区占用情况

$ cat /proc/meminfo | grep Swap

SwapCached:            0 kB
SwapTotal:             0 kB
SwapFree:              0 kB

此时 Swap 分区为空

查看系统还有多少空间

$ df -lh

Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        30G  1.8G   27G   7% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
udev            493M  4.0K  493M   1% /dev
tmpfs           100M  316K  100M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none            498M   24K  497M   1% /run/shm
none            100M     0  100M   0% /run/user

此时 / 目录还有 27G,可以分

创建 Swap 文件

$ sudo dd if=/dev/zero of=/swap.disk bs=1m count=2k

([/dev/zero][1]) 或者

$ sudo fallocate -l 2G /swap.disk

([fallocate][2]) man page
此时根目录下生成 swap.disk,可设置 chmod 600 /swap.disk 使 swap 只能 root 可读写,保证读写安全

设置 Swap

$ sudo mkswap /swap.disk

Setting up swapspace version 1, size = 2097148 KiB
no label, UUID=1ba86321-c49d-434c-8c52-741173fb5eab

启动 Swap

$ sudo swapon /swap.disk

在查看内存用量

$ cat /proc/meminfo | grep Swap

SwapCached:            0 kB
SwapTotal:       2097148 kB
SwapFree:        2097148 kB

已有 Swap 数据

设置重启不失效

上述方法在系统重启后 swap 会自动不挂载,设置方法为

$ sudo echo "/swap.disk   none    swap    sw    0   0" >> /etc/fstab

其他操作

设置 Swap 用量

$ sudo echo "vm.vfs_cache_pressure = 50" >> /etc/sysctl.conf

为了不重启生效,则

$ sysctl vm.swappiness=10

[1]: javascript:void (0) “在类 UNI 操作系统中,/dev/zero 是一个特殊的文件,当你读它的时候,它会提供无限的空字符 (NULL,ASCII,NUL,0x00) 其中的一个典型用法是用它提供的字符流来覆盖信息,另一个常见用法是产生一个特定大小的空白文件。BSD 就是通过 mmap 把 /dev/zero 映射到虚地址空间实现共享内存的。可以使用 mmap 将 /dev/zero 映射到一个虚拟的内存空间,这个操作的效果等同于使用一段匿名的内存(没有和任何文件相关)。”
[2]: javascript:void (0) “dd 指令为实际写入硬盘,文件产生速度取决于硬盘读写速度,如果欲产生超大文件,速度很慢如果想让系统认为这里存在一个大文件,而不用具体将空字符写入此处磁盘,则可以使用 fallocate,但 Docker 中该指令失效”


评论
 上一篇
恨恨而死 恨恨而死
恨恨而死 作者:鲁迅 古来很有几位恨恨而死的人物。他们一面说些 “怀才不遇”“天道宁论” 的话,一面有钱的便狂嫖滥赌,没钱的便喝几十碗酒,—— 因为不平的缘故,于是后来就恨恨而死了。
2016-11-30
下一篇 
JS顺序插入数组 JS顺序插入数组
给一个数组和一个数字,将数字插入数字指定位置,使数组有序,不使用遍历
2016-08-04
  目录