Aby sa partície netlačili...

11.08.2005 02:41 | Články | Marián Ščerbák

Ste spokojní s rozdelením vášho disku? Nepotrebujete nejakú partíciu zväčšiť, alebo naopak zmenšiť? Skopírovať dáta na nový či väčší disk? Uvažujete o kúpe programu na tento účel? Možno sa ešte predtým rozhodnete vyskúšať tie, ktoré sú opísané v tomto článku.

Najprv však jedno upozornenie: autor článku nezodpovedá za akúkoľvek škodu spôsobenú používaním programov, resp. postupov v ňom zverejnených. Využívate ich na vlastnú zodpovednosť.

Výber programu

Aj napriek dôkladne premyslenému rozdeleniu disku počas inštalácie OS sa môžu zmeniť naše požiadavky naň a náhle môžeme stáť pred problémom: preinštalovať, alebo sa oddiely dajú upraviť bez straty dát? Rád by som písal o programe, ktorý bol 101% náhradou za Partition Magic. Žiaľ,  hoci GNU Parted je najhorúcejší kandidát (je síce postavený na úplne iných základoch a v niektorých veciach je lepší), on a jeho klony nie sú ešte úplne bezproblémové. Ale nie len ich vinou ... Partition logic vyzerá tiež pomerne nádejne. Ostatné, ktoré spomenieme, sú typické "linuxové"- jednoúčelové nástroje, doplňujúce to, s čím by tie spomenuté mohli mať problémy.

Partition logic

Je to relatívne nový program, vychádzajúci z operačného systému zvaného Visopsys (http://visopsys.org). Program sa dá stiahnuť ako iso obraz, ktorý treba vypáliť/skopírovať  na CD/disketu  a nabootovať počítač z neho. Jednoduchý program. Nedokáže však zatiaľ meniť veľkosť partícií. Vhodný môže byť pri kopírovaní dát na iný harddisk. Dokáže vytvárať, rušiť a formátovať oddiely. Inak ho však pravdepodobne využijete iba na jednoduchšiu manipuláciu s oddielmi. Nevie toho zatiaľ dosť: napr. nepracuje s SCSI diskami. Práca s ním je však jednoduchá a ak nemáte sériovú myšku (nie je podporovaná) tak iba klikáte :-) Partition logic má ambície stať sa free alternatívou Partion Magicu. Už aby to bolo :-) Potenciál na to má. 

partlogic

GNU Parted

Tento program je naopak stálou súčasťou linuxových distribúcií. Program je založený na knižnici libparted. Vychádza z neho veľa grafických klonov: qtparted, gparted atď. Ale čiastočne aj program, známy každému, kto kedy inštaloval Mandrake/Mandrivu- diskdrake :-)

Čo dokáže GNU Parted

Vie naozaj veľa. Meniť veľkosť, vytvárať, rušiť, kopírovať či presúvať partície. Dokonca by mal byť možný aj návrat- oprava zrušenej partície. To som však radšej neskúšal :-) Na domovskej stránke nájdeme tabuľku programom podporovaných činností a filesystémov. A napokon treba spomenúť plnú podporu pre HW Raid a neúplnú pre LVM a softwérový RAID.

Problémy

Nič však nie je dokonalé a tak existujú (minimálne v starších verziách) aj problémy :-( Týkajú sa najmä (ako naschvál) práve dosť rozšírených FS- ext2/ext3. Ide o pomerne rozšírenú hlášku:

(parted) No Implementation: This ext2 filesystem has a rather strange layout! Please use dumpe2fs ...

Spôsobuje ju (väčšinou) zapnutá voľba sparse_superblock pri vytváraní FS. Táto je však bohužiaľ väčšinou pri ich vytváraní zapnutá defaultne. Dá sa síce vypnúť aj v už vytvorenom FS (napríklad) príkazom:

tune2fs -s 0 /dev/hdaX

(zapneme ju rovnako, akurát 0 nahradíme 1). Ak však oddiel nie je prázdny a potom spustíme (resp. musíme spustiť) príkaz

e2fsck -y /dev/hdaX

kontrola disku skončí nekorektne (ak vôbec). Parted s takýmto oddielom odmietne pracovať. Na prázdnom oddieli však kontrola pravdepodobne prebehne v poriadku. Ideálne by teda bolo vytvoriť na oddieli FS štýlom: mke2fs -O none ... čím sa však bude reálne pred prvou inštaláciou OS zaoberať pravdepodobne málokto :-) Ako náhradu Parted v týchto prípadoch možno vyskúšať použitie programov typu: ext2resize, alebo resize2fs. Jedno z ďalších riešení, ktoré možno použiť je: najprv vytvoriť prázdny, dočasný oddiel, na ňom vytvoriť FS ext2/3 (bez sparse_superblock) a skopírovať naň dáta niektorým zo štandartných nástrojov, resp. príkazov OS. Samozrejme, spôsobov, ako tento bug obísť je viac. Ak to bude pre vás aktuálne, nájdete ich v rôznych konferenciách a fórach.

