centos添加swap分区

使用 DigitalOcean 有很长一段时间了,前几天在编译 PHP 的时候出现了进程被 killed 的状况,经过我的吐槽以及和别人交流后发现,是内存耗尽的缘故。其实是因为当时开着 MySQL 进程消耗了不少内存,后来觉得有必要手动添加一下 Swap(交换分区),这样以免以后再编译什么的时候进程被K 。
关于 Linux 中 Swap(交换分区),类似于 Windows 的虚拟内存,就是当内存不足的时候,把一部分硬盘空间虚拟成内存使用,从而解决内存容量不足的情况。
那么如何在 CentOS 中手动添加 Swap 呢?

1、检查 Swap 空间
在设置 Swap 文件之前,有必要先检查一下系统里有没有既存的 Swap 文件。
运行以下命令:

swapon -s

如果返回的信息概要是空的,则表示 Swap 文件不存在。

2、检查文件系统
在设置 Swap 文件之前,同样有必要检查一下文件系统,看看是否有足够的硬盘空间来设置 Swap 。运行以下命令:

df -hal

检查返回的信息,还剩余足够的硬盘空间即可。

3、创建并允许 Swap 文件
下面使用 dd 命令来创建 Swap 文件。

dd if=/dev/zero of=/tmp/swapfile bs=1024 count=1024k

这样就建立一个/tmp/swapfile的分区文件,大小为1G。

参数解读:
if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file >
of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file >
bs=bytes:同时设置读入/输出的块大小为bytes个字节
count=blocks:仅拷贝blocks个块,块大小等于bs指定的字节数。

4、格式化并激活 Swap 文件
上面已经创建好 Swap 文件,还需要格式化后才能使用。运行命令:

mkswap /tmp/swapfile

激活 Swap ,运行命令:

swapon /tmp/swapfile

以上步骤做完,再次运行命令:

swapon -s

你会发现返回的信息概要:

Filename                    Type        Size    Used    Priority
/tmp/swapfile               file        524284    0     -1

如果要机器重启的时候自动挂载 Swap ,那么还需要修改 fstab 配置。
用 vim 打开 /etc/fstab 文件,在其最后添加如下一行:

/tmp/swapfile           swap                    swap    defaults        0 0

最后,赋予 Swap 文件适当的权限:

chown root:root /tmp/swapfile 
chmod 600 /tmp/swapfile

同时,我们还可以修改 Linux Swap 空间的 swappiness ,降低对硬盘的缓存。
Linux 会使用硬盘的一部分做为 Swap 分区,用来进行进程调度–进程是正在运行的程序–把当前不用的进程调成‘等待(standby)’,甚至‘睡眠(sleep)’,一旦要用,再调成‘活动(active)’,睡眠的进程就会在 Swap 分区,把内存空出来让给‘活动’的进程。
如果内存够大,应当告诉 Linux 不必太多的使用 Swap 分区,可以通过修改 swappiness 的参数来设置。swappiness=0 的时候表示最大限度使用物理内存,然后才是 Swap 空间,swappiness=100 的时候表示积极的使用 Swap 分区,并且把内存上的数据及时的搬运到 Swap 空间里面。
在 CentOS 中,swappiness 的默认值是60。
通过以下命令可以看到:

cat /proc/sys/vm/swappiness

返回值60

我们可以调整 swappiness 的值到一个合适的参数,从而达到最优化使用 Swap 的目的。这里我们将其设为10。这样你就将值由60改为10,这可以大大降低系统对于swap的写入,建议内存为512M或更多的朋友采用此方法。如你你发现你对于swap的使用极少,可以将值设为0。这并不会禁止你对swap的使用,而是使你的系统对于swap的写入尽可能的少,同时尽可能多的使用你的实际内存。这对于你在切换应用程序时有着巨大的作用,因为这样的话它们是在物理内存而非swap分区中。

使用 sysctl 命令:

sysctl vm.swappiness=10

