KVM and libvirt best practices
Setting up my first environment using KVM on RHEL, I am disappointed about the lack of best practices and standardization regarding KVM on GFS clustering. First thing that should be obvious when sharing a complex and flexible piece of software online for production use, don't allow too many things without proper best practices. Otherwise people will do things differently and possibly for the wrong reasons.
For example, while with ESX there are proper locations for putting disks and VM config files on a shared storage, with libvirt both are separated and to me its unclear what part of the default paths should reside on shared storage and what-not. I guess, like many others, I will have to learn it the hard way. What a shame.
It is disappointing that proper conventions are lacking for:
- network bridges (eg. don't use vnetX for bridge names like many docs do)
- disk images (eg. using separate system and data disks)
- hardware/driver (eg. using virtio-net and virtio-blk better or not ?)
- kernel options (eg. should we be using noop elevator, different clock source, divider ?)
- architecture choice (eg. 32bit will probably be sufficient for most services, 64bit only when needed)
- multipath naming (eg. userfriendly names ?)
- LVM naming (eg. use unique names to prevent conflicts)
- GFS and cluster configuration (eg. what conventions are used inside RHEV ?)
For early adopters of libvirt, being able to migrate to RHEV in the future is an important prerequisite. For Red Hat having an easy migration path from a (custom) libvirt setup to RHEV without little hassle is interesting as well.
Have you been setting up libvirt environments, share your best practices here ! If you found interesting links to information, let us know too. Let's fill this void.