Jak na to?

Howto: Jak přenést systém na jiný disk?

Přenesení systému na jiný disk, může být provodeno několikama způsoby, jak za chodu systému (neúplného chodu systému - kvůli konzistenci dat), nebo za pomoci jiného systému (například bootnotí z knoppixu)

Stejný typ disku

Pokud přenáším systém na disk stejného typu (stejná velikost, stejný počet hlav, atd..) pak je velmi výhodné využít přikazu dd
- no to však doporučuji nabootovat z knopixu apod. Prostě aby systém který přenáším nebyl v chodu.

Přenesení systémů poté provedu takto

dd if=/dev/hda of=/dev/hdb bs=16MB
Tím přenesu systém z disku hda(primary master) na hdb(primary slave), pak už jenom stačí vyndat disk hda, na hdb nastavit jumpery aby byl master (hdb->hba) a startuji systém. Mám systém na jiném disku.

Tohoto postupu se s výhodou používá pro rychlou instalaci apod.. neboď například kopírování 36GB SCSI disku zabere 10-15minut :)

Přenesení systému na větší, tedy disk jiného typu

V tomto případě již nemuho použít kopírování disku byte po bytu (dd) - ale na druhou stranu, mohu změnit druh filesystému apod... Jedinou podmínku je že jádro (to většinou při změně disku neměním, to je moc změn najednou) musí dané souborové systémy podporovat. Tento přenos mohu provést i za jakéhosi chodu systému (runlevel 1) a zachovém tím konzistenci dat, samozřejmě je to možné i pomocí knoppixu apod.. :)

V počítači mám disk (hda=primary master) na kterém mám systém a je rozdělen

hda1 	ext2 		20MB		/boot
hda2	swap		500MB		
hda3	ext2		4000MB		/
hda4	reiserfs	4000MB		/home
a to chci převést na nový disk. Samozřejmě budu měnit i rozdějení jednotlivých částí disku, neboť původní rozdělení je VELMI špatné. V systémů mám ještě disky hdc a hdd (ty jsou přimountované v /mnt/storager0 a /mnt/storager1)

Nejdříve si rozdělím a naformátuji nový disk (příkazy cfdisk, a mkfs.xfs nebo mkfs.ext3, mkfs.ext2) Tady je výsledek

hdb1	ext2		20MB		(bude /boot)
hdb2	swap		1000MB	
hdb3	ext3		5000MB	(bude /)
hdb5	xfs		1500MB	(bude /var)
hdb6	xfs		1500MB	(bude /tmp)
hdb7	xfs		31000MB	(bude /home)
A naformatuji si nové partisny
mkfs.ext2 /dev/hdb1
mkfs.ext3 /dev/hdb3
mkfs.xfs /dev/hdb5
mkfs.xfs /dev/hdb6
mkfs.xfs /dev/hdb7
Teď jsem skoro připraven na přesun systému, ale ještě si vytvořím adresář napríklad
mkdir /newsys
a připojím do něj disk, konkrétně partisnu které bude jako root a poté další partišny, dle zamýšlené struktury.
mount /dev/hdb3 /newsys
mkdir /newsys/boot
mount /dev/hdb1 /newsys/boot
mkdir /newsys/home
mount /dev/hdb7 /newsys/home
mkdir /newsys/var
mount /dev/hdb5 /newsys/var
mkdir /newsys/tmp
#nezapomenu zmenit prava na adresar /newsys/tmp - jinak to muze delat problem
chmod 1777 /newsys/tmp
mount /dev/hdb6 /newsys/tmp
Tím mám v /newsys připravenou strukturu pro nový systém, teď by čistě teoreticky stačilo vzít celý / (kromě /newsys) a nakopírovat ho do /newsys --> což sice lze ale poškodili bychom si práva atd.. použije však příkaz tar, který nám zde velmi pomůže (zvláště linuxová verze, které umí vynechat adresář)
# prejdeme do runlevelu 1
init 1
# odpojim disky ktere nechci prenaset
umount /mnt/storager0
umount /mnt/storager1
# a zapocnu s prekopirovanim
cd /
tar --exclude "/newsys" -cvvf - ./ | (cd /newsys ; tar -xvvf -)
Celá finta spočívá v příkazu tar, který nám spojí obsah aktuálního adresáře (kořene) kromě adresáře newsys, a tento mega dlouhý soubor posílá na standartní výstup, kde se přejde do adresáře /newsys a tam se to zase pomocí taru rozdělí do svého původního stavu (jenomže v jiném adresáři :) -- tímto přenesu systém na nový disk.

Tím ale nekončím, budu muset být schopen ještě nabootovat, takže poupravím si /newsys/etc/fstab tak aby odpovídal mému zamýšlenému rozdělení a pak upravím /newsys/etc/lilo.conf (změním boot=/dev/hda na boot=/dev/hdb) tím si zajistím že se přepíše MBR na novém disku, (root=/dev/hda3 ponechám neboť po vypnutí systému disk primary master vyndám a disk primary slave předělám na primary master (změna jumperu). Jestli mám všechno upraveno, přejdu k zapsání lila.

chroot /newsys
lilo
exit
Co jsem tím provedl? Chroot mi udělal "novy systém kde se adresář /newsys" tvářil jako "/" a pak jsem zapsal lilo na nový disk :). Po příkazu chroot se také můžeme podívat jestli jsme opravdu všechno zkopírovali.

Teď už nezbývá než se pomodlit, všechno ještě jednou zkontrolovat a

halt
# vyndat starý disk, nový předělat na master
# zapnout počítač
# pracovat a radovat se :)
Ještě závěrem pro korektnost přepsat v /etc/lilo parametr (boot=/dev/hdb na boot=/dev/hda) abychom se pak nedivili :)

Závěr

Použití tohoto postupu doporučuji, zejména pokuď to děláte poprvé vyzkoušet na nějaké testovací mašině.. - abyste si ujasnili co co dělá, taky se mi párkrát stalo, když jsem začínal, že jsem na něco zapoměl, a systém nanaběhl. Pak nezbývá nic víc než vzít knoppix, nebo jiné live-cd, případně rescue-cd a chybu opravit a znovu nastartovat systém ;)

Nadruhou stranu, pokuď vše uděláte dobře, dá se to zvládnout za hoďku, dvě, tak výsledek je super ;)





Zpatky na výběr témat -pro potěchu a vzdělání národa píše: MaKr(zavináč)slanyfree.net

SlanyFREE.net je naše síť a ne vždycky všechno nej je všude vidět... Jen touha za poznáním a zkoumáním tě posune dál a pomůže ti zlepšovat. Vše. SlanyFREE.net