主机内存过小安装 MySQL 失败,这种情况在很多编译安装软件的时候都可能遇到,最经济的解决办法就是新增 SWAP 分区。
(当然,如果不差钱,最省心的办法还是增加内存。)
下面是最快速的创建 Swap 空间几个命令
sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
另一种增加 swap 空间的操作
- 创建一个文件
sudo dd if=/dev/zero of=swap bs=1024 count=2000000
count 表示文件大小,bs 即 block size,表示单位存储区块大小,单位是B。
这里的文件大小 = count * bs = 2048000000B = 2048MB = 2G
- 将该文件转换成 Swap 文件
sudo mkswap -f swap
- 加载
sudo swapon swap
这时候再使用 free -h
命令就可以看到加载后的内存:
tony@ubuntu:~$ free -h
total used free shared buffers cached
Mem: 992M 918M 73M 31M 110M 440M
-/+ buffers/cache: 367M 625M
Swap: 1.0G 5.9M 1.0G
Swap 空间什么时候被使用
系统在什么情况或条件下才会使用 Swap分区的空间呢? 其实是Linux通过一个参数 swappiness
来控制的。当然还涉及到复杂的算法。
这个参数值可为 0-100,控制系统 swap 的使用程度。高数值可优先系统性能,在进程不活跃时主动将其转换出物理内存。低数值可优先互动性并尽量避免将进程转换处物理内存,并降低反应延迟。默认值为 60。注意:这个只是一个权值,不是一个百分比值,涉及到系统内核复杂的算法,在此不做过多赘述,有兴趣的可以自行搜索一下。下面是关于 swappiness 的操作:
# 查看 swappiness 参数
more /proc/sys/vm/swappiness
# 两种临时修改 swappiness 参数的方法,系统重启后失效
echo 10 > /proc/sys/vm/swappiness
sysctl vm.swappiness=10
# 永久修改 swappiness 参数的方法
# 1. 在配置文件 /etc/sysctl.conf 里面修改 vm.swappiness 的值
# 2. 重启系统
echo 'vm.swappiness=10' >>/etc/sysctl.conf
网友评论