[libvirt-users] How is calculate the lock with lockd_manager

Hello 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. I do an sha256 hash from /var/lib/libvirt/images/lock/MyVM.img but I don't get the same hash code form virtlockd ? Any Ideas ? Best regards ----- PS: sorry for my previous mail it was in a wrong thread

On Thu, Mar 31, 2016 at 12:05:07PM +0200, villeneu@kassis.univ-brest.fr wrote:
Hello
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.
Do you mean in the case of a host crash, and if so what filesystem ? If 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 do an sha256 hash from /var/lib/libvirt/images/lock/MyVM.img but I don't get the same hash code form virtlockd ?
It uses the sha256 has of the filename. How did you generate your hash ? 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 Regards, Daniel -- |: 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 :|

"Daniel P. Berrange" <berrange@redhat.com> a écrit :
On Thu, Mar 31, 2016 at 12:05:07PM +0200, villeneu@kassis.univ-brest.fr wrote:
Hello
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.
Do you mean in the case of a host crash, and if so what filesystem ? If 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 I don't get the same hash code form virtlockd ?
It uses the sha256 has of the filename. How did you generate your hash ? 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 :|
participants (2)
-
Daniel P. Berrange
-
villeneu@kassis.univ-brest.fr