| Cameron's profileCameron Fuller’s T2R2PhotosBlogLists | Help |
|
|
May 21 Free Disk Space on Windows 2008/Vista, Virtualization, HibernationWe have a large number of servers in our environment which are virtualized and as a result they are created with C drives that are relatively small compared to physical servers (there is no reason to provide a 128 GB C drive on a virtual system if it can be stored in 30 GB). This approach makes it viable to run a large number of virtual guests on a limited amount of disk space. Unfortunately this means that we need to keep the operating system drives a clean as possible. We recently started running out of room on some of our virtuals, and to dig up additional disk space one of the guys here came up with a solid option. In the example below, we have a Windows Server 2008 system which has 2 GB of memory assigned to it. We currently had 13.5 GB of available disk space (on our systems which we originally performed these changes, they were often down to less than 1 GB of free disk space). To free up the drive space, we removed the file for hibernation. This is done with the “powercfg –h off” command from the command line. As shown below, this will fail unless you open the commandline with administrator rights as shown below: A successful removal of the hibernation file is shown below: This freed up an additional 2 GB of disk space on the C drive (the same size as the amount of memory shown on the server above) and did not require a reboot of the system. For virtual systems this removes the ability to hibernate, but we do not use hibernation on any of our virtualized systems so that does not represent an issue. Summary: Running out of free space on a Vista or Server 2008 and it’s virtualized? Try removing the hibernation file! Thank you to Shane Carden who took our lack of disk space situation and tracked down this option! August 07 System Center Virtual Machine Manager – T2R2 Thoughts
System Center Virtual Machine Manager 2008 Beta – T2R2’s Thoughts With Hyper-V now being released, it seems like time to start working with System Center Virtual Machine Manager 2008 (SCVMM). As a background SCVMM 2008 is in beta (available for download at connect.microsoft.com) and now provides support for Hyper-V in addition to Virtual Server 2005 R2. I use a test network to provide virtualization so that I can test out various server products and configurations and such. My test network has two of Hyper-V servers, and had an overflow server which was running Virtual Server 2005 R2. My goal of this installation was to see if I could get it installed and configured and able to manage the various hosts and virtuals in my testing environments. It is extremely important to note that all of the software discussed here in currently not production released code. These are Beta versions of software at this point in time. Please do NOT do this configuration in a production environment. This is specifically an example of evaluating some of the potential upcoming functionality.
Installation of Virtual Machine Manager Server:
The actual installation was pretty straight-forward once I knew about things like needing a Windows Server 2008 x64 which was in the domain. Installation steps looked like this: (video file follows)
Installation of Virtual Machine Manager Admin Console:
Installation steps looked like this: (video file follows) System Center Virtual Machine Manager in action:
SCVMM was able to connect to both of my hyper-v systems (CSFVIRTUAL and CSFVIRTUAL2) and my Virtual Server 2005 R2 server (CSFVIRTUAL3) as shown below.
The various virtual machines can been viewed including their processor utilization, and can be moved between host systems. Attempting to move one of the virtuals resulted in a message that the virtual would be stopped while the virtual was being moved between the host systems.
The various virtual machines can been viewed including their processor utilization, and can be moved between host systems. Attempting to move one of the virtuals resulted in a message that the virtual would be stopped while the virtual was being moved between the host systems. SCVMM assessed the available hosts and provided ratings for which would be the best host to move the virtual onto. When hosts were not recommended, details were provided as to why the virtual could not move to the new host system. This example shows multiple reasons why the virtual could not be moved from a Hyper-V host to a Virtual Server 2005 R2 host because of the configuration of the virtual. A sample of the views available which provide a high level of the state of the hosts, virtual machines, jobs, and library resources in SCVMM. Summary: So what’s the summary? First off, while this is not yet a released product this has HUGE potential benefits! The user interface is intuitive and provides some real power which will bring together virtual resources in an environment. I’m really excited to get a chance to work with this and especially to see how it’s going to integrate with OpsMgr (I may work on that next!). Lessons Learned: What had I wished I knew when I started this process?
Thanks to Mike Thomas for all of this assistance on one of the uglier installations we did, he found and fixed a lot of this stuff! July 31 QuickTricks: Hyper-V Remote ControlQuickTricks: Hyper-V Remote Control Want a quick way to remotely control a Hyper-V guest without using the Hyper-V manager? The program that is run by the Hyper-V manager to remote control is stored in the same place as the Hyper-V management console (c:\program files\Hyper-V\) and is called vmconnect.exe (Virtual Machine Connection). The vmconnect.exe takes parameters of <ServerName> <VMName> <VMGUID> <Count>. Example: Vmconnect localhost All_2008_OpsMgr To connect to the local machine to a virtual by the name of All_2008_OpsMgr. If you go to start/run and run that (c:\program files\Hyper-V\vmconnect.exe) it will open directly to the Virtual Machine Connection. You can also take this executable and copy it to something in the path (such as c:\windows) or add the c:\program files\Hyper-V folder to the path. Then you can just do a start / run, vmconnect to access the Virtual Machine Connection (this assumes of course that Hyper-V is installed on the system you are trying to access the executable from). Running the program without passing parameters looks like this: The full parameters list is: Quicktrick summary: Copy c:\program files\Hyper-V\vmconnect.exe to c:\windows. To open the Virtual Machine Connector go to start/run and type vmconnect! July 24 QuickTricks: Hyper-V Guests booting to PXEQuickTricks: Hyper-V Guests booting to PXE To boot to PXE in Hyper-V from an existing Guest operating system: Shut down the virtual machine. Add a legacy network adapter for the Virtual. Change the boot order to have the legacy network adapter at the top of the boot order. Start the Guest operating system. To boot to PXE in Hyper-V from a new Guest operating system: Create new virtual, choose to install a network connection and then choose the option to Install an operating system from a network-based installation server. This will automatically add the legacy network adapter and change the boot order to the appropriate order for a PXE installation. Start the Guest operating system. July 23 QuickTricks: Hyper-V ManagerQuickTricks: Hyper-V Manager
Want a quick way to get into the Hyper-V manager without opening the Server Manager / Roles / Hyper-V? The msc file for Hyper-V is located under c:\program files\Hyper-V by default. If you go to start/run and run that (c:\program files\Hyper-V\virtmgmt.msc) it will open directly to the Hyper-V manager. You can also take this msc file and copy it to something in the path (such as c:\windows) and then you can just do a start / run, virtmgmt.msc to access the Hyper-V manager (this assumes of course that Hyper-V is installed on the system you are trying to access the msc file from).
QuickTrick summary: Copy c:\program files\Hyper-V\virtmgmt.msc to c:\windows. To access the Hyper-V manager go to start/run and type virtmgmt.msc!
June 17 Stressing out with Hyper-VStressing Out with Hyper-V
I’ve been spending a lot of my time recently working with Hyper-V (pretty evident based upon some of the recent blog entries, I know). In Virtual Server 2005 R2 (or VPC) if I ran very intensive applications in the guest operating systems I saw the impact on the host processor’s operating system. This provided an easy method to determine if the host operating system was insufficient for the requirements of the guest operating system(s). While I have been working with Hyper-V this didn’t seem to be the same situation but I put that off to just timing between when I was looking at the processor utilization on the guest and host operating systems.
I was talking with one of the folks with Microsoft at TechEd last week about Hyper-V and Operations Manager and some different pieces started falling into place. In our discussion Clint Huffman (a really nice person and solid performance analysis guy among other things – blog at http://blogs.technet.com/clint_huffman/) explained that Hyper-V changes how things work from a performance analysis perspective. He referred me to work done by Tony Voellm related to how Hyper-V works and more of the internal details. Good stuff on this from Tony is available in a couple of sets of articles available at http://blogs.msdn.com/tvoellm/archive/2008/03/20/hyper-v-clocks-lie.aspx and http://blogs.msdn.com/tvoellm/archive/tags/Hyper-V+Performance+Counters/default.aspx.
From my perspective the long story made short on this: high processor utilization in the guest operating systems will not necessarily translate into high processor utilization on the host operating system running Hyper-V. Task Manager or the standard performance monitor counters for processor usage on the host operating system in Hyper-V do not reflect the impact that is occurring on the guest operating system(s). There are Hyper-V specific counters which can supplement the standard processor performance counters which are discussed in the tvolellm blog entries above. Before accepting this on faith of the conversation I ran through my own tests.
My test environment was a Windows 2008 server with a dual-core and four gigs of memory running Hyper-V. Multiple guest operating systems were installed which are running in Hyper-V. These include ClusterServer1, ClusterServer2 and ClusterServer3 (see http://cameronfuller.spaces.live.com/blog/cns!A231E4EB0417CB76!1238.entry for background on this). I used cpustress (discussed in http://cameronfuller.spaces.live.com/blog/cns!A231E4EB0417CB76!154.entry) to create the heavy processor overhead I needed to really stress out the guest operating systems. The overall test plan was to track processor performance via Task Manager on the host operating system while I added load to the guest operating systems to track the impact.
Step 1: I run a processor slaughtering application on Cluster Server 2 - maxing out the virtual processor. Assessed impacts to processor on the Server Manager - Virtual machine processor showing at 46% for Cluster Server 2. Checked Task Manager on the Host operating system – Processor utilization hovering around 7%. Step 2: I run the same processor slaughtering application on Cluster Server 3 - maxing out the virtual processor. Assessed impacts to processor on the Server Manager – Virtual machine processor showing at 38% for Cluster Server 2, and 46% for Cluster Server 3. Checked Task Manager on the Host operating system – Processor utilization hovering around 15%.
Step 3: I run the same processor slaughtering application on Cluster Server 1 - maxing out the virtual processor. Assessed impacts to processor on the Server Manager – Virtual machine processor showing at 29% for Cluster Server 2, and 25% for Cluster Server 3, and 33% for Cluster Server 1. Checked Task Manager on the Host operating system – Processor utilization hovering around 14%. Following this is the actual tasks using the processor on the host operating system... Summarized to - Not Much of anything. Lessons Learned:
· Unlike Virtual Server 2005 R2 and VPC, processor utilization on the guests does not appear to have a direct correlation to processor utilization on the host. Additional Hyper-V specific counters may provide this information however. · This has two important impacts that I see. First off, the inability to use the Task Manager to determine the full processor usage on a system with Hyper-V installed that has guests running. While Task Manager can be used to determine tasks that are occurring with the Hyper-V host, the actual processor usage on the system may be significantly higher than is shown in the Task Manager. · This may have some interesting impacts from an Operations Manager perspective as well to either the Server 2008 operating system management pack or to the Hyper-V management pack. A server running Hyper-V may not alert on high processor usage even if the processor is maxed out. As an example, if we take a host system with a dozen virtuals, if each of these virtuals is using 10% of the processor the full processor on the host may be used but it would seem that the Server 2008 operating system management pack may be hard-pressed to determine this condition. June 05 Hyper-V, OpsMgr and Unix? – Part 1Hyper-V, OpsMgr and Unix? – Part 1
To prepare for a presentation at TechEd 2008 and to test out the new functionality available within multiple of Microsoft products, I decided to spend some time working with Hyper-V and seeing how it does with running Unix Operating Systems. My ultimate goal was to provide an environment where I could use Microsoft virtualization technologies on 64-bit Unix platforms, and combine that with monitoring the Unix system through Operations Manager 2007. As a background, I’m a former Unix geek (started on Ultrix and TI Unix) so the idea of a running a Unix system in a virtualized environment and using Windows related technologies to monitor it really strikes a chord with me.
It is extremely important to note that all of the software discussed here in currently not production released code. These are RC and Beta versions of software at this point in time. Please do NOT do this configuration in a production environment. This is specifically an example of evaluating some of the potential upcoming functionality.
Step 1: Getting a platform to run Hyper-V
So, the first step was to take the leap and convert my test environment to Windows Server 2008 running Hyper-V. Luckily for me both my laptop and two of my home servers were able to run Windows Server 2008 x64, and had the Intel VT or AMD-V functionality, so I had a good place to start. As background, to run Hyper-V the requirements include Windows Server 2008 x64 and hardware-assisted virtualization (Intel VT or AMD-V). (The requirements are detailed at http://www.microsoft.com/windowsserver2008/en/us/hyperv-faq.aspx).
I ran across a great article on using Windows Server 2008 as a desktop operating system (http://blogs.msdn.com/vijaysk/archive/2008/02/11/using-windows-server-2008-as-a-super-desktop-os.aspx). I decided to upgrade my laptop (Dell Latitude D830) to Windows Server 2008 x64, and Hyper-V and virtual machines worked on it without any major issues. It was a seamless upgrade from Windows Server 2003.
My first ‘server’ (Dell E521) proved to be more of a challenge. It installed Windows Server 2008 x64 without an issue, Hyper-V worked and virtuals transferred to it, but they would not launch. I found the issue caused by a stepping bug on the processor at http://www.planetamd64.com/index.php?showtopic=36301. I had an “F2” stepping Athlon, and it wasn’t able to launch my virtual machines. So, after a visit to NewEgg and about $100 for a new processor (“F3” stepping this time), all was well on the second system. The third system (a generic 64-bit AMD-V I had available) installed and ran without a challenge.
All right, so now we have multiple platforms that can run Hyper-V. So, what’s next?
Step 2: Upgrading Hyper-V & Moving Virtuals
The version of Hyper-V that was included with Windows Server 2008 was not the final production version (nor is it available currently) but the RC1 was available for download at the Microsoft site at http://www.microsoft.com/downloads/details.aspx?FamilyID=7edaa89f-9f64-488d-93c0-858d2d8799df&DisplayLang=en.
The first guest OS I needed was a working domain controller, DNS server and Operations Manager 2007 system. I decided to port an existing Windows 2003 All-In-One OpsMgr environment I had (see http://cameronfuller.spaces.live.com/blog/cns!A231E4EB0417CB76!903.entry for details). It ran in Hyper-V without an issue, but there were issues with removing the existing Virtual PC extensions. I ended up having to boot back to Windows Vista/VPC and uninstalling them. After installing the VPC extensions, I could install the Integration Services components in Hyper-V. Once those were in place, the server functioned as expected in Hyper-V (the guest was a Windows 2003 SP2 x86 system). It was even able to take advantage of the second processor as shown below!
Before installing the Hyper-V Integration Services, only legacy network adapters would function correctly. After installing Integration Services, regular network adapters would work correctly.
Alright, so we have a functional domain controller and OpsMgr environment. What’s next?
Step 3: Acquiring the Unix Operating System Installation CD’s and Hyper-V Extensions
Ok, so the next step was to get software for installation of a Unix OS. Based upon the documentation, Hyper-V supports the following guest Operating Systems:
So logically enough I went with SUSE Linux Enterprise. I found this link: http://www.novell.com/products/server/eval.html and ran from there. As an FYI, you need a login and password to download the evaluation software. Hey, if it supports x64 gotta go that way. And, since I didn’t pay close enough attention I went ahead and downloaded SP2. Oops.
There are extensions available for Linux integration that are available as part of Microsoft connect (http://connect.microsoft.com).
Step 4: Installing SUSE Enterprise in Hyper-V
First off, I ended up doing this installation about a half a dozen times before I got it right. So, here’s the things to be aware of.
When installing, be sure to set the time zone so that it will match your domain controller. In my case this was Hardware Clock set to Local Time (not the default which is UTC), USA, Central. When I did not choose Local Time, I was unable to get the SUSE system to join the domain due to the message “Failed to join the domain. Time difference at domain controller.”
Hard-coded the IP address of the Unix system so that it will be easier to track down during integration with Operations Manager 2007. Known the IP address makes it easier to debug any network communication issues or agent installation challenges. Also, be sure to set the name server to the IP address of your DNS server for the Windows domain as shown below. This provided name resolution so that the Unix system could join the domain. Integrate the SUSE server to the domain as shown below. To add it to the domain, the Authentication Method required is Windows Domain as shown below.
Be sure to choose the option to “Create Home Directory on Logon” as shown below. I ran into a situation where I could not log on after the installation due to issues with accessing the home directory. After the installation is complete, we are able to log in (authenticating from the Windows domain) and the screenshot below shows what the user interface looks like including a ping to the domain controller in the environment! So, we have a 64-bit Unix system in a Windows domain running in Hyper-V. Pretty darn cool, eh?
Lessons Learned:
A few good lessons learned while doing this process:
· First, check the stepping version of your AMD processor (mine was an AMD 3800+, upgraded it to an AMD 5200+). A great writeup on this is available at http://wchomakw2k8.spaces.live.com/Blog/cns!139BEFE6062466FB!200.entry. · Second, if you are planning on transferring virtuals between an existing Virtual Server or VPC environment, it’s best to uninstall the virtualization extensions before you migrate your system. I ran into a situation where it would not uninstall the virtualization extensions and would not allow me to install the Integration Services used in Hyper-V. · Third, if you will be using Hyper-V without the Integration Services, go with a legacy network adapter. They can be easily found and help to get things networking. Once you are running the Integration Services, you can uninstall the legacy network adapter and put a regular network adapter on it. · When installing SUSE: Set the time to the local time zone, hard-code the IP address/DNS server, join the domain, set it to create the home directory on logon.
So, what’s next? How about using CrossPlat (announced at MMS 2008) to monitor the Unix system we just installed? Part 2 of this topic will be posted to the Operations Manager Unleashed blog available at http://ops-mgr.spaces.live.com !
Also, Ian wroteup a great article on CrossPlat which is available at http://ianblythmanagement.wordpress.com/2008/06/24/xplat-part-2-the-install/. May 30 How do I transfer files to an isolated guest OS in Hyper-V?How do I transfer files to an isolated guest OS in Hyper-V?
I want to run completely isolated virtual environments, but still need a simple way to get files into the environment (software to install, etc). As I have been working with Hyper-V one thing that seems to be really missing versus VPC is the ability to drag and drop files into the guest operating systems. That’s a great feature to have especially when you need a fully isolated virtual environment.
It does not look like Hyper-V provides a way to do this. Hyper-V does provide a way to past text into a guest operating system using the Clipboard, Type clipboard text option. This option actually types the text which was in the clipboard (my test copied over 953 characters before it stopped typing text, if you get the chance try this function as for me at least it really reminded me of typing back on my old Apple II+).
So Hyper-V is the same as the situation was in Virtual Server 2005 from an ability to transfer files into the guest operating system. The same options which were available then are still available now (see http://cameronfuller.spaces.live.com/Blog/cns!A231E4EB0417CB76!130.entry for details on options available to transfer data into a guest operating system in Virtual Server 2005.
I kept thinking that there has to be an easier way to do this, and ran across a slightly different approach with is working pretty well for me at this point. In Hyper-V (or Virtual Server, or VPC, etc) you can mount ISO’s so that they are able to be accessed via the guest operating system. So what I was looking for was an easy way to get data into the ISO’s to transfer over. I have been using MagicISO to mount ISO’s within my host operating system for a while now. I took a look at MagicDisk and coupled with MagicISO this makes a pretty cool option to transfer files into an isolated guest operating system. Here’s how it works.
· On my host Operating System I use MagicDisk to create a “TransferDrive” iso file. I add whatever files are required to the drive as shown below. · I use MagicISO to mount the ISO file as a drive on the host operating system as shown below: · Next I capture the drive within the guest operating system as shown: · This makes it accessible within the guest operating system as shown:
The cool part of this is once the TransferDrive has been created it does not need to be dismounted from the guest operating system to add files. It’s pretty quick and effective. The process to add files is:
1. Dismount it in the host operating system with MagicISO. 2. Add the files in MagicDisk and save the updated version of TransferDrive 3. Re-mount the ISO in the host operating system with MagicISO.
Hopefully this isn’t the best way to get files into isolated guest operating systems in Hyper-V, if you have a better solution please let me know! May 14 SATA vs USB vs Firewire vs eSataLaptop Internal, USB, Firewire and eSata statistics
Trying to determine how to maximize the performance of your virtuals running on a laptop? In previous blog entries I have discussed concepts such as:
Running VPC’s on a thumbdrive: http://cameronfuller.spaces.live.com/blog/cns!A231E4EB0417CB76!1090.entry Compressing Virtuals: http://cameronfuller.spaces.live.com/Blog/cns!A231E4EB0417CB76!109.entry IDE vs. USB vs. Firewire: http://cameronfuller.spaces.live.com/Blog/cns!A231E4EB0417CB76!116.entry
So what about eSata drives connected via ExpressCard, and newer internal SATA connected drives? Here’s what we found:
This is easier to see graphically as shown below:
The eSata drive did perform better but that may have been a function of the increased cache when compared with the internal Sata drive (16 mb vs 8 mb). It seems reasonable based upon the statistics above however that if you want to run virtuals on a laptop and need to expand upon the number of spindles to start with eSata, then go to Firewire, then to USB.
Testing Configuration:
Tests were run on a Dell D830 laptop using SiSoft Sandra and represent read performance on the drives shown. The eSata drive was connected via a PNYExpresscard.
Thanks to James Avery for the statistics that he gathered on the eSata drive configuration. (It looks like I need to go out and purchase an eSata drive for my virtuals!) January 04 Running a VPC on a Flash DriveRunning a VPC on a Thumb drive?
Ever since I started seeing thumb drives which could store more than 2 gb, I have been wondering how a Virtual (Virtual PC in this case) would perform if it was run from the thumb drive. For starters I did a performance test on the thumb drive when compared with the local hard drive to see how the host OS sees them. Here’s what came back: (Gathered from SiSoft Sandra version 2008.1.13.12).
Hard drive: Thumb drive: Compare: Read Performance: Random Access Time: 16ms 1ms 16x faster
From a read perspective, the amount of data which could be read from the thumb drive was about half of what could be read from the hard drive, but the random access time was significantly faster (16x) as would be expected on a thumb drive because the seek time is much faster. So it seemed logical that these two factors might balance each other out and potentially make it as fast or faster to run a VPC on a flash drive.
I started the same virtual up first on the hard drive, performed some tasks and then shut it down. Then I started the same virtual up on the thumb drive, performed the same tasks and then shut it down. The performance of the VPC was barely useable when it was running on the flash drive.
Summary: While it sounds like it may be cool, you probably won't want to run VPC’s on a flash drive. Use a hard drive.
June 11 Compression and Creating Clusters in Virtual ServerCompression and Creating Clusters in Virtual Server
During recent testing (see the blog article on “Installing a SQL Cluster in Virtual Server”) I needed to use SCSI guest drives which are required to be fixed drives in Virtual Server 2005 R2. For each cluster I needed a 500 MB Quorum, a 32 GB Data Drive and a 16 GB Log drive. There are a total of three clusters which will be required. The storage alone for these three looks like a lot (3x.5GB + 3x32 GB + 3x16 GB=145 GB of disk space). I created each of the three drives as a template as well which added a total of about 50 GB more disk space required. Needless to say, I was thinking about compression once I did the math.
For the templates directory (the 500 MB Quorum, 32 GB Data and 16 GB logs) uncompressed it is about 48 GB, compressed it’s less than 1 MB. The templates are in essence empty VHD files that are created to a fixed size so this makes a lot of sense.
These drives will grow in actual usage over time of course. The full directory for the drives (once they were in use within the virtuals) totaled to 129 GB with an actual size on disk of 356 MB.
Ok, but its slow right? It takes longer to do things like copy files! The time required to copy the uncompressed 32 gb file was 8 minutes and 2 seconds. The time required to copy the same compressed 32 GB file was 2 minutes and 10 seconds. That’s about 25% of the time it took to copy! Why? The uncompressed file needs to read the entire file and copy it, as it has a 32 GB storage requirement it needs to read 32 GB of data and then 32 GB to write. The uncompressed file needs to read only the uncompressed total size of the file (less than 1 MB) then address the uncompressing/compression and write it. If the time required to deal with the compression is less than the time required to read/write the longer file then it will be faster to copy the compressed drive.
Summary: Definitely compress your template drives if they are fixed size such as for drives which will be used in clustering within Virtual Server. I will also advocate that as long as you have the processing power available that compressed drive should be used for any fixed drives in the environment if there is not enough space available without compression. For details on what should and should not be compressed within Virtual Server/Virtual PC see my earlier blog entry titled “Compressing Virtuals”. Contrary to some public belief out there compressed files are NOT evil, and can be used to provide great benefit in the right circumstances. June 10 Installing a SQL 2005 Cluster in Virtual ServerInstalling a SQL 2005 Cluster in Virtual Server 2005 R2
Prior to starting this there are some excellent detailed write-ups which exist at the following locations:
and
The purpose of this blog entry is to provide the summary level for what is required before and during the installation of the SQL 2005 Cluster in Virtual Server 2005 R2 for the SQL Database and for the Analysis services.
The Host will require:
· OS: Installation of Windows Operating System (Windows 2003 Server, 64-bit preferred).
· Software: Installation of Virtual Server 2005 R2.
· Processor: At least one Pentium 4 level processor, dual-core recommended.
· Disk: 30-50 GB is a good range if you will be compressing the SCSI guest drives, without go for more like 200 GB (An upcoming blog entry will discuss this in more detail).
· Memory: At least a gig and a half so that 512 can be applied to each Guest OS and 512 can be applied to this Host OS.
The nodes of the cluster (Guest OS’s) will require:
· Domain: Members of a domain, and groups created for the SQL Server, SQL Server Agent, Full-Text Search, and Analysis Services.
· OS: Windows Operating System Enterprise Edition.
· Software: SQL Server 2005 Enterprise edition.
· Name: Name for the Regular Cluster, one for each Guest OS, and one for the Virtual Server Name for the SQL Cluster. The Guest operating system names for this example configuration are Reliant and Raven.
· IP Addresses: One for the Cluster, One for Node 1, One for Node 2, One for the SQL Cluster.
· IP Addresses: Two for the private network between the Nodes (One IP per node).
· Four drives per Guest OS: One for the Operating System, one for the Quorum, one for Logs and one for Data. The Quorum, Logs, and Data drives must be fixed in size and mounted to the Guest as SCSI.
· SCSI Adapters: Three Virtual SCSI Adapters per Guest OS.
Installation process:
January 15 Host Processor architecture impact on Guest OS performance in VPCHow much does the Host processor hardware really impact the performance of the Guest operating system? (IE: Can I really throw hardware at a Virtual to make it run faster?) In the process of determining what server/workstation hardware around the house I could use to start running my new sets of virtuals, I decided to run some tests to see how much the processor and memory architecture of the Host impacted the performance of the Guest operating system. The following were the results on the processor side of things (memory will follow up in a later blog entry):
Depending upon the tests done (Dhrystone, Whetstone, Integer x 4, Float x4) there was in increase in performance which generally followed the speed of the CPU on the Host system. The difference between the high-end and low-end systems varied from 2.5x – 15x depending upon the metric surveyed. Also, dual-processor systems showed no significant variation in performance versus single-processor systems in this set of tests. Summary: As expected there is a direction correlation between the speed of the Host CPU and the speed of the CPU in the Guest. Testing was done with computer systems varying from a Pentium-3 1.08 Ghz to an AMD Athlon 64 2.13 Ghz processor. Tests were done running the same Virtual PC configuration which was Virtual PC 7.0 beta running a Windows XP Operating System for the guest which was configured with 128 Mb of memory. Sisoft Sandra was run on each of the different Guest operating systems and the results compared to provide this assessment. August 04 Transferring Files while Maintaining Isolation in a Virtual Server EnvironmentTransferring Files while Maintaining Isolation in a Virtual Server Environment When I’m using Virtual Server it’s often to create a testing environment which needs complete isolation. This is often due to creating a duplicate of a production environment when I use to test migrations and document the processes associated with the migration. Unlike Virtual PC, Virtual Server does not support drag/drop of files or a Shared folder solution. So the question becomes how to you transfer files into an Virtual Server environment while still keeping it isolated? From Microsoft’s perspective you should create a VPN connection to transfer the files. Microsoft’s recommendation on this is available at: http://www.microsoft.com/technet/technetmag/issues/2006/03/DoMore/default.aspx My preferred options: I prefer 100% separation in the isolated environment (yes, I admit I am paranoid but I think “they” are out to get me J ) as the potential damage caused by the networks seeing each other is large. For small files, I prefer to burn a cd-rom or dvd and put the cd/dvd into the host Virtual Server system. The cd/dvd can then be read by the guest operating system. For large file transfers I create a dynamically expanding SHARED.VHD file which I attach to an existing OS within Virtual PC. Then I drag and drop whatever files I will need in the isolated environment to the “SHARED” drive. To transfer the files I shut down Virtual PC, and copy the SHARED.VHD file to the Host operating system for the isolated Virtual Server environment. Finally I attach the SHARED.VHD to the operating system within Virtual Server and re-start the OS (adding the drive within disk management if required). August 03 RAID0 vs. RAID5 for VirtualsRAID0 vs. RAID5 for Virtuals Does it really matter from a performance perspective if your Virtuals run on a RAID5? I had a configuration with drives of equal specification running on RAID5 and RAID0 (no redundancy) / decided to run some tests. (I’d wanted to do testing on a RAID1 for comparison but ran out of time in the environment). On Virtual Server disk writes were faster (180%) on the RAID0 drive than on the RAID5 drives, and disk reads were faster (157%). (for background on how to determine the amount of time spent reading/writing to the drive see the earlier blog entry on “To Compress or not to Compress Virtual Server”).
Testing Environment: Tested on a 32-bit platform running Windows 2003 SP1. Tests were done on three 146 GB SCSI3 Ultra 320 10000 rpm drives with adapter cache configured for 50% Read / 50% Write for the RAID5 configuration. The RAID0 tests were done on one 146 GB SCSI3 Ultra 3200 10000 rpm drive with adapter cache configuration for 50% Read / 50% Write. Parting Thoughts: Yep, RAID5 isn’t a good idea for performance on your virtuals. Go with RAID1 (assuming your performance benchmark tests are like mine for RAID0) or RAID0 if you have another effective backup strategy. August 01 Building a Low Memory Virtual RouterBuilding a Low Memory Virtual Router A while back I needed to do some testing with two domain controllers which were connected via a router (testing multiple Active Directory sites and replication). I was trying to come up with a way that I could effectively test this in my VirtualPC environment and was kinda stumped due to the amount of memory on my Host system. As I was running multiple Virtuals (generally 3-4 at a time on a system with two gigs of memory), I didn’t have much memory left to run a full Windows XP system to emulate a router. I decided to do a test if I could create a low-memory-cost Virtual Router in Windows 98. With thanks to google and some luck I ran across the following article which discusses how to route in Windows 98: http://www.windowsnetworking.com/j_helmig/routeset.htm I configured my “router” with two network adapters (both set to “local only” within Virtual PC) and hard-coded both networks (10.0.10.x and 10.0.11.x) as the .1 address. So my “router” has IP addresses 10.0.10.1 and 10.0.11.1. I made the required alteration to the EnableRouting string and set it to “1” within HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\MSTCP using regedit. Finally, after verifying that I could ping systems on both networks (10.0.10.x and 10.0.11.x) from the router I set the default gateway on both networks to their corresponding router address (for the 10.0.10.x network their gateway is 10.0.10.1 and for the 10.0.11.x network their gateway is 10.0.11.1). I was able to install a domain controller in the “remote” network and could simulate the failure of the loss of the router by just pausing the router virtual. My current “router” is running on 12 mb of memory (with video and code cache it is using a total of 25 mb). Don’t try to run it with less than 11 mb of memory / for some reason (probably unsupported levels of memory) it won’t boot into Windows 98. Not a bad memory footprint to provide a router in your virtuals, and it boots and shuts down in Virtual PC like lightening. Also, the VPC itself is less than a full cd-rom in size so it’s easy to transfer around. Quick production reminder here. This is an isolated environment without Internet connectivity. Windows 98 isn’t a supported environment any longer and can easily be compromised, so this is NOT recommended for any environment where it isn’t completely isolated from the Internet/other production systems. July 21 Virtual PC with Multiple CPU's?Can I make Virtual PC use multiple CPU’s? Virtual Server can leverage multiple CPU’s (although it only allocates a single CPU per Guest operating system). Virtual PC can only use a single CPU split among all of the Guest operating systems. First, let me state without question: This is an unsupported configuration. I am writing this up only for the few people out there who may have non-production environments where they do not want to leverage Virtual Server/are using Virtual PC/are using Windows Server 2003 SP1/have a multiple processor host that they would really like to be able to run more Guest operating systems but are bottlenecked due to the processor (not too restrictive eh?). At one point in time, I was using Virtual PC to provide an environment to test a large number of operating systems (I was testing MOM 2005 agent deployment among other items). My configuration was a dual-processor system with two gigs of memory. What I found was that my processor was being maxed out running 2-3 guest operating systems but I still had plenty of memory and wasn’t bottlenecked on disk access either. So enough of the background, what’s the trick? Windows Server 2003 supports up to three total remote connections: 1 to the console and 2 terminal server connections for remote administration. Connect to the console and run Virtual PC. Set the affinity for the process to CPU 0 (task manager). Next connect to the first terminal server connection, run Virtual PC and set the affinity for the process to CPU 1. In theory this would support up to three CPU’s (one for the console, and two for the virtual connections), leaving the fourth dedicated to non-Virtual PC processing. July 20 Host SCSI Adapter Cache ConfigurationHost SCSI Adapter Cache Configuration If you are using a SCSI adapter which has cache available on it (on your Virtual Server or Virtual PC Host), the default configuration is often set to 50% of the cache used for read and 50% used for write. As identified in previous posts, the amount of time spent reading and writing within your virtuals can easily be identified (see “Compressing Virtuals” for details on this). To determine if your cache is configured correctly:
As an example, our SCSI controller was set for 50% read and 50% write. The majority (about 75%) of the amount of data was being written not read. We updated the cache to use 75% read/25% write and re-benchmarked. Our benchmark results were positive so we have left the configuration in place to gather feedback from the users of the Guest operating systems and from further statistics that we gather. Please note that cache ratio’s may only be able to be changed if the SCSI RAID controller has a battery-backed cache. Parting Thoughts: If you are using SCSI and a controller with cache, don’t assume that the default configuration will be best for your environment!
July 19 Disable Services in Guest OS?What Services can be Disabled in the Guest Operating System and how much is gained? Another common recommendation to increase performance on Virtual Server/Virtual PC is to disable any unnecessary services on both the Host and Guest operating systems. I decided to do some testing on this to see if the services which could reasonably be disabled resulted in a significant decrease in the amount of memory required by the operating system.
The following are services I thought should be evaluated for disabling within the Guest Operating System:
Each of these services may or may not be able to be disabled depending on the functionality required by the server; this is not a blanket statement that these services are not required. Details on these services (as of Windows 2000 Server) can be found at: http://www.microsoft.com/technet/prodtechnol/windows2000serv/deploy/prodspecs/win2ksvc.mspx. Another good source for service information is: http://www.theeldergeek.com/services_guide.htm
In testing I found that when all of the above services were disabled it resulted in an approximately 20 mb decrease in memory requirements on the guest Operating System. Parting Thoughts: The decrease in the amount of memory required is not very much considering the amount of services which had to be disabled to generate it. Unless you are running a large number of Virtual’s this seems to be more trouble than it’s worth. July 18 Disk Defragmentation: Does it Help?Does defragmentation really help performance in Virtual PC? Another common recommendation for improving performance for Virtual PC or Virtual Server is to defragment both the Host and Guest systems. To test this theory, I did performance tests before and after defragmentation of the Host and then another round of tests after defragmenting both the Host and Guest operating systems. The summary of my tests are as follows: Host Defragmentation Only: 6% Increase in Read IOps 3% Increase in Write IOps 4.5% Increase in Read/Write IOps (assuming 50/50 split of Read/Write) Host and Guest Defragmentation: 17% Increase in Read IOps 8% Increase in Write IOps 12.5% Increase in Read/Write IOps (assuming 50/50 split of Read/Write)
IOps = IO's per second / the higher the better MBps = MB's per second / the higher the better Latency is the time required to access the disk, the lower the better Diskeeper 10 was used to perform defragmentation on both the Host and the Guest Operating Systems. Both the Guest and Host were listed as critical when testing started, both were at Good or Warning when tests were performed after defragmentation. VPC Testing Environment: Virtual PC tests were done on Virtual PC with SP1 32-bit platform running Windows XP SP2 for the Host operating system and Windows 2003 SP1 for the Guest operating system. The Host has a single drive connected via Firewire configuration running on a single processor Pentium 4 (1.7) with two gigs of memory. The Guest operating system was configured with 512 mb of memory and running SCOM2007 Beta 2 to simulate active applications. SQLIO was used to gather these metrics and per Microsoft: “Tests represented are based upon a synthetic workload generator and should not be depicted as representative of the performance of any current or future Microsoft product”. Parting Thoughts: Defragmentation does help with performance/benefits can be gained from defragmentation of both the Host and Guest Operating Systems. |
|
|