[Drbd-dev] Re: drbd in linux-ha cvs
Philipp Reisner
philipp.reisner at linbit.com
Tue Sep 7 09:57:57 CEST 2004
On Monday 06 September 2004 16:52, you wrote:
> waere es sinnvoll sowas zu haben:
>
> drbdadm dump_meta_data r0 (oder info oder wie immer wir das nennen wollen)
>
> output would be bash sourceable:
> GEN_COUNT=SOME:LONGER:STRING:WITH:NUMBERS:AND:STUFF
> LOCAL_STATE={Primary,Secondary}
> REMOTE_STATE=...
> CSTATE=...
> LOCAL_STORAGE=...
>
>
> name space clashes können so gelöst werden:
> eval `drbdadm info r0 | sed 's/^/DRBD_/'`
>
> müsste einmal vernünftig überlegt werden, welche informationen wir
> exportieren wollen, und wie die variablen genannt werden.
> wie drbdadm an die info rankommt ist seine sache.
>
> deal?
>
Of course I am open to this idea.
Ideas:
1) We move the read_gc.pl/write_gc.pl to the user directory.
2) Make them to one C program: drbdmeta
-> in the future the module never creates the meta data
block. One can use drbdmeta to create, read and
modify the drbdmeta block. drbdmeta refuses to write
to it as long as the module is loaded (configured).
3) drbdadm is the nice frontend to drbdmeta is it is to
drbdsetup.
Currently we have these drbdadm commands that are not displayed
at the usage output:
{ "sh-resources", sh_resources,0 ,0,0 },
{ "sh-mod-parms", sh_mod_parms,0 ,0,0 },
{ "sh-dev", sh_dev, 0 ,0,1 },
{ "sh-ll-dev", sh_ll_dev, 0 ,0,1 },
{ "sh-md-dev", sh_md_dev, 0 ,0,1 },
{ "sh-md-idx", sh_md_idx, 0 ,0,1 }
... and we have state and cstate:
{ "state", adm_generic_s,"state" ,1,1 },
{ "cstate", adm_generic_s,"cstate" ,1,1 },
with the current interface you would do:
CSTATE=$(drbdadm cstate r0)
LOCAL_STATE=$( $DRBDADM state $RES 2> /dev/null )
LOCAL_STATE=${LOCAL_STATE%/*}
LOCAL_STORAGE= $(drbdadm sh-ll-dev r0)
...
With the current interface we have a lot of calls to drbdadm, so lets
have a look at the performance:
root at bloody:~/drbd07/user# time drbdadm sh-ll-dev r0
/dev/hdc1
real 0m0.170s
user 0m0.059s
sys 0m0.111s
... Quite slow!
So I disabled "verify_ips()". [ should probabely be really disabled. ]
root at bloody:~/drbd07/user# time ./drbdadm sh-ll-dev r0
/dev/hdc1
real 0m0.006s
user 0m0.001s
sys 0m0.005s
... now a call to drbdadm is as cheap as expected.
So with continuing the current way of doing things, I would
extend the interface in this way:
drbdadm md-set-gc 1:2:3:4:5:6 r0
drbdadm md-get-gc 1:2:3:4:5:6 r0
drbdadm md-get/set-{la-size|consistent|etc...} resources....
drbdadm md-create r0
I rather prefer the current way, since it is also language
agnostic. In perl: $local_storage = `drbdadm sh-ll-dev r0`;
While the proposed interface is tied to bash.
-philipp
--
: Dipl-Ing Philipp Reisner Tel +43-1-8178292-50 :
: LINBIT Information Technologies GmbH Fax +43-1-8178292-82 :
: Schönbrunnerstr 244, 1120 Vienna, Austria http://www.linbit.com :
More information about the drbd-dev
mailing list