How to speed up file copying onto a VMWare virtual server?

One of the sites I work at uses VMWare virtual servers. For the most part they work very well, but copying large files onto them from other places on the network is very slow.

By large files I mean around 4GB in size (which isn't actually that big these days)

I have been watching my 4GB file copy for 90 minutes so far, and it still says about 2 hours to go.

Is there some VMWare trick for speeding up network file copies?

Technical details: Its VMWare ESX running on Linux. The network is a 1GB Lan. So far I've been trying to copy just using Windows Explorer, by remote desktopping into the virtual server and then connecting out to the network and copy/pasting the file.

For comparison, if I copied between two real machines on the same network, I would expect 4GB to copy in roughly 5 minutes. Going from 5 minutes to 240 minutes makes me think there is something going very wrong somewhere ....


Solution 1:

The first thing to understand is that you're sharing the 1GB connection with other virtual machines. You're not the only person using the network. Ask how many other virtual servers are on that same host. If you're really nice, the sysadmins might let you look at the VMware Virtual Center Performance tab, which will show you the network use overall.

Next, windows drag & drop file copies aren't very efficient. One trick for speeding up file copies (if you really have to do this often) is to do it with the hosts via SCP/FTP instead. This isn't a quick setup, but here's how it works:

  • Set up an FTP server on the VMware host (the same one the guest is running on)
  • FTP (or SCP, if your sysadmins don't allow FTP) from the Windows guest to that VMware host (will run blazing fast since it doesn't actually go over the network - all file transfer is in the same host)
  • From your physical boxes running Windows, connect to the VMware host's FTP/SCP server and grab the file.

Like I said, not easy, but once you do it it's blazing fast. It will still be constrained by the network that you're sharing with other virtual machines, though. For best practices, VMware recommends using multiple network connections, and you might be able to sweet-talk your sysadmins into using a separate network adapter for the FTP/SCP server.

Solution 2:

Do you mean ESX or Vmware Server (the freebie that runs on Windows)? I assume you mean ESX...in which case there are various options. How are you doing it now? Also what speed is the link? LAN or WAN? 100Mbps or 1Gbps etc? If you are copying from Windows using WinSCP or similar then that will be slow. SCP does encryption on the fly and WinSCP is particularly slow I find. Another alternative is to enable FTP server on the ESX host. Then you can just ftp from Windows, which will be hugely quicker. If you are going from ESX to ESX you can use command line scp which isn't too bad (compared to the Windows version).