Running a Windows XP VM in Parallels (Mac) from a USB Flash Drive

I thought I'd post my experience here, for the benefit of others, because I couldn't find a whole lot of information about this specific use of an external USB flash drive.

I have a MacBook Air with a dainty 128GB SSD drive, so I try to keep large files that I rarely use on external drives. I have plenty of external USB and FireWire storage (over 6 TB), and running VMs in either Parallels or VMWare Fusion works great (very highly performant) off any of these external drives.

However, there's no way I'm going to lug around an external hard drive and USB cable (and maybe power adapter) just so I can test things in Internet Explorer (basically, the only use I have for Windows).

Flash Drive to the Rescue!

I found a cheap 32GB USB flash drive that only sticks out of my MacBook Air half an inch, and copies at a consistent rate of 30MB/second (which is quite sufficient for most tasks). Also, the little drive should have very good read performance, since it's not a spinning platter. Write speed wouldn't be anything to brag about, but writing shouldn't happen all that often when simply opening up Internet Explorer—I hope!

...not so fast!

Anyways, for my first crack, I tried formatting the drive as an ExFAT drive, with a Master Boot Record, thinking it would be nice to also be able to use the drive with the occasional PC I run into... but that provided abysmal performance for a VM in Parallels; right-clicking on the desktop would take seconds to simply pop up the contextual menu (and this was about 10 minutes after the machine had completely finished launching). So, ExFAT was out.

I then reformatted the drive as Mac OS Extended (Journaled) (though I wish I could've formatted it as not journaled, since I could sacrifice data integrity for the little performance boost in this case). I copied the VM back over to the flash drive, and that copy transferred solidly at 10.5 MB/sec (not as good as my HDDs, but still nothing horrible).

This format didn't seem to help too much, either, though. While monitoring Disk Activity in Activity Monitor, I noticed that, any time Windows XP did anything, the read/sec and write/sec statistics both went down to the low-KB range, while CPU usage was almost idle. Memory wasn't really a problem, either.

As a further stress test, I decided to copy a 20 MB file to the flash drive while Windows XP was purring along. The file copy took about 10 seconds, which is way slower than a normal file copy when nothing else is going on (in that case, the copy took a total of 1 second).

I/O - Miserable

Tom's Hardware did an excellent story (multi-page, but worth reading) on flash drive performance (I/O, write speed, read speed, throughput writing and reading over entire drive, etc) vs. an older hard drive's performance. I'm guessing that a lot of the lagginess I was encountering was due to the miserable I/O throughput with complex read/write operations.

So, in the end, it looks like I won't be able to have a true go-anywhere flash-drive-based virtual machine setup... unless maybe something about the way Parallels accesses the data is screwy.

End notes

A few other notes about my attempts at getting this to work:

  • The MacBook Air has two separate USB 2.0 busses: one on the right side port shared with the Bluetooth interface and FaceTime camera, and the other on the left side port that seems independent. I've tried using the drive on both sides, and that didn't make any difference in performance at all. Plus, based on my I/O observations, the USB interface wasn't at all the limiting factor.
  • I was going to try formatting the drive as FAT(32), but ExFAT should've been better regardless, so I didn't take the 20 minutes to reformat and recopy the virtual disk.
  • I also tried disabling Windows XP's pagefile on C:/, but that didn't seem to help at all.
  • I've posted a question on SuperUser asking more about this situation, to see if anyone else has any ideas.

Comments

I am trying the same thing with WinXP VM on an early 2011 Mac (USB 2.0) running OSX Lion 10.7.4 and VMware Fusion 5.0.2 using a Corsair Survivor Stealth USB 3.0 64GB flash drive. If I just copy, I can read or write at 25-30MB/sec to/from the the flash drive. From VMware, I am getting poor performance as well. IOs performance seems to drop to KB/Sec range and the VM frequently (more than not) "pauses" for seconds at a time when I do anything, such as just moving the mouse.

It seems that random access on most USB flash drives is severely crippled. I've yet to find a really good solution for portable and convenient large file storage external to my MacBook Air; I still have to drag around a mini hard drive :(

I saw these results when I ran xbench and compared the performance of my hd against the USB flash drive. I just ordered an SSD and caddy to hold it in the DVD drive bay of my Macbook pro, I suggest attaching your Ext HD to the back side of your screen on the MacBook Air, I have done this on my MacBook before. The Velcro-like strips for (EZ-Pass) toll transponders work great to hold a drive in place so it does not go flying across the room when you forget that you have a HD tethered and stand up with your laptop

I usually just toss my external into a bag with my laptop, since I don't need it on all the time. But your velcro idea would be nice with a light and thin SSD like what you get if you take the Air's internal SSD and put it in an external slim enclosure.