fredag, augusti 01, 2008

Dataflytt i FreeBSD

Har ju haft problem ett tag med min systemdisk på filservern hemma.
Nu har jag äntligen lyckats flytta över all data från den till min nya tysta fina 2.5" disk.. Men det tog några försök och systempaniker.

I stort använde jag mig av den här guiden, men här kommer mina anteckningar.(jag skriver det mesta här ur minnet, så om något är fel eller konstigt ber jag om ursäkt på förhand..)

Först hakade jag såklart på disken.

Efter det så bootade jag om servern och avbröt uppstarten i loadermenyn, valde alternativ 6 "Drop to console".
Eftersom jag haft väldiga problem med dmafel på min gamla disk så fick jag sätta

set hw.ata.ata_dma=0

innan jag slutligen bootade upp i single user mode.
boot -s


Här får man välja sitt shell, /bin/sh funkar gott för mig.
Mountar upp mina gamla partitioner med enbart läsrättigheter.
mount -r /usr
mount -r /var
mount -r /tmp

(/ är ju redan monterad..)
Att jag monterar mina filsystem utan skrivrättigheter är för att dump som jag ska köra sen inte ska klaga.

Slår på swap
swapon -a


Stänga av uppdateringen av CMOSklockan (vet inte om det verkligen är nödvändigt..)
adjkerntz -i


Sedan gick jag in i sysinstall och valde configure -> fdisk och formaterade den nya disken. Efter det så gick jag in i label(raden under fdisk, fortfarande under alternativet configure..) för att skapa mina slices. Där körde jag på auto defaults, det duger gott för mig och eftersom denna disken är större än den gamla blev alla slicarna luftigare ändå.. Innan jag sparade mina ändringar här så plockade jag bort mountpunkterna på slicarna och antecknade dom för senare referens. Nu skriver vi ändringarna med W och avslutar.
Innan jag avslutar sysinstall väljer jag keymap och swedish iso.(det blir så jobbigt att köra dump annars insåg jag när jag skulle göra det för sjuttonde gången samma dag..)

Sen skapar jag mina backupkataloger där jag ska montera min nya disk
mkdir /root/mnt/root /root/mnt/var /root/mnt/tmp /root/mnt/usr

(jag valde att kopiera datat från min tmppartition med, men det kan man ju hoppa över om man vill.)

Disklabel på nya disken för att den ska få bootstrapkoden och innehållet i /boot/boot.
disklabel -B -w ad2s1 auto


Eftersom jag skapat mina slices i sysinstall kan jag redan nu montera dem. Men på grund av att jag hade sånt strul med systempaniker och så vidare slutade det med att jag fick köra newfs emellanåt.
newfs /dev/ad2s1a
(för min nya / slice..)

Nu är det dags att mounta den nya disken.
mount /dev/ad2s1a /root/mnt/root
mount /dev/ad2s1e /root/mnt/var
mount /dev/ad2s1d /root/mnt/tmp
mount /dev/ad2s1f /root/mnt/usr


Sen är det dags för dump att göra sitt
(dump -0f - /) | ( cd /root/mnt/root; restore -rf - )
(dump -0f - /var) | ( cd /root/mnt/var; restore -rf - )
(dump -0f - /tmp) | ( cd /root/mnt/tmp; restore -rf - )
(dump -0f - /usr) | ( cd /root/mnt/usr; restore -rf - )

Det var på min usr slice som jag hade lejonparten av mina trasiga sektorer, och den är ju även klart störst så tiden för den dumpen blev duktigt längre än alla de andra ihop.

Nu kan man mounta av de nya partitionerna.
umount /root/mnt/root
umount /root/mnt/var
umount /root/mnt/tmp
umount /root/mnt/usr


Sen slår vi på soft updates på dem.

tunefs -n enable /dev/ad2s1a
tunefs -n enable /dev/ad2s1d
tunefs -n enable /dev/ad2s1e
tunefs -n enable /dev/ad2s1f


Nu är det bara att plocka bort den gamla disken och dit med den nya.

Idag känner jag mig så våghalsig att jag ska riskera en binäruppgradering från 6.2 till 7.0 på den nya disken.
FreeBSD 6.2-Release har ju under tiden min server var nere slutat supportas.. (20080701)

En liten fotnot:
Den ena gången jag gjorde min dump och bootade om så hade inte fstab rett ut det med den nya disken riktigt, så jag fick boota på en gammal installationscd (FreeBSD) och gå in i sysinstall där och sätta mina mountpunkter i labelverktyget. Sen lirade allt.
Vet inte om det var jag som missade nåt eller om jag helt enkelt bara tänkt fel i mitt sätt att göra, men det blev bara så en gång..

Andra bloggar om ,

Inga kommentarer: