KVM虚拟机的定时逐次开机设定方法-systemd方式

news2024/11/26 10:28:57

前言:KVM虚拟机系统是榨取服务器最大性能的一种好方法,但是谁也不想让服务器启动的时候要等待5分钟甚至以上的时间。 为了减轻服务器开机时的任务数量,需要虚拟机在开机后一段时间内,按顺序逐次启动,以达到各个服务间的依赖和功能衔接。

一、先上代码:kvm-vm.service

[Unit]
Description=Start KVM Guests
After=network-online.target

[Service]
Type=simple
ExecStart=/bin/bash -c 'while ! ping -c1 192.168.1.240 &>/dev/null; do sleep 1; done; for guest in NFS Mysql PHP Nginx; do virsh start $guest; sleep 1m; done'
Restart=always
RestartSec=5s

[Install]
WantedBy=multi-user.target

说明:

a.  ping -c1 192.168.1.240   ,这一句表示在ping出KVM主机的ip回应后,开始执行后继的命令;240是KVM主机的IP。

b.  NFS Mysql PHP Nginx   这是我的四个vm的名称,因为这几个服务又一定的依赖性,所以按顺序启动。NFS为其他三个服务提供存储功能;Mysql 为wordpress、nextcloud提供数据库功能;PHP服务器开了多个pool,最后被nginx反向代理.

c.  sleep 1m    表示间隔1分钟开启一个虚拟机。

特别说明: 这个service是一直保持运行的,如果进入虚拟机,运行poweroff,则1分钟以后,该虚拟机还会被启动起来。 下面的是进阶版,服务器启动5分钟后再开始运行 kvm-vm.service, 并且运行5分钟后,自己会关闭, systemctl status kvm-vm.service  的状态也是inactive的

 二、进阶版

[Unit]
Description=Start KVM Guests
After=network-online.target

[Service]
TimeoutStartSec=infinity
ExecStartPre=/bin/sleep 300

ExecStart=/bin/bash -c 'while ! ping -c1 192.168.1.240 &>/dev/null; do sleep 1; done; for guest in NFS Mysql PHP Nginx; do virsh start $guest; sleep 1m; done'

TimeoutStopSec=1 
KillSignal=SIGINT

[Install]
WantedBy=multi-user.target

以上内容设定了KVM系统开机后300秒后该服务的具体功能才开始执行,在任务完成后,再过1分钟,该服务自动关闭。

​​​​​​​

 三、rc.local 系统的顺序启动脚本

1. 当然,系统首先要又rc.local程序,或者本身就是rc.local管理的,例如Alpine Linux.

Alpine Linux的半自动安装和桌面、远程登录、frp、aria2服务等的配置_alpinelinux安装桌面_lggirls的博客-CSDN博客

2.  vim vms-start.sh

#!/bin/bash
# 一个控制KVM虚拟机在KVM宿主机启动后,按照1.5分钟启动一个的频率,顺序启动的脚本;
# 总计6个虚拟机,名称分别是: NFS,Rides,Mysql,Only,PHP,Nginx;
# 用虚拟机的名称设定一个数组,要按照启动顺序编写,空格隔开;
guests=(NFS Rides Mysql PHP Nginx)
# 轮询数组中的虚拟机名称,间隔1.5分钟启动一次;
for guest in "${guests[@]}";
do
# 使用virsh 命令启动虚拟机
virsh start "$guest"
# 检查退出状态,并输出一个消息
if [ $? -eq 0 ];
then
echo "Started $guest successfully."
else
echo "Failed to start $guest!"
fi
# 在开始新一个虚拟机的轮询前,等待90秒;
sleep 90
done
# 退出该脚本
exit 0

3. 加入rc.local 启动项

 update-rc.d kvm-start

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/471653.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

A Time Series is Worth 64 Words(PatchTST模型)代码解析

