Syntax of a Description File for RAID Configurations

Top  Previous  Next

You may create and store your own RAID configurations The syntax of those files is similar to that of the XML language. They are stored in an .xml file specified on the R-Studio Settings.

A number of file examples are shown on the Description Files for RAID Configurations topic.

There are two types of such description files: for RAID presets and custom-created RAID layouts.

RAID preset configuration file

<?xml version="1.0" encoding="UTF-8"?>

<RAIDList version="1">

    <RAID blockSize="65536" name="RAID5" rows="3" type="5" order="2" parityDelay="1">

        <Parents>

            <Parent comp="RAID5Disk1.dsk" name="Promise1+0 JBOD1.10" size="40060321792" order="1"/>

            <Parent comp="RAID5Disk2.dsk" name="Promise1+0 JBOD1.10" size="40060321792" order="2"/>

            <Parent comp="RAID5Disk3.dsk" name="Promise1+0 JBOD1.10" size="40060321792" order="3"/>

        </Parents>

    </RAID>

</RAIDList>

 

Custom-created RAID configuration file example

<?xml version="1.0" encoding="UTF-8"?>

<RAIDList version="1">

    <RAID blockSize="65536" name="RAID6Complex" rows="6" type="256">

        <Parents>

            <Parent name="img1.bin" size="941359104" order="1"/>

            <Parent name="img2.bin" fs="NTFS" size="941359104" order="2"/>

            <Parent name="img3.bin" size="941359104" order="3"/>

            <Parent name="img4.bin" size="941359104" order="4"/>

            <Parent name="img5.bin" size="941359104" order="5"/>

        </Parents>

        <Table>

            <Block id="A1">ReedSolomon</Block>

            <Block id="B1">1</Block>

            <Block id="C1">2</Block>

            <Block id="D1">3</Block>

            <Block id="E1">XorOfData</Block>

            <Block id="A2">4</Block>

            <Block id="B2">5</Block>

            <Block id="C2">6</Block>

            <Block id="D2">XorOfData</Block>

            <Block id="E2">ReedSolomon</Block>

            <Block id="A3">8</Block>

            <Block id="B3">9</Block>

            <Block id="C3">XorOfData</Block>

            <Block id="D3">ReedSolomon</Block>

            <Block id="E3">7</Block>

            <Block id="A4">12</Block>

            <Block id="B4">XorOfData</Block>

            <Block id="C4">ReedSolomon</Block>

            <Block id="D4">10</Block>

            <Block id="E4">11</Block>

            <Block id="A5">XorOfData</Block>

            <Block id="B5">ReedSolomon</Block>

            <Block id="C5">13</Block>

            <Block id="D5">14</Block>

            <Block id="E5">15</Block>

            <Block id="A6" sequence="1">XorOfAll</Block>

            <Block id="B6" sequence="2">XorOfAll</Block>

            <Block id="C6" sequence="3">XorOfAll</Block>

            <Block id="D6" sequence="4">XorOfAll</Block>

            <Block id="E6" sequence="5">XorOfAll</Block>

        </Table>

        <Sequences>

            <Sequence id="1">A1 A2 A3 A4 A5 A6</Sequence>

            <Sequence id="2">B1 B2 B3 B4 B5 B6</Sequence>

            <Sequence id="3">C1 C2 C3 C4 C5 C6</Sequence>

            <Sequence id="4">D1 D2 D3 D4 D5 D6</Sequence>

            <Sequence id="5">E1 E2 E3 E4 E5 E6</Sequence>

        </Sequences>

    </RAID>

</RAIDList>

File structure

File header

The file starts with a standard  XML header:

<?xml version="1.0" encoding="utf-8"?>

Section RAIDList

<RAIDList>

It can contain any number of the <RAID> sections and requires a closing element </FileTypeList>.

Section structure example:

  <RAIDList>

    <RAID [attributes]>

      ...

    </RAID>

    ...

    <RAID [attributes]>

      ...

    </RAID>

Section RAID

This section describes each RAID layout.

It must contain at least one <Table> and <Parents> sections and can contain one block <Sequences>..

