glug:raid e oltre
Marco De Benedetto
debe@galliera.it
Ven 20 Giu 2003 00:03:05 CEST
On Thu 19 Jun, Paolo Gaggini wrote:
> Oggi sono riuscito a mettere su la macchina con doppio hard disk da 80GB
> (il mio capo ha voluto fare lo sboroone ;) ) e partizione raid montata
> come /var. La scomodità è che occorre installare il sistema su un
> singolo hard disk, e poi fare il raid. Questo significa:
> 1) creare a mano le partizioni sul secondo hard disk, uguali o maggiori
> a quelle del primo;
> 2) creare due partizioni in più su cui attivare il raid
> 3) copiare /var nella nuova partizione raid, quindi modificare
> /etc/fstab e riavviare
> 4) sorprendersi che nonostante tutto il sistema funziona.
>
> Rimane il problema di rendere un intero hard disk, compreso root, come
> raid, e di farlo bootare. I metodi proposti sull'howto sono molto
> macchinosi, e soprattutto richiedono un altro hard disk oltre a quello
> dell'effettivo raid (mirror).
>
> Idea: sarebbe possibile modificare una distro live (ad esempio knoppix)
> in modo da usare la partizione raid /var che ho creato?
> Il filesystem variabile è solo in /var o c'è altra roba?
> Qualcuno di voi ha già fatto qualcosa di simile?
Sì, due dischi in RAID-1 e sopra LVM (distribuzione Debian).
I passi sono questi (a memoria):
0) boot da CD live-filesystem con kernel che supporti l'hardware della macchina
1) creazione delle partizioni sui due dischi; su entrambe 2 partizioni:
una di tipo FD (Linux raid autodetect) e una di swap
2) creazione del raid /dev/md0
3) creazione del volume group vg0
4) creazione dei logical volume (ad es. root boot var usr home)
5) creazione filesystem sui LV (io ho fatto tutto reiserfs)
6) mount dei LV (ad es. su /mnt avendo creato prima le opportune
directory:
# mount /dev/vg0/root /mnt
# mount /dev/vg0/boot /mnt/boot
# mount /dev/vg0/usr /mnt/usr
etc.
7) deboostrap /mnt
8) echo proc /mnt/proc proc defaults 0 0 >> /etc/fstab ; mount /mnt/proc
9) chroot /mnt
10) installazione di tutto quello che serve (kernel, lvm10, raidtools2,
reiserfsprogs etc.)
11) lvmcreate_initrd (per generare l'init ramdisk necessario per avere la
partizione root su LVM)
12) creazione di /etc/fstab /etc/lilo.conf (questo con le opzioni per
intrd)
13) lilo
13) reboot
Ripeto, a memoria, possibile ci siano imprecisioni ma spero si
intuiscano le intenzioni.
Il CD di boot l'ho generato con bootcdwrite (pacchetto bootcd) a partire
da una prima installazione normale e minimale sulla macchina stessa e
creando il kernel ad hoc (dovevo patchare per il supporto
dell'adattatore SCSI aic79xx e per LVM; per LVM bisogna applicare la
patch che trovi nei sorgenti: apt-get source lvm10). Il kernel compilato
staticamente (non moduli) per il supporto di RAID, LVM e reiserfs.
Alla fine la situazione è questa:
# sfdisk -l
Disk /dev/sda: 8899 cylinders, 255 heads, 63 sectors/track
Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from
0
Device Boot Start End #cyls #blocks Id System
/dev/sda1 0+ 8753 8754- 70316473+ fd Linux raid
autodetect
/dev/sda2 8754 8898 145 1164712+ 82 Linux swap
/dev/sda3 0 - 0 0 0 Empty
/dev/sda4 0 - 0 0 0 Empty
Disk /dev/sdb: 8899 cylinders, 255 heads, 63 sectors/track
Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting
from 0
Device Boot Start End #cyls #blocks Id System
/dev/sdb1 0+ 8753 8754- 70316473+ fd Linux raid
autodetect
/dev/sdb2 8754 8898 145 1164712+ 82 Linux swap
/dev/sdb3 0 - 0 0 0 Empty
/dev/sdb4 0 - 0 0 0 Empty
# cat /proc/mdstat
Personalities : [raid1]
read_ahead 1024 sectors
md0 : active raid1 sdb1[1] sda1[0]
70316352 blocks [2/2] [UU]
unused devices: <none>
# df -h
/dev/vg0/root 1,1G 96M 1,1G 9% /
/dev/vg0/boot 56M 40M 17M 70% /boot
/dev/vg0/usr 2,0G 1,4G 683M 67% /usr
/dev/vg0/var 1,0G 939M 86M 92% /var
/dev/vg0/mysqldb 2,0G 577M 1,5G 29% /var/lib/mysql
/dev/vg0/squid 3,0G 1,7G 1,4G 56% /var/spool/squid
/dev/vg0/home 23G 23G 318M 99% /home
/dev/vg0/opt 500M 75M 426M 15% /opt
/dev/vg0/mail 4,0G 1,7G 2,4G 42% /var/mail
Non far caso alla root che è esagerata e che devo ridimensionare.
# cat /etc/fstab
/dev/vg0/root / reiserfs defaults,errors=remount-ro 0 1
/dev/vg0/boot /boot reiserfs defaults 0 1
/dev/sda2 none swap sw 0 0
/dev/sdb2 none swap sw 0 0
/dev/vg0/usr /usr reiserfs defaults 0 0
/dev/vg0/var /var reiserfs defaults 0 0
/dev/vg0/home /home reiserfs defaults 0 0
/dev/vg0/opt /opt reiserfs defaults 0 0
/dev/vg0/mail /var/mail reiserfs defaults 0 0
/dev/vg0/mysqldb /var/lib/mysql reiserfs defaults 0 0
/dev/vg0/squid /var/spool/squid reiserfs defaults 0 0
proc /proc proc defaults 0 0
# cat /etc/lilo.conf
lba32
map=/boot/map
boot=/dev/sda
delay=20
vga=0
image=/vmlinuz
root=/dev/vg0/root
label=Linux
read-only
initrd=/boot/initrd-lvm-2.4.20.gz
append="ramdisk_size=8192"
Ho eseguito due volte lilo prima con boot=/dev/sda e poi con
boot=/dev/sdb per avere i due MBR allineati (c'è un altro modo per farlo?)
--
ciao,
debe
Maggiori informazioni sulla lista
glug