Linux的正常关机
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
的优势。
本文翻译自:
http://azure.microsoft.com/blog/2014/05/06/linux-and-graceful-shutdowns-2/
Linux的正常关机的更多相关文章
- 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命令会在关机或重启时自动保存系统中正在运行的服务,最安全的关机 ...
随机推荐
- 编译安装apache2.4
一.编译安装apache2.4Apache官方说:与Apache 2.2.x相比,Apache 2.4.x提供了很多性能方面的提升,包括支持更大流量.更好地支持云计算.利用更少的内存处理更多的并发等. ...
- 工作中的第一份LoadRunner脚本
录制的第一份脚本 虽然是第一份但是调试执行,跑场景等都成功了. Action() { web_url("login1.jsp", "URL=http://192.168. ...
- webform登录操作中正则表达式运用
关于正则表达式的运用,估计很多人都会觉得这很麻烦.确实很麻烦,太多表达式我也记不住,很多都是临时需要用的时候再去查,有点小学生读小说的架势,不认识的字再去翻字典. 正则表达式严格来说对于程序的功能实现 ...
- OpenStreetMap(OSM) JMap Viewer(Java swing map)
This article from:http://wiki.openstreetmap.org/wiki/JMapViewer JMapViewer is a java component which ...
- nova availability zone
find a bug: at first there is only one zone. create aggregate host1 in zone1 create aggregate host1 ...
- SVG 教程
SVG 意为可缩放矢量图形(Scalable Vector Graphics). SVG 使用 XML 格式定义图像. 现在开始学习 SVG! <html> <body> &l ...
- Linux学习笔记1:配置Linux网络和克隆虚拟机并更改配置
一.配置Linux网络 在安装Linux的时候,一定要保证你的物理网络的IP是手动设置的,要不然会在Linux设置IP连通网络的时候会报network is unreachable 并且怎么也找不到问 ...
- Minimum Transport Cost(floyd+二维数组记录路径)
Minimum Transport Cost Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/O ...
- uva 10051 Tower of Cubes(DAG最长路)
题目连接:10051 - Tower of Cubes 题目大意:有n个正方体,从序号1~n, 对应的每个立方体的6个面分别有它的颜色(用数字给出),现在想要将立方体堆成塔,并且上面的立方体的序号要小 ...
- swipe方法
/** * @author zhousg * @Date 2016-02-04 * @Method 滑动方法 针对一个大容器内部的容器做滑动封装 * @param * args args.swipeD ...