FREEBSD RAID MIRROR MINIHOWTO ============================= ultimo aggiornamento: 12 Gen 2005 http://poetry.freaknet.org/poetryminihowto/freebsd_raid_mirror_howto.txt keywords: freebsd, vinum, raid 1, mirror, 5.3, 5.2.1 MAGGIORI INFO ============= capitolo 13 dell'handbook di freebsd su vinum: http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/vinum-vinum.html bootstraping vinum by Robert A. Van Valzah http://www.freebsd.org/doc/en_US.ISO8859-1/articles/vinum/index.html PERCHE' HO DECISO DI INSTALLARE IL RAID SUL MIO SERVER ====================================================== per alcuni 2 semplici motivi: 1) i dischi si rompono + spesso di quanto pensi; 2) ho la paranoia e voglio stare tranquillo; PREMESSA: LA CAZZO DI CORRISPONDENZA BLOCCHI <-> MEGABYTES ========================================================== nell mia cazzo di esperienza ho avuto a che fare coi fottuti blocchi e coi calcoli della minchia. questo perche' freebsd usa disklabel o bsdlabel per partizionare i dischi, e questi ultimi non usano come unita' di misura i bytes, bensi' i blocchi, vediamo di capire meglio. "un blocco e' 512 bytes." non dovreste sapere altro. ma siccome siete pigri e lo so continuo... quindi se tu hai necessita' di convertire un numero di blocchi in megabytes potresti fare questo semplice calcolo. ad es. se vuoi vedere a quanti megabytes corrispondono 4096 blocchi si fa' questo: 4096 blocchi * 512 bytes = 2097152 bytes / 1024 = 2048 kbytes / 1024 = 2MB e' tutto. e ora ne sapete di + su blocchi e megabytes. concludo mandando a fanculo i produttori di dischi, i coder di bsdlabel/disklabel e chi ci si vuole mettere ci si mette. non sono certo io ad impedirglielo ahaha SITUAZIONE DISCHI ================= 3 dischi ide 160 GB cosi' configurati: ad0 primary master (il disco raid 1 primario) ad2 secondary master (il disco raid 1 secondario) e' meglio tenere i dischi raid su canali ide separati, settati come master. ad1 disco per il backup di tutto il fs montato su /backup INSTALLARE FREEBSD ================== - BOOT Partire con il vostro CD di boot, per questa installazione ho utilizzato freebsd 5.2.1. 1 - scegliete "1" dal boot menu (Boot FreeBSD [default]) 2 - selezionare la installazione "standard" dal menu' 3 - selezione ad0. 4 - premere il tasto 'A' della tastiera per creare una slice che utilizza tutto il disco. il concetto di slice approfonditelo nell'handbook se volete. 5 - premere 'Q'. 6 - selezionare "BootMgr" dal menu' per permettere di fare il boot da questo disco 7 - selezionare ad2 e fare lo stesso dal punto 4 al 6. 8 - selezionare il disco ad1 e fare *SOLO* il punto 4 e 5. Alla richiesta del BootMgr selezionare None. Non ci importa bootare dal disco di backup - PARTIZIONAMENTO DISCHI adesso ci troviamo dentro disklabel. create le partizioni come di vostro gradimento sul disco ad0. nella mia configurazione io ho creato le seguenti partizioni. device mount size ad0s1b swap 512MB ad0s1a / 1024MB ad0s1d /tmp 512MB ad0s1e /var 5000MB (non 5GB ma 5000MB!!! E'diverso!) ad0s1f /usr 145GB (quello che rimane) ATTENZIONE!!!! fate *PER PRIMA* la partizione di swap! LO CAPIRETE DOPO! ADESSO FATELO MUTI. per fare le partizioni posizionatevi sul disco ad0 (in alto nella interfaccia), di solito in blu, premete il tasto C e leggete lo schermo! quando avete finito per il disco ad0, fate *PARTIZIONI UGUALI* per ad2. UGUALI! come mount point usate /root2 /tmp2 /var2 /usr2. questa merda vuole per forza i mount point e io gliel'ho dati. tanto dopo li elimineremo sia da fstab che dal disco. quando avete finito col disco ad2, fate una unica partizione per ad1 (io ci faccio i backup e la monto dentro /backup) quando avete finito premete 'Q'. INSTALLAZIONE DEL SISTEMA BASE ============================== a quel punto il sistema vi presenta una lista di distribuzioni da installare, io scelgo sempre quella minimal e da li inizio a personalizzare. scegliete il media dal quale installare, io di solito scelgo cd/dvd e poi dopo al limite mi aggiorno via cvsup. confermate alla finestra di dialogo. il sistema ora formattera' i file system ed estrarra' il sistema base. Dopo la estrazione il sistema vi fara' alcune domande tipo configurazione della rete e altro. voi fate quello che vi pare. io dico A TUTTO DI NO E FACCIO DOPO. al termine delle domande selezinate Exit Install. Il vostro sistema reboottera'. CONFIGURAZIONE DEL LOADER ========================= Dopo che il vostro sistema ha fatto il boot selezionare 'F1' dal BootMgr and poi selezionare il numero '4' (Boot FreeBSD in single user mode). Alla richiesta della shell accollarsi /bin/sh premendo 'Invio'. avrete adesso una shell di root in singlu user mode. rimontiamo il file system / in rw. # mount -u / vinum non e' generalmente disponibile al boot, per far si che lo sia si puo' compilare vinum staticamente nel kernel. ma non e' tanto bello imho ed e' per questo che si puo' dire al loader di caricare il modulo di vinum al boot *PRIMA* di eseguire il kernel, toccando il file /boo/loader.conf e mettendo queste righe: vinum_load="YES" vinum.autostart="YES" probabilmente avete bisogno di dare un mount -a per far vedere vi CONFIGURARE IL DISCO AD0S1 CON VINUM ==================================== - UN RITOCCATA ALLE PARTIZIONI Utilizziamo bsdlabel (una versione nuova di disklabel) per modificare la tabella delle partizioni del disco ad0s1. # bsdlabel -e ad0s1 NOTA: bsdlabel chiama vi. se c'e' qualche errore quasi sicuramente occorrera' dare un mount -a per montare tutti i file sistem su fstab. FATTELO E MUTI. avrete una situazione di questo tipo: #/dev/ad0s1: 8 partitions: # size offset fstype [snip] a: 2097152 1048576 4.2BSD [snip] b: 1048576 0 swap c: 320159322 0 unused [snip] # "raw" part, don't edit d: 1048576 3145728 4.2BSD [snip] e: 10240000 4194304 4.2BSD [snip] f: 305725018 1443404 4.2BSD [snip] una cosa che alcuni fanno e' quella di togliere 281 blocchi alla dimensione della partizione di swap per evitare che, in casi di un overlap derivante da una partizione di swap PIENA, essa possa riversarsi sulla partizione successiva... cioe' quella di root. basta cambiara la riga cosi': b: 1048295 281 swap abbiamo decrementato il size di 281 e spostato l'offset di 281 adesso bisogna creare la partizione per vinum aggiungendo questa riga: h: 320159306 16 vinum notate le dimensioni e l'offset. abbiamo bisogno di far partire la partizione vinum all'offset 16 per evitare di far finire vinum nell'mbr. di conseguenza anche la dimensione passa a 320159322 (quella di c:) - 16 = 320159306 - IL FILE DI CONFIGURAZIONE PER IL DISCO AD0S1 creare il file /etc/vinum.conf cosi': drive DiscoUno ad0s1h volume root plex org concat sd len 2097152s driveoffset 1048560s drive DiscoUno volume swap plex org concat sd len 1048295s driveoffset 265s drive DiscoUno volume tmp plex org concat sd len 1048576s driveoffset 3145712s drive DiscoUno volume var plex org concat sd len 10240000s driveoffset 4194288s drive DiscoUno volume usr plex org concat sd len 305725018s driveoffset 14434288s drive DiscoUno a quel punto bastera' lanciare il comando vinum e poi lanciare il sottocomando create -f /etc/vinum.conf. # vinum vinum -> create -f /etc/vinum.conf 1 drives: D DiscoUno State: up /dev/ad0s1h A: 0/156327 MB (0%) 5 volumes: V root State: up Plexes: 1 Size: 1024 MB V swap State: up Plexes: 1 Size: 511 MB V tmp State: up Plexes: 1 Size: 512 MB V var State: up Plexes: 1 Size: 5000 MB V usr State: up Plexes: 1 Size: 145 GB 5 plexes: P root.p0 C State: up Subdisks: 1 Size: 1024 MB P swap.p0 C State: up Subdisks: 1 Size: 511 MB P tmp.p0 C State: up Subdisks: 1 Size: 512 MB P var.p0 C State: up Subdisks: 1 Size: 5000 MB P usr.p0 C State: up Subdisks: 1 Size: 145 GB 5 subdisks: S root.p0.s0 State: up D: DiscoUno Size: 1024 MB S swap.p0.s0 State: up D: DiscoUno Size: 511 MB S tmp.p0.s0 State: up D: DiscoUno Size: 512 MB S var.p0.s0 State: up D: DiscoUno Size: 5000 MB S usr.p0.s0 State: up D: DiscoUno Size: 145 GB se c'e' qualche errore uscite da vinum con ^D e controllate il file vinum.conf avete sicuramente dimenticato o sbagliato qualcosa. lanciate il comando 'vinum resetconfig' e ricreate il tutto col comando create. - FSCK AI NUOVI DEVICE VINUM a questo punto vinum dovrebbe aver creato nuovi device in /dev/vinum. per vedere che tutto e' corretto lanciamo dei fsck. # fsck -n -t ufs /dev/vinum/root e facciamo lo stesso con le altre (tmp, var, usr). se ci sono degli errori e' perche' probabilmente abbiamo sbagliato gli offset o i size. - MODIFICHE A FSTAB modifichiamo fstab per riflettere le nuove modifiche prima era cosi': # Device Mountpoint FStype Options Dump Pass# /dev/ad0s1b none swap sw 0 0 /dev/ad2s1b none swap sw 0 0 /dev/ad0s1a / ufs rw 1 1 /dev/ad1s1d /backup ufs rw 2 2 /dev/ad2s1d /root2 ufs rw 2 2 /dev/ad0s1d /tmp ufs rw 2 2 /dev/ad2s1e /tmp2 ufs rw 2 2 /dev/ad0s1f /usr ufs rw 2 2 /dev/ad2s1g /usr2 ufs rw 2 2 /dev/ad0s1e /var ufs rw 2 2 /dev/ad2s1f /var2 ufs rw 2 2 /dev/acd0 /cdrom cd9660 ro,noauto 0 0 dopo sara' cosi': /dev/vinum/swap none swap sw 0 0 /dev/vinum/root / ufs rw 1 1 /dev/vinum/tmp /tmp ufs rw 2 2 /dev/vinum/usr /usr ufs rw 2 2 /dev/vinum/var /var ufs rw 2 2 /dev/acd0 /cdrom cd9660 ro,noauto 0 0 /dev/ad1s1d /backup ufs rw 2 2 CONFIGURARE IL DISCO AD2S1 CON VINUM ==================================== Rebootare il sistema in single user mode. FATELO prima di editare ad2! # mount -u / # mount -a # bsdlabel -e ad2s1 ricreate la partizione identica al primo disco create un file /etc/vinum-discodue.conf sostituendo DiscoUno con DiscoDue e sostituendo ad0s1h con ad2s1h. NON SBAGLIATE! SE NO POTRETE ANNULLARE TUTTO!! dovete ora lanciare il comando: # vinum create -f /etc/vinum-discodue.conf non vi preoccupate se nell'output vedete cose tipo State: faulty oppure State: stale. dobbiamo ancora mirrorare effettivamente i due dischi!!! # vinum vinum -> start root.p1.s0 questo attivera' la copia di un disco sull'altro. lanciate il comando list per vedere la percentuale dell'elaborazione. NON LANCIATE TROPPI START IN BACKGROUND. FATE UNO ALLA VOLTA. dopo un po' un messaggio vi informera' che il procesos e' finito. fate lo stesso per ogni partizione. uscite da vinum. e lanciate rm -rf /usr2 /root2 /tmp2 /var2 per cancellare gli inutili mount point. CONGRATULAZIONI! IL TUO RAID E' PRONTO! REBOOTTA E GODITELO! - ATTENZIONE! PER CHI USA 5.2.1 O SUPERIORI mi sono accorto che swapon -a non va!!! La soluzione e' passare a gvinum. Fate cosi': editate /boot/loader.conf e lasciate solo la riga: geom_vinum_load="YES" editate /etc/fstab e cambiate tutti i dispositivi da /dev/vinum a /dev/gvinum. FATELO SE NO DOVRETE FARLO A MANO PERCHE' IL SISTEMA NON TROVA IL ROOT FILE SYSTEM! reboottate! :) al prossimo boot la partizione di swap verra' utilizzata! FACCIAMO DANNO COL CULO PARATO ============================== COOMING SOON. In questa parte proveremo a fare danno sui due dischi e a rifare l'array raid. - SFASCIAMO IL DISCO 1 - SFASCIAMO IL DISCO 2 AUTORE ====== pallotron@freaknet.org http://pallotron.freaknet.org http://www.freaknet.org http://poetry.freaknet.org