array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 Hyper-V Server虚拟机快照(检查点) - 爱码网

Windows Server 2012/R2 通过使用微软Volume Copy Service 技术,可对Hyper-V 上运行的虚拟机制作实时快照,快照内容为虚拟机的状态、数据、硬件配置。每一部虚拟机最多可以制作50 份快照。

快照主要用于测试对现有虚拟机环境的改动,在必要的时候,作为返回之前状态或时间的手段。如果需要重建某个特定状态或者重现某个特定条件,以便对一个问题进行故障排除,则有一个更方便的方法将虚拟机恢复,会非常有用。

在实际生产环境中,快照可以协助管理员针对服务器做系统更新或对某一特定软件进行更新。如果在系统更新或软件更新的过程中有问题产生,可运用快照恢复至先前健康的状态。快照的另一个主要用途是容错及灾难恢复。企业实际环境下,一个及时位于灾难发生前的快照,可帮助企业快速地将服务器恢复至生产状态,大幅度节省了从磁带恢复所需的宝贵时间。在为虚拟机首次进行快照之前,首先要设置虚拟机的快照所在的文件夹。如果没有对虚拟机快照进行设置,则虚拟机快照文件保存在与虚拟机主机文件相同的文件夹中。但是,这个操作要让运行中的虚拟机暂停,导致合并过程中无法使用虚拟机。如图所示。

Hyper-V Server虚拟机快照(检查点)

系统默认为:“C:\ProgramData\Microsoft\Windows\Hyper-V\Snapshots”

Windows Server 2012开始,Hyper-V 的实时合并功能现在允许组织将当前快照合并回原来的父盘,同时保持虚拟机继续运行。快照数据文件(虚拟硬盘当前的叶节点,派生到只读的差异父盘内)存储为 .avhd 文件。在删除快照时,如果虚拟机正在运行,则不能删除相关的 .avhd 磁盘。Windows Server 2012 开始支持在虚拟机继续运行的时候,将相关 .avhd 磁盘合并进父盘的能力。

在过程的进行当中,I/O 被挂限制在一个小范围内,这个范围内的数据从源读取,写入目标。在叶合并的过程中,对已经合并的区域的后续写入,会被重定向到合并目标。在完成时,联机的合并会修改运行链,取消合并磁盘的链接,并关闭这些文件。对于用户毫无影响。快照的实时合并提供了将虚拟机恢复回前一状态的更快、更容易的方式。

企业管理员可以在不影响业务系统、测试环境等前提下任意时间创建虚拟机快照,当创建完快照后,系统会自动嵌入到该虚拟机的快照树中,并会生成.avhd/.avhdx虚拟硬盘文件以及生成一份快照文件到相应的目录中

Hyper-V Server虚拟机快照(检查点)

Hyper-V Server虚拟机快照(检查点)

虚拟机的配置信息将会保存到该快照文件中,并且使用GUID用以标识该虚拟机

Hyper-V Server虚拟机快照(检查点)

使用Hyper-V管理控制台创建虚拟机快照

1. 登陆Hyper-V服务器,打开Hyper-V管理控制台,鼠标右键需要创建快照的虚拟机,选择“检查点”

Hyper-V Server虚拟机快照(检查点)

2. 执行“检查点”之后,系统将自动创建快照并以创建时间来标识快照文件名,此文件显示名可根据实际环境标识。例如“CleanOS”即为干净的系统,未配置任何信息

Hyper-V Server虚拟机快照(检查点)

3. 右键快照,选择设置可查看检查点文件位置,或者查看可执行的相关操作

Hyper-V Server虚拟机快照(检查点)

Hyper-V Server虚拟机快照(检查点)

使用Windows PowerShell创建虚拟机快照

1. 以管理员身份运行PowerShell

2. 执行以下语句创建虚拟机快照

Checkpoint-VM -Name BJ-CLI-03 -SnapshotName CleanOS

