MDADM Raid 1 átméretezés

Sziasztok, át szeretnék méretezni mdadm raid1 mögötti ext4 partíciókat. Így csináltam:

"resize2fs" parancssal csökkentettem az ext4-et a cél méret alá
"mdadm --grow"-val csökkentettem az raid partíciót a kívánt méretre
"resize2fs" -el megnöveltem az ext4-et a maximumig

Ez így szép és jó, hibátlanul működik a filerendszer. Viszont a mögötte lévő /dev/sda1, /dev/sdb1 partíciók mérete nem változott meg (nyilván). Viszont ha törlöm a partíciót és létrehozok egy újat ugyanazzal a kezdő pozícióval, de új mérettel, akkor utána már nem mountolja fel az mdadm.

Szerintem valami apróság hiányzik még a recepthez, de nem tudom mi.

Hozzászólások

Ki kell rúgni a tömbből a particiót, utána méretezni és újra hozzáadni. A típusa Linux raid autodetect legyen.

--
Apache Solr Druplahoz és Wordpresshez: http://solr.vpspro.hu

Mikor, a fenti átméretezgetés előtt vagy után? Egyszerre mind a kettőt, vagy külön-külön és közötte várni a sync-re? És főleg mekkora legyen az új partíció. Azt tudom hogy a fenti átméretegetés után darabra hány 4k-s blokkból áll az ext4. Az új partíció is pont ekkora legyen vagy kell hely a superblock-nak?

Köszönöm sikerült így. Összefoglalnám az archívum számára:

1) Először csökkentettem az md partíció és az ext4 fájlrendszer méretét úgy, ahogy a topic nyitásban leírtam. A méret a tervezett méret alá kell belőni, de nem olyan nagyon sokkal. Ha jól számolom most a végén akár 1MiB is elég lehet, de 5-10 MiB már biztos jó.
2) Ezután a két partícióra külön külön el kell végezni a következő lépéseket (3-8)
3) partíció fail-be állítása "mdadm --manage --fail"-el
4) partició eltávolítása "mdadm --manage --remove"-val
5) Nagyon fontos!!! a superblock kinullázása dd-vel vagy "mdadm --zero-superblock"-kal
6) régi partíció törlése, új létrehozása ahol a kezdő sector pozíció megegyezik a régivel, a hossz pedig a ténylegesen áhított méret
7) partíció hozzáadása "mdadm -a"
8) vármi a sync befejezéséig
9) megismételni a lépéseket a másik partícióra is. És voila, van is szabad hely winyókon.

Egyszerre semmikképp se :D

A gond ott van, hogy a md driver a partíció végén tárolja a metadatát, így ha kisebbre csinálod a partíciót, akkor kakukk lesz neki. Bár épp ez mintha változott volna, és az újabb driver a partíció elején tárolja az adatait, és ekkor előállhat egy olyan helyzet, hogy a medatada szerint X méretű a partíció, de amúgy meg csak Y (de lehet hogy ez utóbbi így marhaság).

Amikor visszarakod a tömbbe a kisebbé varázsolt partíciót, akkor szerintem úgyis fog panaszkodni, ha kevesebb blokk van mint amennyi neki kéne.

OFF: ennyi hókuszpókusszal már LVM-re is átállhatnál.

Azt hogy érted hogy "létrehozok egy újat ugyanazzal a kezdő pozícióval, de új mérettel"???
--
Debian Linux rulez... :D

Nem! Nem az számít, hogy hányadik számú partíció, hanem hogy a kezdő sector ugyanott legyen. Magyarul csökkenteni-növelni úgy lehet, hogy a partíció utolsó sectorát tudod közelebb-távolabb vinni az első sectorhoz.

Ha az elejét akarod elmozgatni, akkor átmenetileg dd-zni kell valahova az adatokat (akár ugyanarra a winyóra, ha van még annyi hely) majd létrehozni az új partíciót ahol szeretnéd, majd vissza dd-zni a cuccot. Utána jöhet a varázsolgatás az md méretezéssel. A mai processzorok erősek, a HDD-k meg lassúak, ha átmenetileg dd-zel valahova, érdemes onthefly gzip-elni, mert hamarabb végez.

Bocs, félreértettelek... :D

Úgy gondoltam, hogy van egy raid 1-es tömböd (ami mondjuk sda1 és sdb1-ből áll), amit csökkentesz, és az EZEK utáni (mivel te mögötti szót használtál) partíciókat akarod változtatni. :D

A legjobb megoldást már leírtad, bár én kicsit másképp csinálnám:

