Book Review: Practical Virtualization Solutions

Quick Review

My review for the impatient reader:

Why I picked it up: I have some basic knowledge of and experience
with VMware, but wanted learn more about Xen and Hyper-V.

Why I finished it: It reads quickly and provides a good grounding
in virtualization terms and technologies.

I’d give it to: Anyone looking into upgrading their infrastructure
using modern virtualization tools.

Review

Practical Virtualization Solutions by Kenneth Hess and Amy Newman
covers a lot of ground. From basic introduction to the technology
itself, to advice about which of the big players to use now (and
which
to keep an eye on for the future), the authors walk you through all
of
the issues and potential gotchas of virtualization. Existing
virtualization users may find the early parts of the book a little
slow moving, but the advice in part 3 (“Hardware’s Role in
Virtualization”) looks at issues like I/O virtualization that most of
us haven’t seen before.

The most useful part of the book for me was chapter 2, which compared
the offerings from major virtualization vendors. The strengths and
weaknesses of the approach taken by each tool were explained, and the
authors give their advice, based on years of experience, about how to
decide which platform best fits your needs.

As part of the Negus Software Solutions Series, the book delivers
the promised hands-on experience in the remaining chapters of part 1,
where they give detailed procedures for setting up a virtual machine
and installing a guest operating system, using each tool in turn.
They go beyond the basic GUI instructions, too, as they dig into
implementation details like what the files in a virtual machine
definition contain. Each chapter ends with a real-world use case
showing how the tool helped an actual end-user.

Part 2 covers applications of virtualization for servers, desktops,
and network and storage resources. It is a good introduction to these
subjects, but not especially deep.

The third part of the book talks about hardware issues related to
virtualization. The authors emphasize the need to be realistic about
buying hardware to host your virtual servers, and include advice about
how to optimize your setup based on the hardware and software
compatibility between vendors.

They also discuss the tricky nature of network and I/O virtualization,
pointing out that adding more software to a part of the stack that is
already a bottleneck is unlikely to improve performance. They describe
the ways Vendors and OEMs are relying on hybrid solutions, with
special hardware and custom drivers, to obtain the best results.

Once you are convinced that virtualization is the right choice for
your setup, and you have done the work to select the appropriate tool,
you are ready for the planning advice in part 4. Beginning with tips
for justifying the move to a CTO or CFO, and then covering tools for
making the transition easier such as auto-discovery of services and
deployment automation, these final chapters reinforce and summarize
many of the tips from earlier chapters in the context of creating an
implementation plan.

Conclusions

I recommend this book for anyone considering getting into
virtualization who needs a comprehensive introduction. You’ll need
more detailed reference material once you select a tool, but
Practical Virtualization Solutions will give you the advice you need
to make that choice.

Disclaimer: I received a free review copy of this book from the
publisher as part of my participation in the CHUGALUG Book Club.

Nothing new under the Sun

Or should I say IBM?

It turns out IBM Alphaworks already has a data visualization
project called Many Eyes that can render network diagrams as I
described in my earlier post. The demos look impressive.

Their UI for adding data requires you to upload from a separate
source, which makes the social aspect of my idea more difficult to
implement. Perhaps Many Eyes can be used as the visualization front-end
for a site that collects the data. Any data uploaded to Many Eyes
becomes publicly visible, but that’s not an issue since the original
site would have similar rules.

The network visualization from Many Eyes is more limited than what I
would want to see in a full featured tool, though. It could be very
useful to be able to see the types of relationships (using different
colors for edges, etc.). They also point out that since the rendering is
done in the browser, it may not be well suited for large data sets or
“for networks in which a lot of nodes have a large number of neighbors”.

Originally spotted on Boing Boing.

Visualizing People and Relationships

While I’m thinking about digraphs and visualization, I want to
describe another idea for a website I have been mulling over. It would
offer a way to see the relationships between people using a digraph
rendering engine.

There would be a central organizing theme for a given rendering. It
might be the current political scandal, an emergency response plan, a
corporate organizational chart, or any other theme by which people are
related to each other. Each theme would have a rendering of the current
members and their relationships, as a digraph. Users could add people
(nodes) and relationships (edges). Relationships could have supporting
documentation in the form of URLs (useful for scandal tracking).

The UI would not need to be very complicated. To add information, you
just need a simple form with 2 fields for node names, a description of
the relationship, and optional URLs to supporting documentation. You
could get fancy with auto-completion of the node names, but that’s just
a detail. Editing a node/edge uses a similarly simple form. Each theme
page would also have an RSS feed, of course, of changes.

It would also be useful to be able to see the themes a node was
involved in, as an alternate view. So an individual lawmaker might show
up in a theme for a campaign and a general legislative topic.

As with any social site, suppressing malicious input might be tricky.
Using the wikipedia model of allowing anyone to edit anything, flag
content as suspicious, and block edits to prevent flame-type wars might
be enough.

All of the graphs should be available as image files. The question is,
are they rendered on the fly or on some regular basis? That would depend
on how expensive the rendering is. Obviously they only need to be
re-rendered after a change, so we want to cache the output files.

PyUGraph

I am continuing to migrate my old project repositories from CVS to
svn. In the process, today, I found some old code I wrote in 2001 (or
earlier) to generate input files for daVinci, an old di-graph
visualization package. It turns out that daVinci has been renamed to
uGraph, so when I released the code I updated the module name.

There are now other, possibly better, graph visualization tools
available. NetworkX looks very promising. It uses Graphviz, which
produces some really nice output. But, daVinci was the first tool I used
for doing relationship analysis. I used it to analyze calls between
functions in some nasty Perl code I was maintaining. I also used it to
analyze the module linkage dependencies in a large C toolkit library,
with the idea that we would split the big library up into several
smaller .so files for release. And there have been several one-off
projects along the way, too. Unfortunately, I seem to have lost most of
that code.