V závislosti od oddielov, ktoré chceme meniť (ako uvidíme ďalej), je potrebné uvažovať o alternatívnom spustení GNU Parted: z diskety, alebo najvýhodnejšie (uvidíme prečo) z live- distribúcie. Tieto distribúcie sa označujú aj ako "rescue", záchranné. Osobne mám dobré 2 ročné skúsenosti s LNX-BBC. Obsahuje dostatok nástrojov na záchranu aj prerozdelenie diskov. Použiť môžete aj populárny Knoppix, jeho QtParted a GNU Parted však neobsahuje knižnice na prácu so všetkými možnými filesystémami. Na distrowatch.cz ich nájdete určite cez desiatku a ľahko si tam vyberiete nejakú vám vyhovujúcu.

Prečo Parted niekedy treba spustiť z CD alebo diskety? Pretože s ním nemôžeme pracovať s namountovanými (pripojenými) oddielmi. Ak máme na disku viac distribúcií, môžeme pracovať v tých, ktorým oddiely meniť nebudeme. Live- distribúcie sú výhodné aj vtedy, ak chceme zálohovať dáta. Ďalší dôvod spomenieme neskôr. Začneme tým najdôležitejším: zálohovaním.

Záloha dát

Prvým, nikdy nie dostatočne zdôrazneným krokom, je odzálohovanie si dát z disku. Bez dôkladnej zálohy riskujete ich stratu! Zmazanie, zrušenie (rm), resp. vytvorenie FS (formátovanie) oddielu znamená, že na tejto partícii prídeme o všetky dáta! Na tvorbu zálohy môžete použiť veľké množstvo programov, od tar-u, cez dar, alebo partimage. Pri ich výbere sa rozhodujte podľa osobných preferencií a skúseností (namiesto dar použijeme napr. kdar).  Použiť môžeme i program partimage, rovnako často prítomný na záchranných CD.

Taktika

Teraz je vhodné naplánovať si rozdelenie disku. Najlepšie je presne určiť plánované rozdelenie disku (v MB) a zvoliť si spôsob zmien: presun, kopírovanie/zmazanie, resize atď. Môžeme si stanoviť aj alternatívny postup, kvôli obídeniu prípadných problémov.

Inštalácia parted

Toto by mala byť bezproblémová záležitosť. Postupujeme štandardne ako pri iných programoch. Snáď bude potrebné doplniť niektoré knižnice na prácu s FS, ktoré nemáme nainštalované (a máme ich zapnuté v jadre). Na to vás však GNU Parted upozorní. Ak ho chceme použiť z diskety, treba si stiahnuť 2 súbory z adresy ftp://ftp.gnu.org/gnu/parted/bootdisk/: partboot-x.x.x.img a partroot-x.x.x.gz Prvý skopírujeme na naformátovanú disketu (ext2) príkazom dd:

dd if=partboot.img of=/dev/fd0 bs=1440k

druhý tiež na rovnako naformátovanú disketu. Stačí cp: cp partroot-x.x.x.gz /dev/floppy.

Potom si už iba v BIOSe/ lile nastavíme bootovanie z diskety, reštartujeme počítač a po výzve boot: napíšeme rama, čím skopírujeme program aj s mini systémom do operačnej pamäte počítača. Po výzve vložíme druhú disketu a po jej načítaní môžeme spustiť program.

Parted