1. Egyik diszket kivenni.
2. Adott partíciót törölni.
3. Új mérettel létrehozni.
4. Új tömböt létrehozni az új partícióval és egy "missing"-el. Ekkor kiabálhat hogy máshol volt, amit vagy a "zero-superblock"-kal oldanék meg, vagy ha jól emlékszem, akkor rákérdez, hogy mégis akarom-e? -> Yes
5. Adatmásolás a két tömb között.
6. Eredeti tömb lelövés.
7. Másik diszk újrapartícionálsa.
8. Be az új tömbbe a partíciót.
9. Tömb átnevezés a régi névre (már ha kell).

Viszont nem tudom, tudod-e, hogy azt is meg lehet csinálni, hogy az egész diszkeket teszed raid 1 tömbbe, és a tömbön hozol létre partíciókat.
Így lesz pl. /dev/md1p1, /dev/md1p2, stb...
--
Debian Linux rulez... :D

Milyen szinten? Egy routeren esetleg kevés lehet a ram, és spórolunk mindennel, ott oké.
De hogy az a 3 parancs kiadása kinek fáj, azt nem tudom...
Nem azt mondom, hogy szanaszéjjel kell lv-zni az egész gépet, de az lvm-et én mindenhol használom.

Snapshot miatt a korrekt backup is nagyságrendekkel egyszerűbb.

--
Gábriel Ákos
http://i-logic.hu

En nem hasznalok mindenhol LVM-et, csak ahol ennek ertelme van. Egy appliance-jellegu gepen, ahol a gyokeren kivul sosem lesz mas particio mountolva, vagy legfeljebb egy /var/log, felesleges LVM-ezni. Olyan Xen virtualis gepen belul, mely maga is egy LVM koteten ul nincs ertelme az LVM-nek.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. 

Az elso esetre gondolsz? Az appliance jellegu gep nalam olyan gepet jelent, amin egy darab szoftver fut onmagaban, peldaul egy spam es virusszuro, vagy egy reverse proxy, esetleg egy darab valami webszervizt kiszolgalo webapp. Ha adatot termel, azt vagy valamilyen kulso megoldasra szoktam kimenteni (peldaul NFS-re), vagy eleve ugy meretezek. Az ilyen jellegu gepekbe nalam ritkan kerul uj diszk, ha fenn kell tartani a lehetoseget (mert folyamatosan termel olyan adatot, amire szukseg van), akkor egy atszinkronizalas utan egyszeruen bemountolom a helyere az uj diszket. De a legtobbszor inkabb a rendszerdiszk szokott kidolni, azt meg (RAID1) ugyis csak egyszerre lehet cserelni.

Appliance-nak elsosorban olyasmit szoktam megcsinalni, aminel fontos az, hogy halalpontos verzioju szoftverek legyenek osszelove, mert csak igy mukodik az adott alkalmazas. Tehat mittudomen, van egy baromirohadtfontos PHP oldal, ami csak PHP 4.4.3-etch6 verzioval fut Apache 1.3-on, mert csak. Ekkor csinalok egy gepet, amiben csak ez az egy webapp van, azzal a PHP-val, azzal az Apache-csal, amirol konkretan tudjuk, hogy fut, egy az egyben megkapja a konfigjat, kap egy nagyon szigoru tuzfalat meg egy darab admin usert, es a tovabbiakban csak a kidolo hardvereket cserelem mogotte.

Esetleg valami nem trivialis cuccot csinalok meg appliance-nak, mint pl a Maia spam es virusszuro, amit eleg nehez feltelepiteni es mindent alalapatolni, es a francnak van kedve ezt eljatszani mindig, felhuzom, belovom, ha mukodik, kap egy admin usert meg egy minimalis forgalmat engedo tuzfalat, es ennyi.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. 

vagy hagyomanyos modszer: fellabusitod a raid-et, csinal egy uj fellabu tombot kisebb particioval, adat copy, regi raid stop, disk bead uj raid.

vagy ha mindenkepp elesen akarsz csokkenteni, akkor ugyanazt a modszert kovesd ahogy az ext4-md-nel tetted: lehuzod a tombot joval kisebbre mint a vegleges, beraksz neki uj particiot, majd tombot visszatolod amennyire lehet (mdadm --grow /dev/md2 --size=max)

--
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!

feliratkozás
--
"'The time has come,' the Walrus said"

Sziasztok!

Van két teljesen azonos szerkezetű sata HDD (sda/sdb) a gépemben.
Mindegyik elején egy-egy azonos méretű NTFS partíció (20GB) található (sda1/sdb1), amelyeket egy szoftveres RAID1 partíció (MD0, 20GB) követ, amely az sda2/sdb2 partíciókból áll. (Ezen található az általam használt Ubuntu 13.04.)

