• D
    Support automatic creation of leases for disks in sanlock · 97e4f217
    Daniel P. Berrange 提交于
    The current sanlock plugin requires a central management
    application to manually add <lease> elements to each guest,
    to protect resources that are assigned to it (eg writable
    disks). This makes the sanlock plugin useless for usage
    in more ad hoc deployment environments where there is no
    central authority to associate disks with leases.
    
    This patch adds a mode where the sanlock plugin will
    automatically create leases for each assigned read-write
    disk, using a md5 checksum of the fully qualified disk
    path. This can work pretty well if guests are using
    stable disk paths for block devices eg /dev/disk/by-path/XXXX
    symlinks, or if all hosts have NFS volumes mounted in
    a consistent pattern.
    
    The plugin will create one lockspace for managing disks
    with filename /var/lib/libvirt/sanlock/__LIBVIRT__DISKS__.
    For each VM disks, there will be another file to hold
    a lease /var/lib/libvirt/sanlock/5903e5d25e087e60a20fe4566fab41fd
    Each VM disk lease is usually 1 MB in size. The script
    virt-sanlock-cleanup should be run periodically to remove
    unused lease files from the lockspace directory.
    
    To make use of this capability the admin will need to do
    several tasks:
    
     - Mount an NFS volume (or other shared filesystem)
       on /var/lib/libvirt/sanlock
     - Configure 'host_id' in /etc/libvirt/qemu-sanlock.conf
       with a unique value for each host with the same NFS
       mount
     - Toggle the 'auto_disk_leases' parameter in qemu-sanlock.conf
    
    Technically the first step can be skipped, in which case
    sanlock will only protect against 2 vms on the same host
    using the same disk (or the same VM being started twice
    due to error by libvirt).
    
    * src/locking/libvirt_sanlock.aug,
      src/locking/sanlock.conf,
      src/locking/test_libvirt_sanlock.aug: Add config params
      for configuring auto lease setup
    * libvirt.spec.in: Add virt-sanlock-cleanup program, man
      page
    * tools/virt-sanlock-cleanup.in: Script to purge unused
      disk resource lease files
    97e4f217
libvirt.spec.in 43.6 KB