Azure上的
IaaS 虚拟机可使用多种方式关闭,例如通过 Azure
管理门户、Azure Powershell cmdlet
或 CLI
工具,甚至还可以由交互式登录的用户关闭。Azure
平台本身甚至也能关闭虚拟机以执行平台维护。运行在本地裸机中的Linux
系统的关闭流程很好理解,但是这一切到了云上如何运行呢?
在 Azure
上启动正常关机
在
Azure 中关闭 Linux
虚拟机的流程与本地模式基本一样。当用户登录并运行“/sbin/shutdown now”后,正常结果是系统将立即开始停止任何正在运行的服务,并最终关闭整个系统。当然,具体机制在一定程度上取决于使用的Linux
版本和 Init
系统(通常是 SysV、Upstart
或 Systemd),但结果是一样的。
然而从门户网站或
Azure 平台启动关机时又会发生什么呢?简单来说,答案会是,会发生几乎相同的事情。在这些情况下,Azure将会与主机通信,启动对来宾
Linux 系统的正常关机。在 Hyper-V
和 Azure
环境下,执行正常关机的信号来自于虚拟化管理程序,由
hv_utils
驱动程序处理。该驱动程序是我们包含在 Linux
内核中的 Linux
集成服务的一部分。该功能称为集成关机。
收到虚拟化管理程序的信号后,hv_utils
驱动器将启动 Linux
来宾操作系统的正常关机,所启动机制与用户手动运行“/sbin/shutdown now”基本相同。在
hv_utils 收到虚拟化管理程序发出的信号后,将向日志(通常是 /var/log/messages
或 Ubuntu
系统中的 /var/log/syslog)发送以下信息,表明
Linux 系统已由虚拟化管理程序关闭:
需要注意的是,正常关机过程开始后,Azure
平台不会一直等下去。此平台会留出
5
分钟时间,等待虚拟机正常关机。如果5
分钟过后虚拟机仍在运行,此平台将强制关闭虚拟机。这一点非常重要,一定要确保您的VM
运行的所有脚本都能在既定时间内完成随后彻底关机。
管理关机流程
Azure中
Linux 用户的一个共同要求是,当 Azure
启动 VM
正常关机时,他们的应用程序能够正常关闭。现在我们已了解手动关机和虚拟化应用程序启动关机使用相同的机制,我们只需使用现有Linux init
系统就能确保应用程序正常关闭。
大多数情况下,现有 SysV、Systemd
或 Upstart
脚本将足以正常关闭应用程序。但是在这些脚本尚不足以正常关闭应用程序或需要运行额外流程来“清理”应用程序时,可以执行以下操作:
当然,最简单的方法就是直接编辑应用程序init
脚本并添加额外的任务。这种做法存在一些弊端:除编辑脚本时可能出现的明显拼写错误和其他错误以外,由于这些脚本通常由RPM
或 Deb
包管理,编辑脚本还可能导致此脚本无法升级。不过这种方式的一个优势是因为集成关机是Hyper-V自带的功能,您可以在部署至
Azure 之前在 Hyper-V
上对全部脚本进行本地测试。
另一个方案是创建自己的init
脚本。目前有很多不同的 init
系统可供 Linux
系统使用,所以创建 init
脚本也会有很多方式。大多数系统都至少拥有 SysV
与本机 init
系统的兼容性,所以最简单的做法就是编写 SysV
兼容性脚本,确保它以运行级别 0
运行。
这个方法可能稍微复杂一点。这是我最近在
Azure 库中使用我们的 CentOS
镜像进行测试时使用的一个方法。对于创建自己的 init
脚本执行所需预关机操作而言,此脚本可能是一个很好的起点。但是,别忘了在我们的VM
关闭电源前,我们还有 5
分钟的时间进行清理。
不过就像
Linux 本身一样,这里可能不会有一个适合所有版本和工作负荷的万全之策。重点在于,尽管有很多的解决方法,要在Hyper-V
或 Azure
上彻底关闭我们的 VM,我们需要采取的做法并无特别之处。我们仍然能够使用特定
Linux 版本上的常规程序和机制,同时还能享受将这些系统托管至 Azure
的优势。
本文翻译自:
Linux常用命令——关机重启命令
Linux常用命令--关机重启命令 Linux shutdown 语法:shutdown [选项] 时间 -c 取消前一个关机命令 -h 关机 -r 重启 示例:shutdown -r now 其它 ...
Linux学习笔记(1)linux的开关机及重启
linux的启动流程 一.启动 (1)电源 开关 (2)选择启动方式:FLOPPY/BIOS/CDROM(软盘/bios启动/光盘) 基于MBR引导方式 [1]MBR:最多只能划分4个主分区,逻辑 ...
linux下常用关机命令
linux下常用的关机命令有:shutdown.halt.poweroff.init:重启命令有:reboot.下面本文就主要介绍一些常用的关机命令以及各种关机命令之间的区别和具体用法. 首先来看一下 ...
linux注销、关机、重启
一.Logout 注销是登陆的相对操作,登陆系统后,若要离开系统,用户只要直接下达logout命令即可:[root@laolinux root]#logoutRed Hat Linux release ...
Linux基础---开关机与帮助
1.X window与文字模式的切换 通常我们也称文字模式为 终端机接口, terminal或console!Linux预设的情况下, 会提供六个Terminal来让使用者登入,切换的方式为: [Ct ...
Linux三种关机/重启系统的命令
Linux提供了三种关机/重启系统的命令:shutdown.halt和reboot.这三个命令在一般情况下只有 系统的超级用户(一般是指root)才可以执行.输入没有参数的shutdown命令,两分钟 ...
Linux几种关机(重启)相关命令
在linux下一些常用的关机/重启命令有shutdown.halt.reboot.及init,它们都可以达到重启系统的目的,但每个命令的内部工作过程是不同的,通过本文的介绍,希望你可以更加灵活的运用各 ...
Linux如何正确关机
其实,在Linux领域内大多用在服务器上,很少遇到关机的操作.毕竟服务器上跑一个服务是永无止境的,除非特殊情况下,不得已才会关机. Linux和windows不同,在 Linux 底下,由于每个程序( ...
Linux 学习 (六) 关机与重启命令
Linux达人养成计划 I 学习笔记 shutdown [选项] 时间 -c:取消前一个关机命令 -h:关机 -r:重启 shutdown命令会在关机或重启时自动保存系统中正在运行的服务,最安全的关机 ...
随机推荐
eclipse中的classes文件夹同步问题
问题: 在同步项目时,由于误操作将classes文件夹加入到了同步版本中,这样会导致每次更新程序编译后,会有很多class文件显示在同步清单中. 解决方案: 将classes文件不设置为同步. 1. ...
Quartz定时任务简单实例
文章纲要: 初步搭建一个由Quartz为引擎集群的定时任务模块,功能为每隔30秒打印一条信息(Hello World!!!) 一.环境 Spring MVC Mevan Quartz 2.2.1 二. ...
http学习笔记(二)—— 嘿!伙计,你在哪?(URL)
我们之所以希望浏览网页,其中一个重要的原因就是庞大的web世界中有很丰富的资源,他就像哆啦a梦的口袋,随时都能拿出我们想要的宝贝.这些资源通过http被传送到我们的浏览器,并展示到我们的屏幕上.而我们 ...
http压力测试
一.http_load程序非常小,解压后也不到100Khttp_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载.但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般不会把 ...
Android 系统 reboot
/*********************************************************************** * Android 系统 reboot * 说明: * ...
简单DOS命令实现局域网Windows远程关机
1秒内重启局域网内计算机名为ppgsvr-pc的用户电脑shutdown -r -m \\ComputerName -t 1 1秒内关闭局域网内ppgsvr用户电脑shutdown -s -m \\C ...
bootstrap3-datepicker and jquery.form.js
bootstrap3-datepicker 和 jquery.form.js 这两个控件又起来都比较简单,就一起介绍了. 先说datepicker. github上的地址是:https://githu ...
GithubPages + Hexo + Disqus博客教程
文章主要描述了利用github page,hexo静态博客框架以及disqus来搭建个人静态博客的详细步骤. github page用来搭建博客的主页,hexo用来更改博客主题.发布文章等等,并通过配 ...
mysql explain 分析sql语句
鉴于最近做的事情,需要解决慢sql的问题,现补充一点sql语句性能分析之explain的使用方式! 综合返回数据情况,分析各个参数,可以了解sql 使用方法:explain + sql语句 如 :e ...
linux三剑客之grep
linux基础三剑客之grep 1.grep命令 基本介绍 grep命令是文本本过滤工具,是基于一个模式匹配文件的每一行,grep分类:egrep个fgrep. grep英文名:Global sea ...