Najprv sa presvedčíme, či nemáme namountované oddiely, s ktorými budeme pracovať (v konzole cat /etc/mtab). Aj tak by Parted odmietol pracovať :-) Parted spustíme v interaktívnom režime príkazom parted a ako parameter mu dáme harddisk, ktorý chceme upravovať: /dev/hda, /dev/hdb ... (Príkazy môžeme vykonávať aj v jednoduchom móde: parted /dev/hda print) Príkaz print nám ukáže, ako máme disk rozdelený. Tieto údaje budeme neskôr potrebovať, takže nezaškodí si ich zobraziť po každej zmene:

Print

Rozdelenie harddisku tu máme ako na dlani. Minor je číslo partície (oddielu), Start a End ukazuje polohu začiatku a konca partície (v MB), Type je typ (primárna, logická, extendend), nasleduje typ FS. Skontrolujeme oddiel č.6 (čo je vlastne /dev/hda6): príkazom check a po výzve zadáme 6

(parted) check Partition number? 6

V prípade, že dostaneme hlásenie: No Implementation ... , budeme musieť použiť alternatívne spôsoby práce (opísané v odstavci Problémy). Ak sa nezobrazí iná chyba (error), môžeme pokračovať. Význam, resp. riešenie chýb nájdeme v bug-liste GNU Parted. Skvelo napísaný manuál na adrese: http://www.gnu.org/software/parted/manual/html_mono/parted.html nám poskytne dostatok informácií ako začať (v angličtine).

Možno však bude dobré, ak si pripomenieme niekoľko základných vecí:

  • je samozrejmé, že pracujeme ako root
  • pri niektorých FS (napr. ext2/3) môžeme meniť veľkosť oddielu  iba smerom "doprava"; začiatok partície musí ostať nezmenený (napríklad oddiel 8 nemôžeme zväčšiť na pozíciu menšiu ako 33957 MB; ale doprava, ak je tam voľné miesto, môžeme)
  • pri kopírovaní by mala byť cieľová partícia rovnako veľká, alebo väčšia ako zdrojová
  • pri kopírovaní sa zmaže obsah cieľovej partície
  • pozor na uvádzané polohy oddielov, nesmú sa prekrývať (Ak jeden končí na 33405,1, druhý musí začať na 33405,2)
  • po každej akcii je vhodné sa presvedčiť o jej výsledku príkazom print, aby sme prípadne mohli obnoviť dáta príkazom rescue
  • prácu v interaktívnom režime ukončíme príkazom quit

Niekoľko príkladov:

cp /dev/hda 2 3
#skopíruje oddiel 2 do 3
rm 5
# zmaže partíciu 5
# Na uvoľnenom mieste vytvoríme partíciu aj s filesystémom:
mkpartfs logical ext2 8001,154 33204,660
#vytvoril sa logický oddiel ext2 so začiatkom na uvedených polohách disku
resize 5 8001,154 33100
# zmenší oddiel sprava na hodnotu 33100  

Ešte si spomenieme číslovanie oddielov. Ak vytvárame nový oddiel, dostane najnižšie možné poradové číslo (v prvom príklade by to bola 11, teda /dev/hda11). Ak oddiel zrušíme, všetky poradové čísla vyššie ako bolo to jeho sa o jedno zmenšia. Teda: rm 6 spôsobí, že partícia 7 bude premenovaná na 6, 8 bude 7 atď. Teraz sa ukazuje ďalšia podstatná výhoda použitia Live- CD. Po skončení práce s Parted totiž môžeme ihneď pohodlne upraviť potrebné súbory.

QTParted

"Klikania chtivých" užívateľov, ktorým sa uvedený spôsob práce zdá "nepohodlný", môžem odporúčať napríklad qtparted. Robí v podstate to isté, ibaže pomocou klikania. I keď program vychádza z GNU Parted, včlenením ďalších programov dosiahol pomerne zaujímavé výsledky. Od verzie 0.1.6 program vie napr. meniť veľkosť NTFS oddielu (to Parted sám nevie). Zoznam podporovaných filesystémov a akcií nájdeme opäť na domovskej stránke projektu: http://qtparted.sourceforge.net.

QTparted    O koľko ju zväčšíme?

Na záver si ukážeme jednoduché aplikovanie GNU Parted v praxi. Máme harddisk /dev/hda s Win* a Linuxom (je vykonštruovaný pre lepšie znázornenie príkazov):