<RAIDList version="1">

    <RAID blockSize="65536" name="RAID5" rows="3" type="5" order="2" parityDelay="1">

        <Parents>

            

        </Parents>

        <Table>

 

        </Table>

        <Sequences>

 

        </Sequences>

    </RAID>

</RAIDList>

Attributes:

blocksize

<u32>

Required

The block size of the RAID in bytes

name

<string>

Optional

The name of the RAID layout

rows

<u16>

Required

The number of rows in the RAID layout table.

type

<u16>

Required

The type of the RAID preset. The following types are supported:

1: RAID0 (Stripe set)

2: RAID10

3: RAID1E

4: RAID4

5: RAID5

6: RAID5E

7: RAID5EE

8: RAID6 / Reed-Solomon Encoding

9: RAID6E / Reed-Solomon Encoding

10: RAID6 / Vertical Xor Encoding

256: Custom Raid Table

If the RAID type parameter contradicts to the RAID table, the RAID table always prevails.

order

<u16>

Required/Optional

The RAID sub-type. For example, order="2" means Left Asynchronous for RAID5 layouts. Any value for the custom RAID layouts will be ignored.

parityDelay

<u16>

Required

The Parity delay parameter.

Section structure example:

<RAID blockSize="65536" rows="6" type="256">

        <Parents>

 

        </Parents>

 

        <Table>

 

        </Table>

        <Sequences>

 

        </Sequences>

    </RAID>

Section Parents

This section describes the RAID parents. It contains the <Parent> elements of the RAID.

Section structure example:

        <Parents>

            <Parent comp="RAID5Disk1.dsk" name="Promise1+0 JBOD1.10" size="40060321792" order="1"/>

            <Parent comp="RAID5Disk2.dsk" name="Promise1+0 JBOD1.10" size="40060321792" order="2"/>

            <Parent comp="RAID5Disk3.dsk" name="Promise1+0 JBOD1.10" size="40060321792" order="3"/>

        </Parents>

Element Parent

The element specifies the parent of the RAID.

Attributes:

comp

<string>

Required/Optional

The file-container with the parent object.

name

<string>

Required

The object name of the RAID parent.

offset

<u16>

Required is not 0

The offset value in bytes

size=

<u16>

Required

The object size in bytes

order

<u16>

Required

The order of the RAID object

Section Table

This section describes the RAID layout table. It contains the <Block> elements which number is a product of two attributes in the <RAID> section: <parents> x <rows>.

Section structure example:

  <RAIDList>

    <RAID name="example" parents="2" rows="2" blocksize="16777216">

      <Table>

        <Block [attributes]> ... </Block>

        <Block [attributes]> ... </Block>

        <Block [attributes]> ... </Block>

        <Block [attributes]> ... </Block>

      </Table>

    </RAID>

  </RAIDList>

Element Block

The element specifies the block number in the RAID layout table (a positive integer number) or an error correction block of the following types:

PD or ParityOfData

PA or ParityOfAll

RS or ReedSolomon

U or Unknown

I or Ignore

Any other value is treated as Unknown.

Attributes:

id

<string>

Required

The alpha-numerical identifier of the block in the RAID layout table. The element in the 3-rd column of the 2-nd line is designated as C2. AA is used after letter Z, and so on.

sequence

<string>

Optional

The numerical identifier for non-default sequences.

Section Sequences

This section describes the non-default data checksum sequences used to preserve data integrity. It is not necessary to explicitly list default sequences (the table rows). Sequences can contain any number of the <Sequence> elements.

Section structure example:

  <RAIDList>

    <RAID name="example" parents="4" rows="4" blocksize="16777216">

     <Parents>

     

     </Parents>

      <Table>

        ...

      </Table>

      <Sequences>

        <Sequence [attributes]> ... </Sequence>

        ...

        <Sequence [attributes]> ... </Sequence>

      </Sequences>

    </RAID>

  </RAIDList>

Element Sequence

The element contains the list of the RAID blocks belonging to that sequence. The elements are separated by a space .

Attributes:

id

<u16>

Required

The sequence identifier.

Element example:

See the RAID configuration file example.

 

Comments

<!-- Comment string -->

An XML standard string for a comment.