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