Archive for the ‘Uncategorized’ Category

Hosted Virtual Machines with XenApp

July 30, 2009 Leave a comment

Today on one of Citrix’s Blogs, they announced a new upcoming technology called “Hosted Virtual Machines” (HVM).  As if the Virtualization Soup of technology wasn’t big enough already, but this does solve an interesting problem.  Without much more information on the subject, here is my take.

Short Version: You want to host an application on a managed VM, but Terminal Services won’t work for a number of reasons.  With HVM, you use a client OS such Windows XP to run the application, but the presentation of it (just like Terminal Services) is then sent to the user.

Long Version: It seems that “Virtualization” is getting more and more attached to every new technology, but at the end of the day it’s about access to applications (that includes the OS and other applications).  Let’s put aside the delivery of an OS for now and focus just on the application.  There are a number of ways to provide a user with access to an application.

  1. Traditional – This is where you get a CD or copy files from a file share and install the application locally
  2. Terminal Services – Based on using a single OS instance, such as Windows Server 2008, and allowing multiple users to logon at one-time, but they each have their own “space”/desktop.  The display of that OS, or sometimes just a given application, is presented to the user.  Everything runs on the server, but show to the user on their computer
  3. Application Virtualization – There are a few flavors of this.  This simplest view is about delivery.  The application is “preinstalled” and “captured” on a given OS (do a traditional install, but all files, registry settings, shortcuts, etc. are captured) and then deployed to any number of users.  So one “install” is then executed on any number of computers.  The application will run on the local computer, BUT it’s not installed there.  No files, registry, or shortcuts are anywhere to be found on your computer, but it still works locally.  That’s the virtual part.  Again, it’s all about deployment.

The big issue here is the ability to still provide “Terminal Services” like deployment of applications, but overcome some of the issues that “Terminal Services” (TS) has.  What kind of TS issues?  Well TS is still a Server OS.  It doesn’t have may of the client components (e.g. Windows 7) that some applications require.  TS is also Multi User based and there are some application that don’t work there either.

So why can’t Application Virtualization (e.g. Microsoft App-V or Citrix XenApp) work?  First off, there are certain applications that are developed either by a custom software development shop and built for a given customer and for a given OS/Application mix.  There are other applications that are certified by an Independent Software Vendor (ISV) that has specific requirements.  And then there are organizations like the Government, Health Care, and more that need to ensure that certain applications and data behave in a given way.  For all of these scenarios, an IT shop may want to provide an application to their users, but refrain from deploying them locally, it won’t work via TS, Application Virtualization won’t fulfill their requirements, and whatever else.

So the solution by Citrix XenApp (in the future) opens some very interesting doors.  I don’t think it will be part of the mass adoption, but it will break down certain barriers.

This leads me to think of other solutions such as Microsoft MED-V (Part of MDOP) and MokaFive that provide this kind of host based virtualization, although with HVM Citrix also allows this to be hosted on a server.  I guess I’ll have to wait for a Citrix demo and trial for me to learn more.

BTW, I wonder how this will impact hosters looking to get into the application delivery model.  Since this does require another client OS, Citrix rightfully notes that you’ll need the Microsoft VECD license.  Too bad VECD is not on the Microsoft SPLA list.  Bummer

Categories: Uncategorized

Microsoft VDI Suites Licensing

July 14, 2009 Leave a comment

I just read the announcement that Microsoft put out about their new licensing model for Virtual Desktop Infrastructure (VDI):

If you’ve ever had to figure out Microsoft licensing for any type of business use, you’ll know how complex (and frustrating) it can be.  There’s plenty of good reasons why it’s so complicated.  With the VDI scenario, it makes licensing even harder since you’re not just talking end devices anymore (e.g. your laptop), but you’re also dealing with many virtual components (e.g. virtual applications deployed on a virtual desktop, deployed on a virtual server, deployed on a thin-client).

So based on the new announcement, when it comes to doing an all Microsoft VDI solution, what licensing components do you need to keep in mind?

  1. Microsoft Virtual Desktop Infrastructure Standard Suite (VDIS) – This is the “Platform” license.  It covers all of the licenses you need to run a complete Microsoft solution for VDI.  It spans Virtual OS (Hyper-V), Management (System Center + MDOP), and Server CAL (Remote Desktop).  (Premium Suite includes additional rights for Session Based Remote Desktop….Formerly named Terminal Services)
  2. Microsoft Windows Virtual Enterprise Centralized Desktop (VECD) – This is actual client OS license.  It’s covered per device (e.g. the thin-client that you connect from) and allows you to run up to 4 OS instances from that device (which can be spread across any number of servers). Even if your NOT using Microsoft for your Hypervisor and/or management (e.g. you’re using VMware or Citrix), you MUST still purchase this license.