Hyper-V Server虚拟机快照(检查点)

3. 返回Hyper-V管理器,查看创建的虚拟机“BJ-CLI-03”快照

4. 使用Remove-VMSnapshot语句可删除虚拟机快照

5. 使用tree /f命令在CMD下查看虚拟机文件结构   
Hyper-V Server虚拟机快照(检查点)

6. 使用PowerShell查看虚拟机快照

Hyper-V Server虚拟机快照(检查点)

一、 还原与应用虚拟机快照

1. 还原快照:

常见应用场景是每月的系统补丁更新,企业管理员经常在每月的系统更新前,使用某一台或者某一类型的机器进行系统更新以确保不会影响业务系统。此时如果管理员在执行系统更新之前创建了快照,当更新完系统补丁是,系统崩溃、操作中出现错误或者误删除文件时,可以使用快照还原功能还原到之前的正常状态。

“还原”功能只能将虚拟机正在运行的状态回退到前一个时间点,不能实现任意时间点的还原。右键虚拟机,选择“还原”即可执行还原虚拟机快照

Hyper-V Server虚拟机快照(检查点)

2. 应用快照:

“还原”快照功能只能还原到上一个时间点所执行的虚拟机快照。如果想恢复到任意时间点的虚拟机快照,此时可以使用“应用功能”。右键创建的快照,选择“应用”即可

Hyper-V Server虚拟机快照(检查点)

Hyper-V Server虚拟机快照(检查点)

1) 选择“应用”:自动关闭虚拟机,然后还原虚拟机

2) 选择“创建检查点并应用”:创建当前虚拟机的当前状态快照,然后执行还原虚拟机

二、 删除虚拟机快照

删除虚拟机快照可以节省物理磁盘空间,例如上文说的,系统补丁更新完成之后,对当前业务系统没有产生任何影响,此时可以删除虚拟机快照,在执行删除快照过程中,Hyper-V会自动执行磁盘合并,将正在删除的快照硬盘文件与父快照的硬盘文件合并。

1. 虚拟机关闭删除快照

选择要删除快照的虚拟机的快照,右键选择“删除检查点”即可删除虚拟机快照

Hyper-V Server虚拟机快照(检查点)

2. 虚拟机运行中删除快照

前文说过,在Hyper-V3.0以前合并快照文件必须关闭虚拟机,到了Hyper-V3.0以后,可以在虚拟机运行中删除并合并虚拟机快照以减少服务器宕机时间。有一点需要注意的是,在虚拟机运行中,需要选择删除检查点子树才能彻底删除快照并合并快照文件

Hyper-V Server虚拟机快照(检查点)

Hyper-V Server虚拟机快照(检查点)

三、 生产环境可能出现的问题

虚拟化中的快照功能,是管理员实施过程中是一个很好的功能,但是也同样存在很多问题。

1. 不能恢复指定的文件:出现此种问题一般多为管理员误操作执行某一个动作造成,可能只能恢复到创建快照时的系统状态。建议管理员执行此操作时确认无误后在执行相关操作。

2. 占用过多磁盘空间:执行虚拟机快照后,会生成.avhd/.achdx文件,当快照越来越多时,会不断地动态写入新的数据到快照文件中。建议管理员定期清理不再需要、过时的快照文件

3. 增加系统负载:一个虚拟机创建了N个快照文件后,如果系统需要执行检索功能,此时需要在多个快照、以及子树中查询才能找到需要的数据,会增加磁盘I/O操作,此时需要分配更多的物理资源完成此操作,必将降低系统性能。

4. 快照不是备份解决方案:快照只是将系统保存到当前某一状态,不能当作备份解决方案,虚拟机中运行的应用程序不能识别快照,执行了某一个关键更改时可能无法回退到修改前的状态



     本文转自 徐庭 51CTO博客,原文链接:http://blog.51cto.com/ericxuting/1587181,如需转载请自行联系原作者

相关文章: