Zmenseni RAIDu a partition

Jan Kasprzak kas na fi.muni.cz
Pondělí Červen 12 22:54:14 CEST 2017


Slávek Banko wrote:
: On Monday 12 of June 2017 22:21:28 Jan Kasprzak wrote:
: > 	Zdravim,
: >
: > na jednom stroji me ceka zmenseni sw RAIDu a diskovych oblasti,
: > nad kterymi ten RAID bezi. Tak si to tady zkousim ve virtualnim stroji
: > a zjistuji, ze asi nevim jek to presne udelat:
: >
: > - mam 4 disky /dev/vd[c-f], na kazdem partition /dev/vd[c-f]1 pres cely
: > disk - na tom celem je RAID-10 /dev/md0
: > - mam snahu pres mdadm --grow --size=<neco> /dev/md0 zmensit disk. Toto
: > projde, ale ted nevim jak presne zmensit diskove oblasti pod tim
: > - pres mdadm --detail /dev/md0 si vypisu "Used Dev Size" a naivne si
: > 	predstavuji, ze presne takhle velkou partition mam vytvorit
: > - spustim tedy  mdadm --stop /dev/md0, zrusim /dev/vd[c-f]1 a vytvorim
: > 	novou partition presne podle "Used Dev Size".
: > - mdadm ale odmita sestavit pole zpatky:
: >
: > # mdadm --assemble --scan
: > mdadm: failed to add /dev/vdd1 to /dev/md/0: Invalid argument
: > mdadm: failed to add /dev/vde1 to /dev/md/0: Invalid argument
: > mdadm: failed to add /dev/vdf1 to /dev/md/0: Invalid argument
: > mdadm: failed to add /dev/vdc1 to /dev/md/0: Invalid argument
: > mdadm: failed to RUN_ARRAY /dev/md/0: Invalid argument
: > mdadm: No arrays found in config file or automatically
: >
: > - kdyz vratim diskove oblasti na plnou velikost, tak totez projde,
: > 	a mdadm --detail ukazuje spravnou (zmensenou) Used Dev Size
: >
: > Z toho usuzuji, ze tyto informace jsou i nadale ulozeny v superbloku
: > MD pole, ktery ve verzi metadat 1.2 je az na konci diskove oblasti.
: >
: > Jeste je mozne, ze ten superblok je i nekde pobliz toho mista kde konci
: > ta zmensena partition, ale ne presne. V manualove strance se pise:
: >
: >        -z, --size=
: >               Amount  (in  Kibibytes)  of space to use from each drive
: > in RAID levels 1/4/5/6.  This must be a multiple of the chunk size, 
: > and must  leave about 128Kb of space at the end of the drive for the
: > RAID superblock.  If this is not specified (as  it  normally  is not) 
: > the smallest drive (or partition) sets the size, though if there is a
: > variance among the drives of greater than 1%, a warn‐ ing is issued.
: >
: > Cili mozna by ta partition mela byt presne o 128k vetsi nez vypisuje
: > "Used Dev Size"? Ale fdisk zrejme kvuli zarovnani "cylindru" nechce
: > vytvorit partition presne o tuto velikost vetsi.
: >
: > Zkouseli jste nekdo zmensovat MD RAID pole? Jak se presne spocita
: > velikost te zmensene fyzicke oblasti? Pripadne je tam jeste nejaka
: > dalsi magie?
: >
: > 	Jeste je taky moznost, ze to takto nejde - ze musim zmensit
: > pole pres --grow, a pak postupne vyhazovat jednotlive partisny z pole,
: > zmensovat, vracet je po jedne do pole, a nechat synchronizovat.
: >
: > 	Diky,
: >
: > -Y.
: 
: Pokud jsou metadata verze 0.90 nebo 1.0, jsou na konci oddílu a muselo by 
: se s nimi pohnout. Pokud ale jsou metadata verze 1.2, jsou na začátku 
: oddílu, takže pro zmenšování by to mělo být díky tomu jednodušší.

	Nojovlastne, je to tak. Uz mi to nemysli takhle vecer.

: Na přesnou shodu velikosti pole a oddílu si určitě nehraje - tedy pokud 
: oddíl není menší, než stanovená velikost pole. Takže nějaké zarovnávání 
: fdiskem by nemělo hrát roli.
: 
: Při skládání pole, u kterého jsem měnil velikosti oddílů (v mém případě to 
: bylo zvětšování), se mi také vzpouzel - už si sice nepamatuji, zda též 
: hlásil Invalid argument, ale pomohlo mi při assemble přidat ještě 
: parametr: --update=devicesize

	Ja jsem zatim bisekci zjistil, ze kdyz vyhodim jeden disk z pole
pomoci --fail a --remove, zmensim partition, a pak chci pridat zpet,
tak pro partition s velikosti 15099904K (podle fdisk -l) musim zmensit
pole az na Used Dev Size = 15083520, a az pak jde takto velka partition
pridat do pole.

	Kdyz to spojim s tvou vyse uvedenou radou, tak skutecne jde
zmensit pole na 15083520K Used Dev Size, pak pole stopnout,
zmensit partisny na 15099904K, a pak --assemble s --update=devicesize.
Cili pole musi mit "Used Dev Size" o 16384K (=16MiB) mensi nez je velikost
fyzicke partition. Coz je teda brutalni rozdil, a je divne, ze se o nem
nikde nepise (a naopak u popisu --size (cituji vyse) se uvadi tech 128k).

	Kazdopadne diky za popostrceni.

-Y.

-- 
| Jan "Yenya" Kasprzak <kas at {fi.muni.cz - work | yenya.net - private}> |
| http://www.fi.muni.cz/~kas/                         GPG: 4096R/A45477D5 |
> That's why this kind of vulnerability is a concern: deploying stuff is  <
> often about collecting an obscene number of .jar files and pushing them <
> up to the application server.                          --pboddie at LWN <


Další informace o konferenci Linux