Skip to contentSkip to conversation

clvmd interface question

linux-lvm John DeFranco 3 participants 5 messages Nov 17, 2005 – Dec 2, 2005

lore
Share & tools
lore
#0 lore raw

Hi, I'm looking for some information. I'm interested in learning more about the clvmd daemon. I've search and found various pieces of info in addition to looking at the code. Specifically I looking to for information (a spec) on how one might be able to add a new cluster manager plugin if you will (if that is even possible). I know that clvmd interfaces with a couple of different cluster managers now but I'd like to expland this if possible.

Thanks

Signature · 8 lines
==========

John DeFranco
Hewlett-Packard Company
Availability Clusters Solution Division
19111 Pruneridge Ave, M/S 4101
Cupertino, CA 95014 phone: 408-447-7543
mailto: [email protected]
#1 lore raw
Quoted 7 lines · John DeFranco

Hi, I'm looking for some information. I'm interested in learning more about the clvmd daemon. I've search and found various pieces of info in addition to looking at the code. Specifically I looking to for information (a spec) on how one might be able to add a new cluster manager plugin if you will (if that is even possible). I know that clvmd interfaces with a couple of different cluster managers now but I'd like to expland this if possible.

clvmd supports cman and gulm, it has it's own internal function switch that determines what to do for each cluster manager.

To be honest it's not a good API as it was originally only designed to work with cman and the gulm support was bolted on later - so adding a new cluster manager might be a bit of work.

Have a look at the bottom of LVM2/daemons/clvmd/clvmd-cman for the function switch.

You'll also need to be aware that CMAN provides its own messaging system, which gulm does not. If your cluster manager provides a messaging system then I recommend you use it - otherwise you should be able to use the tcp-comms.c file with clvmd (that gulm support uses).

Another way, that might be easier, is to patch clvmd with the libcman patch in head of cluster CVS (cluster/cman/lib/clvmd-libcman.diff) and write a library for your cluster manager that emulates libcman - that one is a nice simple API and it will be supported by future versions of cman too.

Signature · 1 line
patrick
#2 lore raw

Also, there is a package called 'magma' that lives in the cluster tree.
This is an abstraction layer to different cluster managers and lock
managers. It has the ability to accept plugins for different cluster managers. I wonder if it would be useful for clvm to use magma, then writing plugins is easy and you never have to touch code that makes use of the cluster managers.

Patrick would know if this is a worthwhile goal.

brassow

Quoted 38 lines · Patrick Caulfield
Quoted 7 lines · John DeFranco

Hi, I'm looking for some information. I'm interested in learning more about the clvmd daemon. I've search and found various pieces of info in addition to looking at the code. Specifically I looking to for information (a spec) on how one might be able to add a new cluster manager plugin if you will (if that is even possible). I know that clvmd interfaces with a couple of different cluster managers now but I'd like to expland this if possible.

clvmd supports cman and gulm, it has it's own internal function switch that determines what to do for each cluster manager.

To be honest it's not a good API as it was originally only designed to work with cman and the gulm support was bolted on later - so adding a new cluster manager might be a bit of work.

Have a look at the bottom of LVM2/daemons/clvmd/clvmd-cman for the function switch.

You'll also need to be aware that CMAN provides its own messaging system, which gulm does not. If your cluster manager provides a messaging system then I recommend you use it - otherwise you should be able to use the tcp-comms.c file with clvmd (that gulm support uses).

Another way, that might be easier, is to patch clvmd with the libcman patch in head of cluster CVS (cluster/cman/lib/clvmd-libcman.diff) and write a library for your cluster manager that emulates libcman - that one is a nice simple API and it will be supported by future versions of cman too.

Signature · 7 lines
patrick

_______________________________________________
linux-lvm mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/linux-lvm
read the LVM HOW-TO at http://tldp.org/HOWTO/LVM-HOWTO/
#3 lore raw
Quoted 8 lines · Jonathan E Brassow

Also, there is a package called 'magma' that lives in the cluster tree.
This is an abstraction layer to different cluster managers and lock
managers. It has the ability to accept plugins for different cluster managers. I wonder if it would be useful for clvm to use magma, then writing plugins is easy and you never have to touch code that makes use of the cluster managers.

Patrick would know if this is a worthwhile goal.

clvmd uses several cluster manager features that magma doesn't provide - off the top of my head I can't actually remember what these are as it's been ages since I did it!

Of course, it's quite probable that magma could be extended to provide these features. The main reason it is the way it is is that quite a lot of rewriting of clvmd would have been necessary for it to fit into magma's model due to the short-sighted way it (clvmd) was written. In effect the abstraction layer (such as it is) tries to make gulm look like cman/dlm.

I'm sure it could be done...but it's all time...

Signature · 1 line
patrick
#4 lore raw
In reply to Patrick Caulfield
Quoted 27 lines · Patrick Caulfield
Quoted 9 lines · John DeFranco

Hi, I'm looking for some information. I'm interested in learning more about the clvmd daemon. I've search and found various pieces of info in addition to looking at the code. Specifically I looking to for information (a spec) on how one might be able to add a new cluster manager plugin if you will (if that is even possible). I know that clvmd interfaces with a couple of different cluster managers now but I'd like to expland this if possible.

clvmd supports cman and gulm, it has it's own internal function switch that determines what to do for each cluster manager.

To be honest it's not a good API as it was originally only designed to work with cman and the gulm support was bolted on later - so adding a new cluster manager might be a bit of work.

Have a look at the bottom of LVM2/daemons/clvmd/clvmd-cman for the function switch.

You'll also need to be aware that CMAN provides its own messaging system, which gulm does not. If your cluster manager provides a messaging system then I recommend you use it - otherwise you should be able to use the tcp-comms.c file with clvmd (that gulm support uses).

Quoted 7 lines

Another way, that might be easier, is to patch clvmd with the libcman patch in head of cluster CVS (cluster/cman/lib/clvmd-libcman.diff) and write a library for your cluster manager that emulates libcman - that one is a nice simple API and it will be supported by future versions of cman too.

Thanks for the info. I'll be looking into this.

Signature · 3 lines
==========
Cheers
  -jdf