Virtual vs. Physical NAS
To explore this question, I used the Virtualized FreeNAS server I set up in my last review and compared its performance to a physical FreeNAS server running on dedicated hardware. My Virtualized FreeNAS server is installed running as a Guest OS allocated 512MB of RAM inside VMware Server on an XP Pro Host with an Intel 3.2GHz P4 CPU on an Intel chipset motherboard.
My Physical FreeNAS server also has 512MB of RAM and is running an AMD 3000+ CPU with an Nvidia chipset motherboard. Both platforms are x386 based systems with similar features and capabilities.
For my tests, both NAS machines were given 20 GB disks for storage and 100 Mbps NICs. The virtualized FreeNAS used a "bridged" network interface as outlined in my last article, meaning the virtualized FreeNAS was sharing the Host machine's integrated physical NIC. The physical FreeNAS server used the integrated NIC on the Nvidia motherboard. Testing was performed using Iozone software with our standard methodology.
Figures 2 and 3 show the Write and Read throughput to the virtual and physical NAS devices, using a Windows Vista laptop running iozone. (Throughput and Filesizes are in KBytes for all graphs.)
Figure 2: Write throughput to the virtual and physical NAS devices
Figure 2 shows the physical FreeNAS system outperforming the virtual machine's throughput on 32 MB file writes, with the remaining write performance very similar. This declining performance is typical of what we usually see with iozone tests and is due to write caching effects. It?s interesting that the effect is more pronounced in the physical machine than in the virtual.
It is a different story for read performance, as shown in Figure 3, with the physical FreeNAS system clearly outperforming the virtual machine in nearly all file sizes. (The big downward drop in throughput at 512 MB for the Physical NAS is a measurement glitch. The correct value would result in a line with slope similar to the Virtual NAS.)
Figure 3: Read throughput to the virtual and physical NAS devices
Virtualization and Memory Considerations
The concept of virtualization is like carpooling. Most of our cars run each day with only one passenger, leaving a lot of excess passenger capacity. The same thing applies to servers. Servers running only one operating system and application typically have a lot of excess computing capacity. Virtualization utilizes excess computing capacity by enabling multiple operating systems and applications to run simultaneously on the same physical server.
Along the lines of the carpooling analogy, cars with more interior space, more seats, and bigger engines are better for carrying multiple passengers. Similarly, servers with more CPUs, RAM, NICs, and disk space are better for virtualization and running multiple virtual machines.
One of the neat things about virtualization is that by converting physical machines to virtual machines, hardware components from physical machines such as RAM, NICs, and disk space may be consolidated to create fewer, yet more-powerful physical computers better equipped to run multiple virtual machines. These more robust physical machines still consume significantly fewer physical resources, such as electricity, cooling, network ports, and floor space, while providing sufficient computing resources to run multiple operating systems and applications.
For many server applications, virtualization performance can benefit from additional RAM in the physical host machine. In the case of a NAS, RAM isn't as big a concern as with, say, a database server, so I tried running the virtual NAS with only 256MB to see how much the performance would suffer.