Re: create metadata from DMRAID

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, Jul 01, 2007 at 11:41:34PM -0700, Fang, Ying wrote:
> >> 2. A metadata handler needs build metadata based on several data such
> as
> >> raid set name, raid level, size, etc. Can they be carried into as a
> >> string argument or a field in "struct lib_context"? It's possible to
> >> build disk sets, raid device sets, and raid set sets too.
> >
> >No, a create_set() function needs adding to the library, which can
> >be called with a struct holding the respective parameters and lists of
> >devices involved.
> >
> >That function will derive properties of raid_dev arguments
> >for the metadata format handler .create method.
> >
> >commands.[ch] need the respective extensions to support
> >the "-C/--create" command line option.
> >
> >> 3. Can I design my own option format to create metadata by DMRAID
> such
> >> as:"dmraid -ms isw_xxxxxx_raidSet1" (d and D have been used.) to
> delete
> >> a raid set and "dmraid -f isw -w "isw_xxxx_raidNewSet device-mapper
> >> format" where device-mapper format is "0 1028160 striped 2 256
> /dev/sdb
> >> 0 /dev/sdc 0". But I have trouble for nested raid setup and try to
> use
> >> raid10 or raid51 to identify it.
> >
> >To create a RAID set:
> >dmraid -C isw_xxxxxx_raidSet1 [--layout LAYOUT] [--size X[kmgt]]
> >[DevicePath...]
> >
> >LAYOUT = string types defined in metadata.c (see get_type() function;
> >eg. "mirror").
> >X = size in KB, MB, GB, TB.
> >
> >In the isw case, which is different from most other metadata format
> >handlers
> >but DDF1, isw.c's create method would need to cover more complex
> >allocation,
> >because other volumes might already be on the devices.
> >
> >To delete a specific RAID set we can add to the existing erase option:
> >
> >dmraid -rE isw_xxxxxx_raidSet1
> >
> 
> 
> Let me rephrase what you've said. The input of DMRAID includes all
> necessary attributes of a raid set (called volume in ISW) to be created.
> An internal function, create_set, grabs user's choices and fills into a
> data structure, e.g. struct raidset_attr.

The data structure already exist: raid_set and raid_dev.
For one-level sets, a raid_set structure with multiple raid_dev
structures hanging off.
For 2-level sets (eg. RAID10), a top-level raid_set structure, multiple
bottom level raid_set structures hanging off it and multiple raid_dev
structures hanging off the bottom level ones.

You got to check, if the properties (ie. the structure mebers) are
sufficient or if we need to add some.

> Then it calls .create of an
> appropriate handler to build and write metadata to each hard device of
> the raid set. 

It calls a) .create and of that succeeds it'll call b) .write
in a followup step.

> 
> Also struct raidset_attr should cover parameters used to setup spare
> devices, resize an old raid set, and migrate non-raid device to a raid
> set, etc. 

All in raid_set and raid_dev.

> 
> How about manual and auto rebuilding? Should updating metadata status be
> handled by DMRAID or device drivers?

By dmraid using dmeventd, which is part of libdevmapper.
You got to create a dmraid DSO for dmeventd to make that happen.
Look at the mirror DSO for dmeventd for an example.

Heinz

> 
> 
> Thanks,
> Ying

_______________________________________________
Ataraid-list mailing list
Ataraid-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/ataraid-list

[Index of Archives]     [Linux RAID]     [Linux Device Mapper]     [Linux IDE]     [Linux SCSI]     [Kernel]     [Linux Books]     [Linux Admin]     [GFS]     [RPM]     [Yosemite Campgrounds]     [AMD 64]

  Powered by Linux