前言 A Time Series is Worth 64 Words论文下载地址,Github项目地址,论文解读系列本文针对PatchTST模型参数与模型架构开源代码进行讲解,本人水平有限,若出现解读错误,欢迎指出开源代码中分别实现了监督学习(PatchTST…

千万级直播系统后端架构设计

1、架构方面 1.1 基本 该图是某大型在线演唱会的直播媒体架构简图。 可以看出一场大型活动直播涵盖的技术方案点非常庞杂,本节接下来的内容我们将以推拉流链路、全局智能调度、流量精准调度以及单元化部署,对这套直播方案做一个展开介绍。 1.2 推拉流链…

2023年大厂裁员严重,软件测试行业真的饱和了吗?

这短时间以来后台有很多小伙伴说找工作难,并且说软件测试行业饱和了?竟然登上了热榜 那么我今天带大家看看真实的市场行情,往下看 这个是公司联合某厂的HR招聘真实情况,很明显【软件测试】投简历竟然高达9999沟通才1千多&#xf…

chatgpt 中文版免费访问

chatgpt 中文版免费访问 简介一、ChatGPT中文网二、 ChatGPT三、ChatGPTWEB四、博弈AI五、小熊共享六、tab精灵七、AI文本工具站1、有直接chatgpt体验对话2、文案工具箱 简介 最近chatgpt太火了,用起来十分方便。chatgpt是一种基于人工智能技术的语言模型&#xff…

区间DPⅡ (Java) 解析/模板/案例

一. 区间DP简单介绍 二. 区间DP模板 三. 区间DP经典案例 1.leetcode1312 让字符串成为回文串的最少插入次数 2.leetcode1039 多边形三角剖分的最低得分 以上部分,见 区间DP (Java) 解析/模板/案例 3.leetcode1547 切棍子的最小成本 有一根长度为 n 个单位的…

IndexedDB的包装器JsStore - insert插入参数配置

JsStore是IndexedDB的包装器。它提供了简单的SQL,如api,易于学习和使用。IndexedDb查询可以在web worker中执行,JsStore通过提供一个单独的worker文件来保留这个功能。 Insert API用于在表中插入新记录,还可以为未在db模式中定义的…

使用InitializingBean和DisposableBean来管理bean的生命周期

1.InitializingBean接口 1.1.InitializingBean接口概述 Spring中提供了一个InitializingBean接口,该接口为bean提供了属性初始化后的处理方法,它只包括afterPropertiesSet方法,凡是继承该接口的类,在bean的属性初始化后都会执行…

docker compose 安装kafka集群

使用docker compsose部署kafka,方便快捷,启动方便。 1. 拉去镜像 docker pull bitnami/zookeeper:3.6 docker pull bitnami/kafka:3.0 docker pull hlebalbau/kafka-manager 2. 编辑docker compose文件 version: "3" services: zookeeper…

HummerRisk V1.0.1:k8s检测扩充、批量删除及修复bug

HummerRisk V1.0.1发布: K8s检测规则扩充新增 Rancher 和 KubeSphere类型、增加批量删除、增加阿里云检测类型,并修复了一些V1.0.0中发现的bug。感谢社区小伙伴发现并提交的问题。 HummerRisk 保持高速的迭代,期待您的关注。 https://docs…

FreeRTOS 信号量(四) ------ 互斥信号量

文章目录 一、互斥信号量简介二、创建互斥信号量1. xSemaphoreCreateMutex()2. xSemaphoreCreateMutexStatic() 三、互斥信号量创建过程分析四、释放互斥信号量五、获取互斥信号量 一、互斥信号量简介 互斥信号量其实就是一个拥有优先级继承的二值信号量,在同步的应…

【报错解决】错误代码18456,SQL Server 登录失败

【报错解决】错误代码18456,SQL Server 登录失败 一、故障原因二、解决办法2.1 使用Windows身份认证登录2.2 windows身份登录后,依次选择:安全性->登录名->sa,然后右击选择属性2.3 在常规选项中重新设置密码2.4 在设置中选择…

创新案例|语言教育App头牌Duolingo如何重新点燃用户增长350%

Duolingo是全球最大的语言教育APP,拥有数亿用户,然而用户增长正在放缓,本案例以Duolingo增长 通过数据建模洞察关键指标,并围绕指标用增长实验驱动,设计植根于创新的增长模式,包括启动排行榜,重…

基于MBD的控制系统建模与仿真软件工具集

随着新能源汽车和自动驾驶技术的快速发展,汽车电子电气架构的发展已成为汽车行业推陈出新的主要动力:车内电控系统变得越来越复杂、软件迭代周期越来越短,汽车电子软件开发和测试的质量与效率要求也越来越高。汽车电控系统的设计开发已然成为…

定时器+中断 闪烁led

文章目录 运行环境:1.1 定时器和中断1)定时器2)轮询和中断 2.1配置1)定时器配置2)中断配置3)RCC和SYS 3.1代码分析3.2添加代码1)中断处理函数IRQ中添加代码2)launch设置 4.1定时器启动和定时器中断启动函数5.1实验效果 运行环境: ubuntu18.0…

VSCode 上的 swift 开发配置

安装Xcode和VsCode 在下列网址下载安装即可 VsCode: https://code.visualstudio.com/ Xcode:https://developer.apple.com/xcode/resources/ 或者apptore 打开xcode要求安装的东西都允许安装一下 启用 Swift 语言支持 确保你已经安装了 Xcode 和 VSCode。这是开始运行的最简…

【ITSS】信息技术服务标准(ITSS)的介绍以及发展历程

信息技术服务标准(ITSS)介绍 ITSS是Information TechnologyService Standards的缩写,中文意思是信息技术服务标准,是在工业和信息化部、国家标准化委的领导和支持下,由ITSS工作组研制的一套IT服务领域的标准库和一套提供IT服务的方…

AD9208的4通道 14-bit、2.4GSPS采样率之中文版资料

板卡概述 FMC137 是一款基于 VITA57.4 标准规范的 JESD204B 接口FMC 子 卡 模 块 , 该 模 块 可 以 实 现 4 路 14-bit 、 2GSPS/2.6GSPS/3GSPSADC 采集功能。该板卡 ADC 器件采用 ADI 公司的 AD9208 芯片,,与 ADI 公司的 AD9689 可以实现…

python 零基础入门难度如何?

在入门前先来了解一下Python是什么。 Python,他其实是一种受众非常广的语言,简单易学,在网上有大把大把的入门教程,学习曲线平滑。除了“简单”“万能”之外,还有众多库,Python的标准库非常强大&#xff0…

TEMPUS FUGIT: 1

环境准备 靶机链接:百度网盘 请输入提取码 提取码:d3du 虚拟机网络链接模式:NET模式 攻击机系统:kali linux 2022.03 信息收集 探测目标靶机开放端口和服务情况。 nmap -p- -A -sV 192.168.255.132 nmap --scriptvuln -p …

lvs作业

文章目录 NAT模式DR模式 基于 CentOS 7 构建 LVS-DR 群集。 对比 LVS 负载均衡群集的 NAT 模式和 DR 模式,比较其各自的优势 。基于 CentOS 7 构建 LVS-DR 群集。 NAT模式 在 LVS 的 NAT 模式中,LVS 将客户端请求的 IP 地址和端口号修改为 LVS 的 NAT …