Friday, April 3, 2009

One App, One Windows - on VMware

I checked out VMware Workstation's Unity view mode about a month ago and I can't get by without it. Unity view allows any application in a Windows virtual machine running inside your VMware Workstation to appear "seamless" on your Windows desktop. Any application running inside your virtual machine appears exactly as if it was installed locally, the only thing to indicate it is a "Unity" app is a small VMware "boxes" logo next to the Minimize icon:

Unity also has its own Start Menu so that you can start new apps as needed within that virtual environment:

The reason I was drawn to Unity in the first place is ease of use when switching between local and virtual applications. And the reason why I had to use virtual apps is to be able to switch between different user identities as quickly and seamlessly as I could. The identities I was switching between were mainly my Google accounts - my personal account and my blogging account.

This leads me to the main topic of my post: One App One Windows - on VMware...
The reminder of my post may make you think I am ideologically opposed to Windows, which I can assure you I am not. What I am opposed to is Windows being the "OS". Let me explain. 

Over the years, Windows operating system has grown well beyond the needs of users. Both in the case of desktops and servers. Users generally do not care about underlying functionality provided by the Windows OS. They care about applications. They care about being able to quickly start and shut down the computer, switch between applications, copy and paste, work with images. To them, Windows is a vehicle for running their applications. But Windows is not optimized to run applications. Windows is a general-purpose operating system trying to satisfy every user need, in effect not being "incredible" at any of its finite functions.

However, Windows is also the de facto only OS option out there (Apple Macintosh OS is really not different from Windows as far as the points I am driving in this post). This is GOOD. We are at this point in computing that we absolutely cannot afford even two different standards. We need one and Windows is great at providing that singular unified front upon which applications run. 