So what does this mean from a cost perspective?  Both of the licenses above are priced on a per device (e.g. thin-client or “Legacy” PC) on a per year basis.

  1. VDIS Standard: $21.00 (US) per year
  2. VECD for SA: $23.00 (US) per year – This is if your device is a Windows Client OS that ALREADY has Software Assurance on it.
  3. VECD: $110 per year. – This is for a traditional Thin-Client.

So why does Microsoft do a VECD license in the first place?  If you look at the license of the Windows Client OS (like I’m sure we all do), you’ll notice that the license is perpetual.  So where you install it, it must stay there.  Not only that, I need an OS license for each OS Instance I use.  With VECD, I don’t have that same headache.  The IT department can deploy any number of combinations of Windows XP, Windows Vista, and Windows 7 for specific role, tasks, training, or whatever.  It doesn’t need to track the total number of virtual OS instances for licensing as the OS license is being tracked by the number of end devices using a given image.  Now this doesn’t mean that an IT department will deploy thousands of images (what a headache) as there are better ways to use “golden” images and to dynamically deploy new Virtual Machines to a “Pool” of available clients (Future Post!!).  But this does free up the IT department to provide OS Instances and Applications on demand for customers because VECD covers them to do so!  Again, this is something that is a MUST for ALL VDI DEPLOYMENTS no matter what vendor you use for Virtual Desktop.

I think the license change from Microsoft will make it MUCH easier for customers to budget for Virtual Desktop using the Microsoft platform.

Categories: Uncategorized

My first book: How to Cheat at IIS 7 Server Administration

April 16, 2007 Leave a comment

I was fortunate enough to be asked to contribute to a new book focused on IIS 7.0.  I thought this would be a great way to dive deep into the product which would in turn help me sell the platform as Windows Server 2008 comes out (although the book focuses on Windows Vista).  The final name of the book is “How to Cheat at IIS 7 Server Administration“.  The target audience for this book is the IT generalist that is looking to quickly learn IIS 7 and perform the standard operational and support function.  This was my first time contributing to a book and it was quite the effort.  It took up many nights and weekends, plus I had a two week deadline (that was rough).  I may contribute again in the future, but I’ll have a better idea of what I’m getting into and plan accordingly (with my family that is).

Chris Adams was the Technical Editor and I was one of the contributing authors and I produced Chapter 6: Troubleshooting 101.  Although I’m not listed as an official author, my name is printed on the cover of the book and I’m listed as a contributor within the book as well.

  • Paperback: 384 pages
  • Publisher: Syngress (May 28, 2007)
  • Language: English
  • ISBN-10: 1597491551
  • ISBN-13: 978-1597491556
  • Product Dimensions: 9 x 7.4 x 1.2 inches

Here is a blog post by Chris Adams as he gives a brief overview of the book:

Get your copy today!


Categories: Uncategorized

Copy/Increase a VHD using VHDMount

January 4, 2007 Leave a comment

So after my first post on the subject of “expanding a VHD” by actually copying the contents of a VHD image using WAIK (Copy a Microsoft Virtual Machine VHD/Increase VHD size using Windows Automated Installation Kit), I got some good feedback on my laziness of not going down the VHDMount method. So I took a bit of time tonight to work through that scenario.

A key new feature in Service Pack 1 for Microsoft Virtual Server 2005 R2 is the availability of a new tool named, “Offline VHD Mounting”. It’s a command-line utility that allows you to mount a Virtual Hard Drive (VHD) as a local drive on a host server. The great advantage to doing it this way versus using an imaging technology (like I did using ImageX.exe as part of the WAIK), is that you don’t need the overhead of taking a snapshot, deploying, rebooting, etc. You simply need to mount the original image, mount the new image, and then do a copy.

Before we get started, please make sure that you have downloaded and installed the following