Mivel már nincs szükségem az NTFS partíciókra, a RAID1 partíción pedig már kevés a helyem, arra gondoltam, hogy mindkét lemezen törlöm az NTFS partíciót és megpróbálom az MD0 RAID1 partíciót átméretezni úgy, hogy ezt a - jelenleg előtte található - helyet is használja.

Tehát a RAID1 partíciót a "lemez elejére kellene húznom" és utána megnövelni a méretét a jelenlegi határig (mert utána is van még több partíció). Meg lehet ezt csinálni valahogy szerintetek? (A GParted - bár látja az MD0 partíciót - sajnos nem tud ilyet.)

Ha utána lenne a szabad helyem, semmi gondom nem lenne, mert kivenném az egyik lemezt a tömbből, átméretezném, aztán visszatenném a tömbbe és a szinkronizálás után ugyanezt megcsinálnám a másikkal. De így, hogy előtte van a szabad hely, nem tudom, hogy mi történne, ha így kezdenék neki, de úgy sejtem, hogy baj lenne belőle.

Nincs LVM-em.

Úgy látom, hogy azt javasolod, amit én is írtam és meg is merném csinálni, ha a szabad hely az MD0 után lenne, de sajnos előtte van.

Nem lesz abból gond, hogy a tömb egyik partíciója az átméretezés után nem ott fog kezdődni, ahol a méretezés előtt? (Erről nem találtam információt sehol sem.)

Sziasztok!

Leírom az archívum számára, hogyan sikerült az aktív MD0 raid partícióm (ext4) területének megnövelése az előtte található NTFS partíció törlésével és hozzáadásával, új tömb létrehozása nélkül, az alábbi módon:

A partíció szerkezet a művelet előtt:

Disk /dev/sda: 500.1 GB


NTFS /dev/sda1 HPFS/NTFS/exFAT  20GB
MD0  /dev/sda2 Linux raid       20GB
MD1  /dev/sda3 Linux raid
     /dev/sda4 Kiterjesztett
MD2  /dev/sda5 Linux raid
MD3  /dev/sda6 Linux raid

Disk /dev/sdb: 500.1 GB


NTFS /dev/sdb1 HPFS/NTFS/exFAT  20GB
MD0  /dev/sdb2 Linux raid       20GB
MD1  /dev/sdb3 Linux raid
     /dev/sdb4 Kiterjesztett
MD2  /dev/sdb5 Linux raid
MD3  /dev/sdb6 Linux raid

Kivettem az MD0 tömbből az első lábat:

sudo mdadm --fail /dev/md0 /dev/sda2
sudo mdadm --remove /dev/md0 /dev/sda2

Az fdisk programmal töröltem az sda1 és az sda2 partíciót, a helyükön létrehoztam egy új Linux raid típusú sda1 partíciót, amelyen létrehoztam az MD0 típusának megfelelő ext4 fájlrendszert, majd hozzáadtam az új partíciót a tömbhöz:

sudo fdisk /dev/sda
sudo mkfs.ext4 /dev/sda1
sudo mdadm --add /dev/md0 /dev/sda1

Megvártam, amíg lezajlik a szinkronizálás, majd ugyanezeket a műveleteket elvégeztem az sdb lemezen is.

sudo mdadm --fail /dev/md0 /dev/sdb2
sudo mdadm --remove /dev/md0 /dev/sdb2

sudo fdisk /dev/sdb
sudo mkfs.ext4 /dev/sdb1
sudo mdadm --add /dev/md0 /dev/sdb1

Itt is megvártam a szinkronizálást, majd megnöveltem az MD0 méretét:

sudo mdadm --grow /dev/md0 --size=max

Ezek után újraindítottam a gépet egy Knoppix live CD-ről és elindítottam az mdadm programot. Leelleőriztem az MD0 partíciót és megnöveltem rajta a fájlrendszert, aztán újra leellenőriztem:

e2fsck -f /dev/md0
resize2fs /dev/md0
e2fsck -f /dev/md0

És újraindítva a gépet ott is volt a 40GB méretű MD0 partícióm.

A partíció szerkezet a művelet után:

Disk /dev/sda: 500.1 GB


MD0 /dev/sda1 Linux raid automatikus felismeréssel 40GB
MD1 /dev/sda3 Linux raid automatikus felismeréssel
    /dev/sda4 Kiterjesztett
MD2 /dev/sda5 Linux raid automatikus felismeréssel
MD3 /dev/sda6 Linux raid automatikus felismeréssel

Disk /dev/sdb: 500.1 GB


MD0 /dev/sdb1 Linux raid automatikus felismeréssel 40GB
MD1 /dev/sdb3 Linux raid automatikus felismeréssel
    /dev/sdb4 Kiterjesztett
MD2 /dev/sdb5 Linux raid automatikus felismeréssel
MD3 /dev/sdb6 Linux raid automatikus felismeréssel