Portál AbcLinuxu, 10. května 2025 03:22
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.
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.
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
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.
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
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.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.