But that is all Windows really ought to be: a reliable, rock-solid platform that knows how to run user applications well and fast. But Windows has been an Operating System, which needs to control many aspects, some of which are actually more critical than application performance - i.e. management of hardware and how the overall system performs. To illustrate how inefficient Windows is at it, follow my example: It is a well known fact that Windows slows down with time. For any of you who owns or works with Windows (who doesn't??) must have noticed this. When you get a new PC, the performance is great. After 1-2 months is becomes "almost" intolerable (I say Almost because people accept it as part of the deal - mostly unconsciously - and do not question it). After a month of regular daily usage key end-user performance measures drop like a stone: Starting and Shutting down Windows, starting apps, killing unresponsive apps (which tend to increase in number as time goes by), copying and pasting, working with graphics, to name a few.

Windows Servers suffer from the same fate (albeit to a lesser degree). It is not as noticeable because little end-user interaction with these systems takes place but believe me it is true. Server apps do slow down unrelated to other technical issues or problems - just because as the time goes on Windows becomes slower at handling tasks.

I do not postulate abandoning Windows - no, not at all. I think Windows has a great GUI, is very intuitive to use, and all the apps work on it. What I postulate is that Windows gives up control of what it does poorly: controlling the system and hardware, and instead focus on running the applications well all the time.

Let VMware hypervisor take care of the system management. Wouldn't it be great if I could refresh Windows on my laptop weekly - get that new car smell every Monday morning, that feeling of fast, reliable, rock-solid. It is difficult to do even for us geeks, and definitely an impossible feat for a typical user. However, with VMware it will soon be possible to do just that (via a client-side Type-I hypervisor they are working on - that in itself is a topic for an entirely new post though).

On the server side, it has been possible to do for years now and as a matter of fact many (thousands.. perhaps millions) data centers already utilize VMware ESX to shield (protect??) Windows from the hardware and system management tasks so it can focus on running apps.

Which brings me to the final key point of my post: Windows itself is an application that VMware hypervisor runs and manages best. Always fast, always reliable and fault-tolerant, always rock-solid. Exactly the way we want our beloved Windows to run but have never been able to. Each of these Windows applications is itself only permitted to run one "utility" application (end-user or server). Architected and deployed in this fashion, it truly becomes possible to have rock-solid performance from your Windows your Application, every time.

Just like with my Unity - I don't care about whatever else is on the virtual windows. All I care about is to have an isolated Gmail available to me to switch to instantly whenever I want to. And also to be able to dismiss it fast (err.. to hide my blogging addiction from a passing-by boss :-) by hitting that red square button.

Time will tell whether VMware is successful at wrestling the control of The System from Windows. 

Thursday, April 2, 2009

How to resize a Windows guest vm boot partition in ESX Part II: manual method

In one of my previous posts I showed how to resize a Windows virtual machine's C: (boot) drive using VMware Converter. In this post I will show how to do it without the Converter, instead utlizing widely available tools and command line.

First I need to putty over to my ESX host and expand the disk here using the vmkfstools utility:

I picked a test machine called VCBTest to perform this procedure on.
The disk expansion takes place immediately:

Once the disk is resized, I need to use a 3rd party utility called gparted to resize the boot partition in Windows. I downloaded gparted from http://gparted.sourceforge.net/download.php
and copied it to my Data Store. I then configured the VCBTest vm to boot from that gparted iso:


gparted iso is based on a Linux distro:


Once gparted boots , I can modify the size of the partition:


After the resize is done, I boot up that vm and when it comes up, the boot drive is properly re-sized to 12 Gb:

How to ThinApp Internet Explorer 8.0

One of my customers was asking if it was possible to ThinApp Internet Explorer 8. He was not ready to roll out IE8 to all his users just now, but wanted to give his users a taste of the new browser, without the risk of interrupting how their systems operate. Currently, all their machines have IE 6 installed on them:

My answer to him was YES - it can be done. I performed the following demonstration to him:

I reverted my thinapp capture WinXP system to the clean state snapshot. Once reverted, I went to microsoft.com and downloaded the IE8 setup to the capture system:

I then started the ThinApp capture and let it do its pre-setup Scan. Once the scan was done, I minimized the ThinApp Capture and kicked off the IE8 install:


Internet Explorer setup went without a hitch. Once it completed, it asked for a reboot... No worries there. ThinApp handles a situation like that without a problem. You just need to let the setup reboot the system. Once the system comes back up, the ThinApp Capture will start automatically and give you the choice to continue:


I asked it to continue the installation process. Once it performed its post-setup scan I told it to make IE8 available to all Domain Users:


Afterwards, it completed the build process and I copied the package (I called it Internet Explorer.exe) to a network location. I asked my test user to run it from their typical desktop (with IE6 only). They could run IE8 without any issues. Also, running IE8 alongside IE6 was without any problems:


The screenshot below demonstrates how IE6 and IE8 are run alongside on the Adobe Flash website. Note: IE8 has Flash installed, and IE6 does not have the Flash plug-in installed:


This further demonstrates application management power and flexibility that comes with ThinApp. 

Wednesday, April 1, 2009

How to resize a Windows guest vm disk in ESX Part I: VMware Converter

A couple of days ago one of my customers asked me if it was possible to increase the size of the C partition on one of his Windows 2003 servers. He did not size that vm's (and a few others, as it turned out) disk large enough and was running out of space.

There are a few ways to resize a Windows vm disk. In this post, I am going to look at how it  is done with VMware Converter. In another post I will tackle a more advanced/challenging method without Converter. Let's take a look:

In order to use the VMware Converter, I would select my vm in the Virtual Center Inventory and choose the "export" option:


Let's try making the disk smaller first:


In this example, I changed the size of the disk from 6 GB to 5 GB.
Upon completion of the Export wizard, the Converter goes off to build the new disk:


Once the new vm is created, I boot it up and the disk reflects the new size:

I can also use Converter to increase the size of my disk:


After the machine is exported, the new disk reflects the bigger size:


NOTE: As readily observable, export/import with decreasing the disk size takes roughly 3 times longer then increasing the size of the disk. The reason being that if you do not change the disk size or increase it, then it does a block level clone of the drive. If you reduce the size of your original disks it instead does a file level clone of the drive (much slower).