I manage a few Linux machines that run VmWare Server 2.0.2. On those I have a few Windows Server OS guests.
A typical host is a Quad-Core Intel Core 2 processor, 8 GB RAM, separate system-drive and drive for virtual machines. It runs Debian (5.0 or 6.0) and VmWare Server 2.0.2.
A typical guest could be a Windows Server 2008 with 2GB RAM, 24GB C-drive, 12GB E-drive.
To get decent filesystem performance on the hosts I have used XFS and split the VmWare disk images into 2GB pieces. They have been allowed to grow dynamically.
Over time I have the feeling performance have grown worse, and not been very impressive. Different things have been tried. Finally, on of the hosts where reinstalled (Debian 6.0 instead of Debian 5.0), and btrfs was used instead of XFS. Horrible!
Filesystem | 2GB Split | Growable | Performance |
XFS | Yes | yes | Questionable (at least after 12 months) |
btrfs | No | No | Horrible – 30min until Windows replies to ping |
btrfs | Yes | No | Bad – replies to ping in less than three minutes, but both physical Linux and virtual Windows experiences I/O-delays of a few seconds. Very un-snappy. |
ext2 | No | No | Excellent! Fast boot. Snappy. |
Perhaps journaling filesystems have their advantages, but I make backups of all machines nightly and dont worry much of a filesystem crash. Also, ext2 can be considered fairly mature, proven and stable.
I will probably do some migration in the next days (reformat some XFS as ext2). Maybe I will provide some properly quantified measures. However, just moving the virtual machines and changing their format may fix problems with fragmentation, so it is hard to make a fair before-after-test.
Hi,
thanks for sharing your findings.
Did you try ext3/ext4 as well?
Thanks
Gero
@Gero: No, I did not. Reformatting and moving a virtual machine takes some time and I was happy with ext2.
You can have a look at ext2 vs ext3 vs btrfs on much less powerful hardware though.
As I see it, for virtual machines you want as little filesystem as possible. You basically just want raw device. The kernel is responsible for caching blocks anyways, so you dont want that in the filesystem either.