So here are the steps I took to “expand a VHD” by coping the contents from the original to a new VHD that was created at a much larger maximum size.

  1. Ensure the Virtual Machine (VM) that holds the original VHD is currently stopped.
  2. Mount the original image
    1. Open a Command Prompt and change directories

      cd “C:\Program Files\Microsoft Virtual Server\Vhdmount\”

    2. Mount the original image (the path I have below reflects my deployment.

      vhdmount.exe /m F:\Images\Configs\DepA-Web02\DepA-Web02.vhd V

  3. Create a new VHD – Using the Virtual Server Administration Website, create a new Virtual Hard Drive (VHD) that has the new storage capacity that you feel you’ll need.
    1. Click Start > All Programs > Microsoft Virtual Server > Virtual Server Administration Website
    2. From the Virtual Disks menu, select “Dynamically Expanding Virtual Hard Disk” or “Fixed Sized Virtual Hard Disk
    3. Provide the new hard drive name and location. You may also notice that the default size for a VHD is no longer 16 GB, but is now 127 GB.
    4. Click the Create button
  4. Mount the new VHD (same steps as step #2, but you need to point to the new VHD location)
  5. Once the new VHD is mounted, I wasn’t able to actually see it using File Explorer. As any new drive, virtual or physical, it has yet to be partitioned and formatted. So the next step is to create a partition and format the new VHD. This (as is everything else) is done on the host machine. There are two ways that we can perform this task: The GUI way using the “Disk Management” MMC Snap-in or the command-line way using the “DiskPart” utility. Below are the steps using DiskPart
    1. Open a Command Prompt and execute:


    2. Find the disk number for the new image. It should have a “Size” and “Free” value that are the same number AND should be the size of the VHD that you created.

      list disk

    3. Now we’ll create the partition on the drive (the disk number for my new VHD was 4, but you should use the number that you found from the above command) and assign it a drive letter

      select disk 4


      create partition primary

      assign letter=w


    4. The next step is to format the new drive

      format w: /FS:NTFS /Q

    5. Finally, we’ll go back into diskpart and activate the partition


      select disk 4

      select partition 1



  6. At this point, we now have a VHD drive ready to be used. So now we’ll simply start copying all of the contents from the original image to the new image. (This will take a while…)
    1. Using the default xcopy command within Windows, we’ll copy all of the contents

      xcopy v:\ w:\ /E/H/K/O

  7. Once the copying is complete, we should now unmount the drives
    1. Open a Command Prompt and change directories

      cd “C:\Program Files\Microsoft Virtual Server\Vhdmount\”

    2. Mount the original image

      vhdmount.exe /u v

      vhdmount.exe /u w

  8. We’re now ready to point the target Virtual Machine from the original VHD to the new VHD.
    1. Click Start > All Programs > Microsoft Virtual Server > Virtual Server Administration Website
    2. From the “Virtual Machines” menu on the left side, hover over the “Configure” section and then click on the target Virtual Machine from the pop out window.
    3. Click on the “Hard Disks” configuration section link
    4. We don’t “really” need to remove and add a new hard drive. What we’ll do instead is point the old path to the new path in the “Fully qualified path to file” section for the appropriate disk. Then click OK.
  9. We’re all done! Now you can start up you VM and it should now be using your new VHD, but with the previous (and I’m sure lots of time invested in created) content. But don’t delete you VHD just yet. I’d give it a few days or hours of testing before you delete the original VHD to save space.

I’m sure most of this could be scripted out and perhaps that’s another late night project for me. But for now, this should at least get you going down a path that worked for me.


I thought some of you might find the before and after file sizes interesting:

  • Original VHD: 15 GB
  • WIM of original VHD: 5.58 GB
  • VHD using WAIK: 12.5 GB
  • VHD using VHDMount: 13.3 GB
Categories: Uncategorized

Copy a Microsoft Virtual Machine VHD/Increase VHD size using Windows Automated Installation Kit

January 3, 2007 Leave a comment

I have a standard set of Virtual Machines images that I do much of my development with. For the most part, I created the virtual machines and their associated virtual drives using the default settings. As I’m using Microsoft Virtual Server 2005 R2 (x86), the default size for a new virtual drive is 16 GB (this changes with Service Pack 1 to 126 GB). This has been plenty of space and all things have ran well, until I started to install the Microsoft .NET Framework 3.0, Visual Studio 2005 Extensions for Windows Workflow Foundation, Vista and .NET 3.0 SDK, Visual Studio 2005 Extensions for .NET 3.0, and much more. I didn’t run all the way out of space, but I was getting close. So I needed to expand my virtual hard drive.

At the moment, there isn’t a feature in Microsoft Virtual Server 2005 R2 (not even with the Service Pack 1 beta) to expand the size of a virtual hard drive. So begins the challenge…

Since I couldn’t make a modification to the original virtual hard drive (VHD) in order to increase the amount of space, I would need a way to copy the contents of the original VHD and store that data on a new VHD. There were two options that I looked into. The first was to leverage the new feature available in Microsoft Virtual Server 2005 R2 Service Pack 1( named, “Offline VHD Mounting”. This enables me to mount a VHD drive as a local drive on my workstation and access it like a physical drive. So in theory, I could simply copy and paste the content. I tried this out with not much success. The issue I ran into was trying to mount to a newly created VHD. To be fair, I didn’t spend much time working through this issue as I quickly dove into my second option.

The next approach was to leverage the newly released Windows Automated Installation Kit:

The Windows Automated Installation Kit (WAIK) is a deployment and imaging technology the enables IT administrators to take snapshots of a base image, deploy the image, and even directly edit the image while in its compressed form. There ton’s of cool stuff in there and I encourage you to read the following article to learn more:

There are many advantages to leveraging WAIK to solve this problem:

  1. It’s a freely available download from Microsoft and fully supported
  2. It’s a core deployment technology for Windows Vista and soon Windows “Longhorn” server
  3. Windows XP and Windows Server 2003 are supported clients for deployment

Another very interesting component of WAIK is the WindowsPE component. WindowsPE enables you to create a bootable CD the provides support for network connections, manage the disk partitions, and (of course) kick off a capture or attach (aka deploy) an image. Here’s a great article to learn more:

Before you get started, make sure you download and install the following software components:

OK, so let’s get down to how I used WAIK to create a copy of a VHD with an increased disk size. In the steps provided below, I provide the steps I took and the command line arguments that I used. This doesn’t mean that this is the only way it can be done, but points out what I used to get the results I was looking for and that matched my configuration/environment. Also, many of the WAIK steps noted below can be found in the “Getting_Started_ITPro.rtf” document provided as part of the WAIK.

  1. Make a WinPE Image

    cd Program Files\Windows AIK\Tools\PETools\

    copype.cmd x86 c:\winpe_x86

    copy “c:\program files\Windows AIK\Tools\x86\imagex.exe” c:\winpe_x86\iso\

    Oscdimg -n c:\winpe_x86\ISO c:\winpe_x86\winpe_x86.iso -n -bc:\winpe_x86\

  2. Using Virtual Server Manager, map the WinPE ISO to the target Virtual Machine
  3. On your workstation (or other server on the network), create a new folder share. We’ll use this as the location to store our WIM file which will be an image of our VHD.
    1. Name: wim
    2. Share Permissions and folder permissions set to allow for rights
  4. Boot the Virtual Machine (WinPE will then start)
  5. From within the WinPE command line environment (running inside of the target VM)-Create a connection to the share

    net use z: \\computername\wim /user:computername\username

  6. Capture the image.
    1. Change to the “d:” drive
    2. Capture the image

    imagex.exe /compress fast /capture c:\ z:\myimage.wim “my image” /verify

  7. Using Virtual Server Manager, create a new VHD. Don’t forget to change the default size of the VHD.
  8. Using Virtual Server Manager, edit the configuration of the target virtual machine. Within the “Hard Disks” settings, remove the original drive and assign the new VHD. Save the changes.
  9. Boot the Virtual Machine (WinPE will then start)
  10. Partition and format the new VHD


    select disk 0


    create partition primary

    select partition 1




  11. Map a drive to the share where we stored the captured image

    net use z: \\computername\wim /user:computername\username

  12. Apply the image previously captured to the new VHD

    imagex.exe /apply z:\myimage.wim 1 c:

  13. Remove WinPE ISO from VM
  14. Restart VM

At this point, you should be all set. What you’ll now have on your local hard drive is your original VHD (not assigned to an Virtual Machine), a WIM file which is a snapshot of your original VHD, and a new VHD (larger in size) with the content from the Original VHD.

I’ve had this up and running for a few days now without any issues. I hope this helps and I plan on doing some more posts on this subject as I start to use it more

Categories: Uncategorized

New Pics

July 21, 2005 Leave a comment
I added some recent Family photos we took at a studio and some pictures of the kids in the Photos section.
Categories: Uncategorized