本篇是 小内存服务器生存指南——SWAP虚拟内存 的续篇。上次推出设置虚拟内存的教程后,每次手动设置虚拟内存还是感觉太麻烦,唉~还是太懒了~
可是懒并不是借口。既然懒,那何尝不写个脚本,方便以后设置服务器用呢?话不多说,开始正题
前提条件:
1、服务器系统:CentOS6+/Debian7+/Ubuntu12+
2、虚拟化架构:KVM、VMware
1、以root账户登陆VPS服务器
区分办法:登录后,可见终端显示从$号变成#号
非root账户: [[email protected] ~]$ root账户: [[email protected] ~]#
2、下载并运行程序
CentOS运行命令:
yum -y install wget && wget -O set_swap.sh --no-check-certificate https://soft.mengclaw.com/Bash/set_swap.sh && bash set_swap.sh
Debian运行命令
wget -O set_swap.sh --no-check-certificate https://soft.mengclaw.com/Bash/set_swap.sh && bash set_swap.sh
说明:
1、部分服务器自带一些SWAP交换分区,自行添加后,旧的交换分区将会被删除。
2、OpenVZ虚拟化架构无法自主添加交换分区
过程概览:
------------------------- 设置虚拟内存 版本:1.0 作者:WolfSkylake ------------------------- 1、添加虚拟内存 2、取消虚拟内存 ------------------------- 请输入要执行的操作:1 开始检查系统 管理员权限检查通过 虚拟化检查通过 开始设置虚拟内存容量,建议为内存的2倍。但过大的交换分区会影响磁盘IO,请悉知。 请输入需要添加的虚拟内存容量,单位MB: 1024 1024+0 records in 1024+0 records out 1024000000 bytes (1.0 GB) copied, 3.64437 s, 281 MB/s Setting up swapspace version 1, size = 999996 KiB no label, UUID=6de54f86-e5b0-4adb-b517-8008669381ba 虚拟内存设置完成
程序源码:
#!/bin/bash ############################################################ # 设置虚拟内存 # # 发布日期:2020-03-05 # 程序版本:1.0 # # 脚本作者:WolfSkylake # 脚本链接:https://www.mengclaw.com/2020/03/05/627/ ############################################################ # 判断系统版本 check_system_os(){ if [[ -f /etc/redhat-release ]];then release="CentOS" # -q 执行本条语句的时候不输出,-i 不区分大小写 elif cat /etc/issue | grep -q -i "debian";then release="Debian" elif cat /etc/issue | grep -q -i "ubuntu";then release="Ubuntu" else release="Unknown" echo -e "/n 系统不受支持,安装失败 /n" exit 1 fi } # 检查是否是root账户 check_root(){ if [[ $EUID != 0 ]];then echo -e " 当前非ROOT账号,无法继续操作。/n 请更换ROOT账号登录服务器。 " exit 1 else echo -e "/n 管理员权限检查通过 " fi } # 安装系统依赖 dependent_install(){ if [[ $release == "CentOS" ]];then yum -y makecache yum -y install virt-what elif [[ $release == "Debian" ]] || [[ $release == "Ubuntu" ]];then apt-get -y update apt-get -y install virt-what else echo -e " 系统不受支持,退出…… /n" exit 1 fi } # 检查虚拟化 virt_check(){ if [[ `virt-what` == "openvz" ]];then echo -e " 当前虚拟化为OVZ,不支持本脚本 " elif [[ `virt-what` == "kvm" ]] || [[ `virt-what` == "vmware" ]] ;then echo -e "/n 虚拟化检查通过 /n" else echo -e "/n 不支持当前虚拟化,退出…… /n" exit 1 fi } # 取消交换分区 unset_swap(){ if [[ -e /swap/swapfile ]] || [[ -e /swap ]] || [[ `free | grep -i swap | awk -F " " '{print $2}'` -ne 0 ]];then swapoff -a rm -rf /swap sed -i '/swap/d' /etc/fstab if [[ -e /swap/swapfile ]] || [[ -e /swap ]] || [[ `free | grep -i swap | awk -F " " '{print $2}'` -ne 0 ]];then echo -e "/n 删除失败,写保护 /n" else echo -e "/n 删除完成 /n" fi else echo -e "/n 删除失败,没有找到虚拟内存 /n" fi } # 设置交换分区 set_swap(){ echo -e " 开始设置虚拟内存容量,建议为内存的2倍。但过大的交换分区会影响磁盘IO,请悉知。 " read -p " 请输入需要添加的虚拟内存容量,单位MB: " swap_capacity if [[ -e /swap/swapfile ]] || [[ -e /swap ]] || [[ `free | grep -i swap | awk -F " " '{print $2}'` -ne 0 ]];then read -e -p " 交换分区文件已存在,继续创建会删除以前的交换分区,是否继续创建? [Y/n] :" yn [[ -z "${yn}" ]] && yn="y" if [[ $yn == [Yy] ]]; then unset_swap mkdir /swap dd if=/dev/zero of=/swap/swapfile bs=1MB count=$swap_capacity mkswap /swap/swapfile chmod 600 /swap/swapfile swapon /swap/swapfile sed -i '/swap/d' /etc/fstab echo "/swap/swapfile swap swap defaults 0 0" >>/etc/fstab if [[ -e /swap/swapfile ]] || [[ -e /swap ]] || [[ `free | grep -i swap | awk -F " " '{print $2}'` -ne 0 ]];then echo -e "/n 新的虚拟内存设置完成 /n" else echo -e "/n 设置失败,启动删除程序 /n" unset_swap fi else echo -e "/n 用户取消,程序退出 /n" exit 1 fi else echo " " # 为了美观输出一个空行 mkdir /swap dd if=/dev/zero of=/swap/swapfile bs=1MB count=$swap_capacity mkswap /swap/swapfile chmod 600 /swap/swapfile swapon /swap/swapfile sed -i '/swap/d' /etc/fstab echo "/swap/swapfile swap swap defaults 0 0" >>/etc/fstab if [[ -e /swap/swapfile ]] || [[ -e /swap ]] || [[ `free | grep -i swap | awk -F " " '{print $2}'` -ne 0 ]];then echo -e "/n 虚拟内存设置完成 /n" else echo -e "/n 设置失败,启动删除程序 /n" unset_swap fi fi } # 设置交换分区前的环境检查 before_set_swap(){ echo -e "/n 开始检查系统 " check_system_os check_root dependent_install >/dev/null 2>&1 & virt_check set_swap } ############################################################ echo -e " -------------------------" echo -e " 设置虚拟内存" echo -e " 版本:1.0" echo -e " 作者:WolfSkylake " echo -e " -------------------------" echo -e " 1、添加虚拟内存" echo -e " 2、取消虚拟内存" echo -e " -------------------------" read -p " 请输入要执行的操作:" num case "$num" in 1) before_set_swap ;; 2) unset_swap ;; esac ############################################################
就像朋友说的一样,因为“懒”,驱动着一群程序员想尽办法把机械化的重复,变成一条一条的代码。
反观人类的历史,懒也是推动人类进步的一种动力,因为懒,所以发明了各种为了“懒”而服务的东西。
但是,这个过程,何尝不是一种乐趣呢?
本教程,脚本均为原创,允许转载。转载请注明出处,谢谢。
本文链接:https://www.mengclaw.com/2020/03/05/627/
版权所有©2020萌爪实验室
转载请注明:逗比根据地 » 【原创】服务器生存指南——SWAP虚拟内存一键配置脚本