Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Overview

Target

  • Hyper-V Server 2012
  • WMI for VMM control

Strategy

  • CloudStack Agent Model
  • Business logic in ServerResource accesses WMI

Phase 1

Support basic commands

  • VM lifecycle
    • Local disk creation from template
    • VM creation, start/stop, and destruction
  • VMM monitoring
    • Host, VM and storage stats returned to CloudStack Server

VM network isolation using VLANs

Basic template management

Phase 2

Expand networking support

  • Flat networking with Security Groups for VM isolation

Volume service

  • Volumes management independent of VMs

Expand VM management

  • Migration
  • Snapshots

Shared storage

Native SystemVMs

  • Console access
    • RDP sessions to Hyper-V VMs

Progress

Progress

Current source GitHub repository https://github.com/lafferty/cshv3

  • Plugin is cloud-plugin-hypervisor-hyperv, under ./plugins/hypervisor/hyperv
  • Minor changes to UI required for template creation

CS 4.0 Hyper-V Plugin

Target Hyper-V Server 2012

  • Hyper-V 3.0
  • WMI for VMM control
  • No NFS client

Architecture

...

  • Reuse KVM-style Agent Container
    • Java-based
    Container
    • agent executes on
    each
    • hypervisor
    • Call out to WMI via Hyper-V
    Business Logic accesses WMI via
    • scripts
  • Use existing SystemVMs
    • Run on surrogate XenServer cluster

    Current Limits

      • Include XenServer cluster to run SSVM and Virtual Router
    • Reduced set of commands and command options
      • Constrained by time
    • VLAN isolation only
      • Use virtual router SystemVM for isolation
    • Local Primary Storage
      • Admin manually configures shares to appear as local Local folder
    • NFS Secondary storage accessed as NFS/SMB via Windows Server 2012
      • Windows Free license Hyper-V Server 2012 exposes share as NFS and SMB

    Problem Areas

    Lack of detail for Service Contract parameters

      • The meaning of parameters in Command objects not clear. E.g. Volume objects in CreateCommand
    1. If volumes keyed by UUID, does the plugin need to persist the volume name?
    2. If UUIDs are arbitrary, can they include the volume file extension?
    3. Can the volume path include the file name?

    NFS configuration on Windows Server

      • Need technical assistance, as XenServer SSVM not able to mount NFS folder shared by a Windows Server 2012. Work around is manually mirroring templates on share mounted on Hyper-V.

    Surrogate System VMs

    • No SystemVMs to run on Hyper-V

    Future

      • has no NFS client
      • Admin manually mounts secondary storage to appear as local folder
    • Executes in Cygwin

    Design changes

    Near

    Adopt Javelin Storage model

    • Avoid NFS requirements

    Far

    V2 WMI API

    • Currently mix of v1 and v2

    Access WMI from Java

    • Remove use of scripts
    • Remove agent from Hyper-V server
    • WMI expertise
      • Examples from OpenStack driver not in depth enough
    • Java / WMI interop Recommendations for avoiding calling WMI through Python welcome. Calling scripts problematic if it turns out that they freeze.

    Misc Design Notes

    Local Storage

    • UUIDs for volumes correspond to their file names on disk. Only this UUID is persisted on the Hyper-V Server

    Secondary Storage

    • Windows Server 2012 exposes share as NFS and SMB

    Misc QA Notes

    Unit tests

    • Each test corresponds to one or more Command objects sent to a ServerResource
    • No unit tests for server-side objects (Discoverer or HypervisorGuru)
    • Tests written to work only on a Hyper-V 2012

    Road Map

    • Provide Windows Service for connected agent
      • Windows Service is equivalent to Linux daemons.
    • Integrate with Javelin storage model
      • Removes NFS requirements
    • Add Hyper-V system VMs
    • Make WMI access more robust.
      • Access WMI directly from Plugin to avoid script maintenance.
    • Support basic networking
    • Support broader set of CloudStack commands

    Background

    Original Feature Spec