Recently I've been working on a project involving some P2V work. Don't be too surprised – some companies may be 80, 90 or even 100% virtualised already but there are plenty out there that either haven't started yet or aren't that far down the road of getting their server estate into a Virtual Infrastructure.
Particularly when it comes to virtualising production servers, the big question that comes up when it comes to arranging downtime for applications / servers and raising change requests is: “How long is it going to take?”
The flippant part of me always wants to reply with something witty and vague at this point but the answer is, as is so often the case with virtualisation, that it depends. (Also note that customers and change managers alike don't tend to take kindly to witty answers!)
So what things does the time for a P2V to complete depend on? To name but a few:
- The age and speed of the source hardware
- The speed and configuration of the destination Virtual Infrastructure
- The quality and speed of the network infrastructure between source and destination
- The volume and composition of the data on the source hardware
- The tools / methods being used to perform the data migration
Essentially what it all boils down to is the how quickly can the data on the source be transferred to the destination.
Let's step back a little bit and quickly go over data transfer rates as they can be a source of confusion all on their own. For instance, do you think that 1Mbps is the same as 1MB/s? The latter is actually 8 times bigger! And those aren't even the correct standard units!
Units of Measurement
IEC 60027-2 (1999) introduced a variation in prefixes for units that describe binary numbers. The intention being that SI units were then reserved for decimal numbers. The table below illustrates this:
|SI Unit||# of Bytes||IEC 60027-2 Unit||# of Bytes|
|Kilobyte (kB)||1,000||Kibibyte (KiB)||1,024|
|Megabyte (MB)||1,000,000||Mebibyte (MiB)||1,048,576|
|Gigabyte (GB)||1,000,000,000||Gibibyte (GiB)||1,073,741,824|
|Terabyte (TB)||1,000,000,000,000||Tebibyte (TiB)||1,099,511,627,776|
(Don't forget that a byte is 8 bits. This is important later on.)
Here's the thing though. How often do you see the IEC units used? Very rarely I'd guess, even 10 plus years on. Are vendors using GB when they should be using GiB? There's no real consistency or often any indication which way any particular vendor is measuring binary data. The best thing to do is probably to plan for the worst case scenario. For the remainder of this article I will stick as rigidly as I can to the standards above although I do not promise to do so in the future 🙂
There are a number of products out there. I'm going to talk about VMware vCenter Converter Standalone 5 as it's current, comes from a stable product line and probably the one I'm most familiar with.
On the left you can see a conversion task running. The task status (enlarged below) shows that data is transferring across at 5.71 MB/s.
So what does that mean? Well it could mean that we're transferring data at a rate of 5,710,000 bytes per second or it could mean 5,987,369 bytes per second. That's not a huge difference at these low speeds. The higher the quoted rate though, the bigger the difference between the two possible values is going to be.
The P2V task I showed above was just a test on a fresh install of Windows Server 2008 R2. What originally prompted this post was an attempt to P2V a server sporting over 1TB of data. Upon starting the task the transfer rate showed as about 8 MB/s. Best case (8 MB/s = 8,388,608 bytes per second) the conversion would have taken 36 hours. Worst case (8 MB/s = 8,000,000 bytes per second) the conversion would have taken 38 hours.
Either way it was too long and the transfer rate pointed to a bottle neck somewhere. That's a story for another day.
If anyone knows whether Converter transfer rates are 1 MB/s = 1,000,000 bytes or if 1 MB/s = 1,048,576 bytes, I'd like to hear from you…
As I was putting the finishing touches on this article, I noticed one place where the IEC units are being used at last. Check out your ESXi 5.0 console…