Portál AbcLinuxu, 10. května 2025 03:22

Dotaz: MD RAID a near + far layout

21.5.2009 02:22 Jiří J. | skóre: 34 | blog: Poutník | Brno
MD RAID a near + far layout
Přečteno: 477×
Odpovědět | Admin

Zdravím,
rád bych si postavil raid 10 pomocí mdadm s následujícím rozložením (wiki):

A1  A1  A2  A2
A3  A3  A4  A4
A5  A5  A6  A6
A7  A7  A8  A8
..  ..  ..  ..
A2  A2  A1  A1
A4  A4  A3  A3
A6  A6  A5  A5
A8  A8  A7  A7
..  ..  ..  ..

čehož lze dosáhnout pomocí n2 f2 (2 "near" kopie a 2 "far" kopie).

Podle manuálová stránky md(4), na kterou mdadm(8) odkazuje, se mohu dočíst

Finally, it is possible to have an array with both 'near' and 'far' copies. If an array is configured with 2 near copies and 2 far copies, then there will be a total of 4 copies of each block, each on a different drive. This is an artifact of the implementation and is unlikely to be of real value.

Má otázka tedy zní; je možné tohoto rozložení dosáhnout v rámci jednoho raid10 pomocí mdadm? Nebo je potřeba vytvořit dva mirrory a na ně pustit raid10 s f2? Jak by potom bylo možné sestavit druhý příkladový array na wiki (s 5 disky)?

A1  A1  A2  A2  A3
A3  A4  A4  A5  A5
A6  A6  A7  A7  A8
A8  A9  A9  A10 A10
..  ..  ..  ..  ..
A2  A3  A1  A1  A2
A5  A5  A3  A4  A4
A7  A8  A6  A6  A7
A10 A10 A8  A9  A9
..  ..  ..  ..  ..

Díky za případné odpovědi.

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

21.5.2009 02:47 Jiří J. | skóre: 34 | blog: Poutník | Brno
Rozbalit Rozbalit vše Re: MD RAID a near + far layout
Odpovědět | | Sbalit | Link | Blokovat | Admin

Jenom bych dodal, že mi jde spíše o princip (a benchmark), v praxi bude asi --layout=f4 na 4 disky rychlejší a stejně redundantní.
Něco jako

# mdadm -Cv -l10 -p n2,f2 -n2 /dev/md1 /dev/hda3 /dev/hdc2
mdadm: layout for raid10 must be 'nNN', 'oNN' or 'fNN' where NN is a number, not n2,f2

mi mdadm nesežere.

21.5.2009 16:06 NN
Rozbalit Rozbalit vše Re: MD RAID a near + far layout

Podle manualu je 'n2' default, takze bych to vyskousel bez toho paramentru, jen s 'f2'. Nicmene se pise:

"Finally, it is possible to have an array with both 'near' and 'far' copies. If and array is configured with 2 near copies and 2 far copies, then there will be a total of 4 copies of each block, each on a different drive. This is an artifact of the implementation and is unlikely to be of real value. "

NN

21.5.2009 20:16 Jiří J. | skóre: 34 | blog: Poutník | Brno
Rozbalit Rozbalit vše Re: MD RAID a near + far layout

Ano, ten odstavec jsem také citoval v dotazu. Samotný f2 samozřejmě n2 neaplikuje, to bych při 2 discích na f2 dostal něco jako

A1 A1
A2 A2
A3 A3
.. ..
A1 A1
A2 A2
A3 A3
.. ..

což moc smysl nedává (a přišel bych k 1/4 celkové diskové kapacity array, avšak f2 poskytuje 1/2). Tzn. jen f2 asi vypadá

A1 A2     A1 A2 A3
A3 A4     A4 A5 A6
A5 A6     A7 A8 A9
.. ..     .. .. ..
A2 A1     A3 A1 A2
A4 A3     A6 A4 A5
A6 A5     A9 A7 A8
.. ..     .. .. ..

pokud jsem to dobře pochopil.

 

21.5.2009 21:16 Jiří J. | skóre: 34 | blog: Poutník | Brno
Rozbalit Rozbalit vše Re: MD RAID a near + far layout

Jinak mdadm -E /dev/hdc2 (jeden z disků v array) ukazuje

Layout : near=1, far=2

při --layout=f2
a

Layout : near=1, offset=2

při --layout=o2

21.5.2009 22:39 Jiří J. | skóre: 34 | blog: Poutník | Brno
Rozbalit Rozbalit vše Re: MD RAID a near + far layout
Odpovědět | | Sbalit | Link | Blokovat | Admin

Takže mdadm zmíněný near=2,far=2 layout asi doopravdy neumí, mdadm.c nepovoluje specifikovat více layoutů zároveň

case 10:
        /* 'f', 'o' or 'n' followed by a number <= raid_disks */
        if ((optarg[0] !=  'n' && optarg[0] != 'f' && optarg[0] != 'o') ||
            (copies = strtoul(optarg+1, &cp, 10)) < 1 ||
            copies > 200 ||
            *cp) {
                fprintf(stderr, Name ": layout for raid10 must be 'nNN', 'oNN' or 'fNN' where NN is a number, not %s\n", optarg);
                exit(2);
        }
        if (optarg[0] == 'n')
                layout = 256 + copies;
        else if (optarg[0] == 'o')
                layout = 0x10000 + (copies<<8) + 1;
        else
                layout = 1 + (copies<<8);
        break;

, přes Grow to také nejde

# mdadm -Cv -l10 -p n2 --assume-clean -n2 /dev/md1 /dev/hda3 /dev/hdc2
mdadm: chunk size defaults to 64K
mdadm: size set to 3156672K
mdadm: array /dev/md1 started.

# mdadm -G /dev/md1 -l10 --layout=n2
layout set to 258

# mdadm -G /dev/md1 -l10 --layout=f2
layout set to 513
mdadm: Cannot set layout for /dev/md1: Invalid argument

# mdadm -G /dev/md1 -l10 --layout=n2 --layout=f2
mdadm: layout may only be sent once.  Second value was f2

# mdadm -E /dev/hda3
  ...
         Layout : near=2, far=1
  ...

a nenapadá mě jiný způsob, jak by to jít mohlo.
Tudíž volím variantu raid10,f2 přes 2x raid1, kterou lze na 4 discích použít.

Přesto bych byl rád za případné informace o tomto problému.

Díky.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.