(parted) print
Disk geometry for /dev/hda: 0.000-76000,001 megabytes
Disk label type: msdos
Minor   Start    End 	 Type 	Filesystem 	Flags
1 	0,031 	8000,000 primary fat32 		boot
2   8000,001   76000,000 extended
5   8000,002   33200,000 logical fat32 
6   33200,001  37000,000 logical ext2
7   37000,001  37600,000 logical linux-swap
8   34000,001  76000,000 logical ext2  
  

Predpokladám, že veľa nových používateľov Linuxu to má rozdelené podobne (1 = C, 5 = D, 6 = / (root), 7 = swap, 8 = /home); aj ja som mal :-) Budeme chcieť zmenšiť oddiel ("D" vo win*) /dev/hda5 o 10 GB, ktoré potom pridáme partícii / (root).

(parted) resize 5 8000,002 23200,000 # zmenšenie FAT oddielu o 10GB
(parted) print # skontrolujeme správnosť
(parted) mkpartfs logical ext2 23200,001 33200,000 
# na voľnom mieste vytvoríme logickú partíciu s ext2 FS, bude mať číslo 9, teda /dev/hda9 s veľkosťou cca 10GB. 
(parted) print # kontrola
(parted) cp 6 9 # skopírujeme /dev/hda6 na /dev/hda9
# ak sa nás týkajú problémy, skopírujeme dáta inak- partimage, resp. zlatý mc :-)
(parted) rm 6 # práve sme zrušili / oddiel, ak niečo nevyšlo, vyťahujeme inštalačné CD ;-) ale predtým ešte vyskúšame 
# príkaz:(parted) rescue 33200,001 37000,000 
(parted) print # skontrolujeme, zapíšeme si čísla partícií
(parted) resize 8 23200,001 37000,000 
# napokon zväčšíme novovytvorený /dev/hda8  až po swap a opäť skontrolujeme 
(parted) quit # a je to!  
  

Takto jednoducho sa s ním pracuje :-) Teraz si otvoríme /etc/lilo.conf a /etc/fstab  a opravíme /dev/hda6 za /dev/hda8, to isté v súbore /etc/fstab, tam upravíme aj zvyšné partície. V Grube to urobíme podobne (hd0,5 -> hd0,7). Lilo ešte musíme reštartovať príkazom /sbin/lilo. Ak je všetko v poriadku, skončili sme (tentoraz ;).

Prípadné problémy s "prestavbou" rôznych filesystémov môžeme vyriešiť aj špecializovanými utilitkami. fatresize, ntfsresize, ext2resize alebo resize2fs ktoré sú na to priam ako stvorené. Ak sa to aj tak nepodarí, môžete začať "sporiť na Partition Magic" :-) Pochybujem však, že sa to nepodarí opísanými prostriedkami. Chce to iba dobrú zálohu, opatrnosť, prečítať si tutoriál, dobrý plán a v neposlednom rade GNU Parted, resp. nejaký iný *parted :-)

Gparted
    • LVM 11.08.2005 | 19:37
      stage   Návštevník
      Ja som sa radšej zameral na LVM, ktoré ponúka väčšinu spomínaného a niečo navyše. Dalej tu: http://www.tldp.org/HOWTO/LVM-HOWTO/ Stage
      • Re: LVM 12.08.2005 | 01:06
        Marián Ščerbák   Návštevník
        Vďaka za tip. Vyzerá zaujímavo :-)
    • a to co? 12.08.2005 | 00:05
      andrew   Návštevník
      a to sa bezne kopiruju clanky z linuxsoft.cz?
      • Re: a to co? 12.08.2005 | 00:15
        Avatar Ondrej Hučko Kubuntu  Používateľ
        Máme s nimi určitú dohodu, tu si prečítajte viac http://www.linuxos.sk/index2.php?id=autori
    • Prechod 10.03.2006 | 15:16
      Asi   Návštevník
      No to je pekne ale neexistuje dačo čo by mi umožnilo konvertovař Ntfs na Ext3 (pripojiť si ju viem aj ručne. To by my umožnilo zachovať dáta bez potreby záložného disku.
      • Re: Prechod 21.03.2006 | 23:15
        Avatar Marián Ščerbák   Používateľ
        O nejakom nástroji na spomínanú konverziu momentálne neviem, (situácia s NTFS sa síce dosť zlepšila, ale neviem, či až tak veľmi). V každom prípade by som sa však na takúto (alebo inú) bez dôkladnej zálohy neodhodlal.