Da Poetry Hacklab.
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