zoukankan      html  css  js  c++  java
  • Openstack_通用模块_Oslo_vmware 创建 vCenter 虚拟机快照

    创建虚拟机快照

    vSphere Create Snapshot 文档

    Snapshot 是虚拟机磁盘文件(VMDK)在某个点及时的复本。包含了虚拟机所有虚拟磁盘上的数据状态和这个虚拟机的电源状态(on/off/suspended)。你可以在虚拟机起电, 关电, 挂起的状态下创建一个 Snapshot。

    当你创建了一个 Snapshot, 系统会为其在 Datastore 上创建了一个 delta 磁盘文件并且写入所有变化到这个 delta 磁盘文件中。

    vSphere 的 MO 对象 VirtualMachine 提供了创建快照, 恢复到 snapshot_tree 上任何快照点和移除快照的方法。

    VirtualMachine.CreateSnapshot_Task 方法可以创建一个虚拟机的新快照, 并且附带的, 当前快照会变成这个新快照的父级快照。该方法允许设置快照名, 同时也需要设置 memory 和 quiesce 属性。

      • memory: 若为 true, 则虚拟机内存状态 dump(memory dump) 被包含在快照里。内存快照会消耗时间和资源, 需要较长的时间来创建。若为 false, 则快照电源状态被设置成关闭, 无需处理内存快照。

      • quiesce: 若为 true 且创建快照时虚拟机处于开机状态, VMware Tools 通常会用于静默虚拟机中的文件系统, 确保磁盘快照和 GuestOS 文件系统状态是一致。假如 
        虚拟机的电源状态为关闭状态或 VMware Tools 不可用, 那么 quiesce 会被忽略。

     1 from oslo_vmware import api
     2 from oslo_vmware import vim_util
     3 
     4 # Create the vmware session
     5 session = api.VMwareAPISession(
     6             '<vCenter_server_ip>',
     7             '<vCenter_server_username>',
     8             '<vCenter_server_password>',
     9              1,  
    10              0.1)
    11 
    12 # Get the instances list with vmware SDK
    13 instances  = session.invoke_api(
    14                             vim_util,        
    15                             'get_objects',              
    16                             session.vim,                 
    17                             'VirtualMachine',                
    18                             100) 
    19 
    20 # Select a instance if you want to create snapshot
    21 instance = instances.objects[2].obj
    22 
    23 # Start to create the snapshot
    24 session.invoke_api(session.vim, 
    25                    "CreateSnapshot_Task",
    26                    instance,
    27                    name="JMILKFAN",
    28                    description='Just Create',
    29                    memory=False,
    30                    quiesce=False)

    NOTE: 方法 session.invoke_api() 的第一个参数为提供函数调用的模块, 第二个参数为要从中调用的函数, 其余的参数会作为实参传入第二个参数(函数)中. 至于这些被传入的实参是怎么来确定的呢? 我们可以通过查看 vSphere SDK 文档来确定. 

    EXAMPLE: 

     

    从上图可以看出 CreateSnapshot_Task() 函数需要传入 _this/name/description/memory/quiesce 等 5 个参数. 其含义分别为:

    • _this: 需要创建快照的虚拟机
    • name: 指定快照的名称
    • description: 指定快照的描述
    • memory/quiesce: 在上文中已经提到了

    最后

      • 恢复一个快照

        • VirtualMachine.RevertToSnapshot_Task 
          恢复快照的方法需要指定一个目标 Host 和指定虚拟机是否开机, 当恢复一个快照的电源状态为 True 的虚拟机时, 就必须指定一个目标的 Host 或者将 SupressPowerOn 指定为 True.
      • 删除一个快照

        • VirtualMachine.RemoveAllSnapshots 
          删除一个虚拟机的所有快照.
        • VirtualMachineSnapshot.RemoveSnapshot_Task 
          删除一个虚拟机指定的快照, 其中 VirtualMachineSnapshot 是创建快照函数 CreateSnapshot_Task 返回的对象.

    转自:

    http://blog.csdn.net/jmilk/article/details/53174277

  • 相关阅读:
    vue中判断APP 为ios系统 安卓系统 浏览器判断 微信 qq 支付宝
    vconsole调试工具使用
    vue 电话号中间四位****代替
    vue中使用倒计时
    在APP中ios输入账号和密码时键盘闪烁
    vue中返回随机数
    vue 阿里云的滑动验证
    从零开发一套完整的vue项目开发环境
    vue中修改第三方组件中的样式
    nginx 启动报错dyld: Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib
  • 原文地址:https://www.cnblogs.com/menkeyi/p/7890913.html
Copyright © 2011-2022 走看看