"Daniel P. Berrange" <berrange@redhat.com> a écrit :
On Thu, Mar 31, 2016 at 12:05:07PM +0200, villeneu@kassis.univ-brest.fr wrote:HelloDo you mean in the case of a host crash, and if so what filesystem ? If
I use lock_manager with libvirt 1.3 and
I would like to know how is exactly calculate the hash SHA256. I would
create a table
to retreive the name with the hash in case of crash to release manualy the
lock.
you are using NFS at lesat so you shouldn't need to know the file names,
there is the ability to tell the NFS server to release all locks associated
with a dead host.
I am using NFS. I have many POOL on an NFS server and I use a special share NFS with all my hypervisors
where I put my locks
qemu-lock.conf
...
lock file_lockspace_dir = "/var/lib/libvirt/images/POOL_ADMIN/lock"
...
my POOL are
lock file_lockspace_dir = "/var/lib/libvirt/images/POOL_ADMIN/lock"
....
my POOL are
/var/lib/libvirt/i/var/lib/libvirt/images/POOL_PROD1
/var/lib/libvirt/i/var/lib/libvirt/images/POOL_PROD2
....
In a first time,
I tried sanlock with the same configuration but some old VMs often have crashed and the qemu process were in an anormal state ( defunc ), and I wasn't be able to kill correctly the process. The virsh destroy command couldn't remove the VM.
from the virsh list ... and I always got
Failed to terminate process xxx with SIGTERM: Device or resource busy and the VM is still in the list
I wasn't be able to freeing the resource with sanlock and the result was that I couldn't start a VM which crashed before because the lock was still present.
I tried sanlock command to release the resource without success.
ie
sanlock client rem_lockspace -r
__LIBVIRT__DISKS__:b90b9c61e2d6413077205907ffb3281a:/var/lib/libvirt/images/POOL_ADMIN/sanlock/b90b9c61e2d6413077205907ffb3281a:0:4 -p 9383
So I decided to try lock_manager , but there is no tools as sanlock to coupled vm name and lock. In a case of crash and if the lock isn't removed I will be with the same problem, it 's one of the reason I want to create a datatable with sha256 checksum and the vm name.I do an sha256 hash from /var/lib/libvirt/images/lock/MyVM.img but IIt uses the sha256 has of the filename. How did you generate your hash ?
don't get the same hash code form virtlockd ?
If using shell make sure you don't include a newline
ie you want
echo -n /var/lib/libvirt/images/lock/MyVM.img | sha256sum
not a plain 'echo' as that includes a newline
to test before a script with the python libvirt API
I am using a very simple python script
import hashlib
hash_object = hashlib.sha256(b'/var/lib/libvirt/images/POOL_PROD4/WPAD.img')
hex_dig = hash_object.hexdigest()
print(hex_dig)
>>>f52b8ebb9e2922831cf4ff7520ad51ab48af004dbb732155df5e02809a01654c
and the lock in the directory when I start the VM is
virsh start WPAD
ls -alcrt -rw------- 1 root root 0 31 mars 15:02 f12269eb8c7afd6551f2549d245e52182714ae43fd0212626593195a24349605
so I am little confused ...
Regards,
Daniel
Michel
--
|: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org -o- http://virt-manager.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :||: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|