但是这只是临时性的修改,在你重启系统后会恢复默认的60,要永久设置,还需要在 vim 中修改sysctl.conf:

vi /etc/sysctl.conf

在这个文档的最后加上这样一行:

# Search for the vm.swappiness setting.  Uncomment and change it as necessary.
vm.swappiness=10

输入:x,保存退出 vim 。

这样一来,Swap 分区重启后都会生效了。

linux/Debian/Ubuntu/CentOS安装/重装系统

背景:适用于由GRUB引导的CentOS,Ubuntu,Debian系统.
使用官方发行版去掉模板预装的软件.
同时也可以解决内核版本与软件不兼容的问题。
只要有root权限,还您一个纯净的系统。

注意:全自动安装默认root密码:Vicer,安装完成后请立即更改密码.
请使用 passwd root 命令更改密码.
特别注意:OpenVZ构架不适用.

安装Ubuntu时,必须使用版本代号.
如有必要,请使用--mirror自行更换软件源.
使用方法示例:

以自动模式安装Ubuntu 16.04 64位为例:

    • [2017.07.05]

修复在独服上安装的一些由硬盘引起的问题.
修复在CentOS6上判断网卡出错的问题.

      • [2017.06.25]

适配了由较老GRUB版本引导的CentOS6等系统.
去除-cn参数,此参数作用不大.
添加-apt/--mirror参数,用于指定源(需完整的镜像源地址).
用法示例:

      • [2017.06.24]

由公网探测IP地址,改为本机探测IP地址.适配更加广泛.

      • [2017.06.23]

修复Debian9不能使用root登陆的问题.
移除对于route命令的依赖,使用ip命令并计算子网掩码.
修复使用ls命令时的一个错误警告.
增加-cn参数,使国内机器下载所需资源更加迅速.

      • [2017.06.20]

增加对Debian9的支持,支持全自动化安装.
未做大量测试,有问题请反馈.

      • [2017.06.09]

添加支持从CentOS7运行全自动化安装Debian.
理论上支持由grub2引导的系统(CentOS6grub引导,故不支持.).
优化判断逻辑,删除 -t参数.
添加-a参数(全自动化安装)-m参数(从VNC模式安装)

      • [2017.06.05]

修复全自动安装Debian8会出现卡住和不能使用root密码登陆的问题.

      • [2017.06.04]

增加全自动方式安装,实现在无救援模式,无VNC的情况下安装Debian.
已在AWS Lightsail(Ubuntu),DigitalOcean,UltraVPS.eu通过测试.
默认root密码:Vicer,安装完成后请立即更改密码.
使用 passwd root 命令更改密码.

      • [2017.03.28]

增加了一个之参数选项;
此参数用于手动指定机器的虚拟化类型。
一般情况下不需要指定此参数。

      • [2017.03.25]

修复了一些已知问题。

需要:

1.Debian/Ubuntu/CentOS 系统(由GRUB引导);

2.wget 用来下载文件,获取公网IP;
3.ip 获取网关,掩码等;
4.sed awk grep 处理文本流;
5.VNC 安装系统(此项为可选)。



    • 确保安装了所需软件:
    • 如果出现了错误,请运行:

    • 一键下载及使用:

    • 全自动/非全自动示例:
      • 全自动安装:
      • VNC手动安装:

    • 使用示例:
      • 【默认】安装Debian 7 x32:

      • 安装Debian 8 x64:

      • 安装Debian 9 x64:

      • 安装Ubuntu 14.04 x64:

      • 安装Ubuntu 16.04 x64:

      • 安装Ubuntu 18.04 x64:

    • 【默认】预览:

《[ Linux VPS ] Debian(Ubuntu)网络安装/重装系统一键脚本》


    • 完整代码:

注意事项:

    • 在安装Ubuntu时,可能会遇到:

Getting the time form a network time server...

    • 界面进度条很长时间不会动,可以等待它超时或者更换别的版本.

 

    该问题是Ubuntu系统的问题.