This may seem like an extraneous section to
include, but I have seen quite a few people running virtual machines
in non-conducive hardware setups and then wrongly thinking
virtualization was not up to snuff. The obvious realities are that
the hardware must be sufficient to handle one or more database
servers, their operating systems, plus the host operating system to
boot. So it should come as no surprise that I recommend as much CPU
and memory as budget will allow. That is good advice if you are
ordering hardware, but what about reusing existing hardware assets
or laptops/notebooks for demos?
When trying to utilize existing hardware, just
remember that if the server was not good enough for application X,
then it probably will not be sufficient for X + Y or even Y + Z
(unless both are much smaller than X). Basically it boils down to
one simple rule: if a server was not sufficient for a stand-alone
situation, then reusing it as a virtualized server is most likely an
exercise in futility. Hardware is so inexpensive these days that you
should buy what you are going to need. Remember, person hours to
tune a system will very often cost more than a server these days, so
overspending on hardware is a good way to hedge your bets (i.e.
investments).
Possibly the most egregious situation I
encounter is people trying to improve sub-standard virtualization
hardware via system component augmentations that are in and of
themselves neither a true nor good performance option. For example,
many people will try to run VMware on their notebooks for an Oracle
database contained on a USB disk drive. The USB interface has
2.5-3.0 times slower throughput than SCSI or IDE channels are
capable of, so this is a very poor choice. You would be much better
served to simply buy a replacement disk for your laptop/notebook.
For example, upgrading my notebook from 100GB to
200GB cost $150 and two hours to move my image from source to target
drive. Even if I had bought the imaging software for just that one
use, the cost would have been just another $50, for a total of $200.
Since even the cheapest people charge at least $50 per hour for
their time, the true upgrade cost was approximately $300 ($150 for
new disk drive, $50 for imaging software, and $100 for two hours
time). I can nearly guarantee that this alone will improve
performance by at least a factor of two. Whereas, I cannot say with
any certainty that six hours tuning (i.e. $300 @ $50 per hour) will
yield similarly positive results.
Another pandemic problem I encounter is someone
trying to use cheap IDE disk drives on virtualized servers. Even the
fastest SATA-II IDE drives are not as fast as SCSI or SAS (Serial
Attached SCSI). SCSI drives spin much faster, often from 10-15,000
RPM versus just 5,400 to 7,200 for IDE (note that although Western
Digital makes Raptor IDE drives which spin at 10,000 RPM, they are
both expensive and relatively uncommon). So this rotational speed
difference alone can translate into as much as a 100% improvement.
Furthermore, IDE disk drives have another huge
disadvantage they primarily perform I/O operations serially (i.e.
complete I/O operation #1 before doing I/O operation #2). Even SATA
IDE drives that support Native Command Queuing (NCQ) or Tagged
Command Queuing (TCQ), which permit the disk to reorder I/O requests
to minimize head movement, still perform their I/O operations
serially. Whereas, SCSI drives possess a processor to minimize host
CPU usage and permit higher throughput of concurrent I/O requests.
Also, since a virtualized server is going to need all of its CPU
resources and need to be able to handle lots of concurrent I/Os from
multiple operating systems, SCSI based technology is clearly the
best choice.
Regardless of whether you are ordering a new
virtual server or simply augmenting an existing boxs I/O bandwidth
to support running multiple virtual machines and their databases,
you need to choose an I/O channel that can support such high I/O
loads across multiple shared resources. And as I said in the last
paragraph, IDE is not a good answer SCSI reigns supreme. But what
kind of SCSI based technology should we implement? Again, much of
that depends upon your hardware budget. Assuming you have the
minimum budget required for a proper I/O subsystem, then some good
choices include:
For
Direct Attached Storage (DAS) with multiple controllers
Storage Area Networks (SAN)
with multiple HBAs (host bus adapters), directors/channels, &
redundant pathways
-
Fibre Channel 1GFC
-
iSCSI via 1Gb Ethernet
-
Fibre Channel 2GFC
-
Fibre Channel 4GFC
-
iSCSI via 10Gb Ethernet
The entire universe of I/O subsystem choices are
shown in the table on the following page with all the above stated
good choices highlighted.
Interface |
Throughput
(MB / sec) |
PATA PIO Mode 0 |
3 |
SCSI-1 |
5 |
PATA PIO Mode 1 |
5.2 |
PATA PIO Mode 2 |
8.3 |
Fast SCSI 2 |
10 |
PATA PIO Mode 3 |
11.1 |
iSCSI / 100Mb Ethernet |
12.5 |
PATA PIO Mode 4 |
16.7 |
Fast-Wide SCSI 2 |
20 |
Ultra SCSI |
20 |
Ultra DMA PATA 33 |
33 |
Ultra Wide SCSI |
40 |
Ultra2 SCSI |
40 |
USB 2.0 |
60 |
Ultra2 Wide SCSI |
80 |
Ultra DMA PATA 66 |
66 |
Ultra DMA PATA 100 |
100 |
Fibre Channel 1GFC |
106.26 |
iSCSI / 1Gb Ethernet |
125 |
Ultra DMA PATA 133 |
133 |
SATA 150 |
150 |
Ultra3 SCSI-160 |
160 |
Fibre Channel 2GFC |
212.5 |
SATA 300 |
300 |
eSATA |
300 |
Ultra-320 SCSI |
320 |
SAS 1 |
375 |
Fibre Channel 4GFC |
425 |
SATA 600 (not yet) |
600 |
Ultra-640 SCSI |
640 |
SAS 2 (not yet) |
750 |
Fibre Channel 8GFC |
850 |
iSCSI / 10Gb Ethernet |
1250 |
Therefore, it is very
important that you have the proper virtualization hardware and are
financially able to create an I/O subsystem to fit your needs.
To use anything less is to create more headaches and aggravation
that could be easily avoided with the right equipment.
This is an excerpt from
Oracle on VMWare:
Expert tips for database virtualization
by Rampant TechPress.