SATA-RAID con chipset ICH5R e kernel 2.4.21

HI-Lab * the Social Technology

v1.0, Ottobre 2003


Sommario
1. Introduzione
2. Configurazione del BIOS
3. Knoppix
4. Partizionamento dei dischi e configurazione del RAID 0
5. Installazione di Knoppix
6. Ricompilazione del kernel
7. Preparazione al riavvio del sistema
8. Licenza

Capitolo 1. Introduzione

Questo documento parte da una specifica esperienza di configurazione di dischi SATA con RAID 0 in Linux sperando di fornire un modello per altri sistemi analoghi.

Si raccomanda di fare il backup dei dati prima di eseguire ogni tipo di operazione prevista.

Configurazione hardware di prova:


Capitolo 2. Configurazione del BIOS

Innanzitutto assicuratevi che i dischi siano collegati al chipset ICH5R. Questo componente, realizzato da Silicon Image, pur essendo facilmente riconosciuto dal sistema, ha presentato alcuni problemi insormontabili con il kernel 2.4.21 nell'attivazione del DMA sui dischi fissi: ogni tentativo provocava sistematicamente un blocco del sistema.

Premendo il tasto "Canc" entrate nel BIOS e selezionate la voce "Integrated Peripherals". Ora andate su "OnChip IDE Device" e impostate la voce "OnChip Serial ATA" sul valore "Auto". Salvate, uscite dal BIOS e riavviate il computer. Rientrate nuovamente nel BIOS ed accedete alla sezione "Advanced BIOS Features", selezionate la voce "Hard Disk Boot Priority" ed usando i tasti "+" e "-" portate in cima uno dei due hard disk Maxtor.


Capitolo 3. Knoppix

Procuratevi una distribuzione Knoppix versione 3.2-2003-07-26 o superiore ed avviatela impostando il Cd-Rom come primo dispositivo di boot. Una volta avviato Linux dovrete procedere al partizionamento dei dischi e alla configurazione dell'array RAID.


Capitolo 4. Partizionamento dei dischi e configurazione del RAID 0

Pianificate e create questo schema di partizionamento:
hdc  spazio          filesystem  punto di mount          hdd  spazio
hdc1 1GB               ext3          /boot               -    -
hdc2 4GB               raid          -                   hdd1 4GB
hdc5 300MB             swap          -                   hdd2 300MB
hdc6 15GB              raid          -                   hdd3 15GB
hdc7 resto             raid          -                   hdd4 resto

Create il file /etc/raidtab:
raiddev /dev/md0
raid-level 0
nr-raid-disks 2
persistent-superblock 1
chunk-size 64
device /dev/hdc2
raid-disk 0
device /dev/hdd1
raid-disk 1

raiddev /dev/md1
raid-level 0
nr-raid-disks 2
persistent-superblock 1
chunk-size 64
device /dev/hdc6
raid-disk 0
device /dev/hdd3
raid-disk 1

raiddev /dev/md2
raid-level 0
nr-raid-disks 2
persistent-superblock 1
chunk-size 64
device /dev/hdc7
raid-disk 0
device /dev/hdd4
raid-disk 1

Salvate il file su un dischetto oltre che in /etc.

A questo punto digitate i seguenti comandi:
mkraid -f /dev/md0
mkraid -f /dev/md1
mkraid -f /dev/md2

Le partizioni RAID sono così state impostate. A questo punto è possibile formattarle e montarle:
mkreiserfs /dev/md0
mkreiserfs /dev/md1
mkreiserfs /dev/md2
mkfs.ext3 /dev/hdc1
mkswap /dev/hdc5
mkswap /dev/hdd2

Ricordatevi che per inizializzare una partizione RAID è sufficiente dare il comando:
raidstart /dev/mdx


Capitolo 5. Installazione di Knoppix

Prima di procedere all'installazione di Knoppix possiamo attivare il DMA ai nostri dischi con:
hdparm -d1 /dev/hdc
hdparm -d1 /dev/hdd

Per constatare gli effetti strabilianti di questa attivazione digitate:
hdparm -tT /dev/hdx

Utilizzate lo script knx-hdinstall per installare Knoppix scegliendo la partizione /dev/md0 come quella di destinazione.

A questo punto riavviate il sistema.

Create una directory dove poter montare il filesystem di root:
mkdir /mnt/root

Inizializzate il RAID:
raidstart /dev/md0
raidstart /dev/md1
raidstart /dev/md2

Montate il filesystem di root:
mount -t reiserfs /dev/md0 /mnt/root

Montate le altre partizioni su directory temporanee di appoggio:
mkdir /mnt/home
mkdir /mnt/boot
mkdir /mnt/var

mount -t reiserfs /dev/md1 /mnt/var
mount -t reiserfs /dev/md2 /mnt/home
mount -t ext3 /dev/hdc1 /mnt/boot

Copiate i file nelle rispettive partizioni:
cp -R /mnt/root/boot/* /mnt/boot/
cp -R /mnt/root/home/* /mnt/home/
cp -R /mnt/root/var/* /mnt/var/

Verificate che i file siano stati copiati correttamente e smontate le partizioni:
umount /mnt/home
umount /mnt/var
umount /mnt/boot

Svuotate le rispettive directory nel filesystem di root:
rm -Rf /mnt/root/boot/*
rm -Rf /mnt/root/home/*
rm -Rf /mnt/root/var/*

Ora rimontate le partizioni nel punto giusto:
mount -t ext3 /dev/hdc1 /mnt/root/boot
mount -t reiserfs /dev/md1 /mnt/root/var
mount -t reiserfs /dev/md2 /mnt/root/home


Capitolo 6. Ricompilazione del kernel

Per far sì che il sistema si avvii è necessario che l'immagine di boot del kernel abbia la capacità di ricostruire gli array RAID e supporti i rispettivi filesystem. Dunque è necessario ricompilare il kernel.

Per ricompilarlo dal live-cd è necessario fare il chroot sul sistema installato negli hard disk.

Scaricate i sorgenti del kernel 2.4.21.tar.bz2 dal sito ftp.kernel.org e scompattateli con il comando:
tar xjvf linux-2.4.21.tar.bz2 -C /mnt/root/usr/src/

A questo punto date il comando:
chroot /mnt/root/ /bin/sh

Ora cancellate il link simbolico linux e ricrearlo:
rm /usr/src/linux
ln -s /usr/src/linux-2.4.21 /usr/src/linux

Entrate nella directory del kernel e predisponete la compilazione:
cd /usr/src/linux
make mrproper

Copiate il file di configurazione del kernel di Knoppix:
cp ../linux-2.4.21-xfs/.config ./

Configurate le opzioni necessarie:
make menuconfig

Compilate staticamente ("*") nel kernel : raid0, md, reiserfs. Quindi eseguite:
make dep
make bzImage
make modules
make modules_install
cp arch/i386/boot/bzImage /boot/vmlinuz-2.4.21
cd /boot/
mkinitrd -o initrd-2.4.21.img /lib/modules/2.4.21/


Capitolo 7. Preparazione al riavvio del sistema

A questo punto è necessario configurare per bene LILO.

Create il file lilo.conf
boot = /dev/hdc
vga = 0x31a
prompt
timeout = 80
change-rules
 reset
default = vanilla
disk=/dev/hdc
 bios=0x80
 disk=/dev/hdd
 bios=0x81
lba32
menu-scheme = Wg:kw:Wg:Wg
read-only

image = /boot/vmlinuz-2.4.21
 label = vanilla
 root = /dev/md0
 vga = 0x31a
 initrd = /boot/initrd-2.4.21.img

Controllate che tutto sia a posto con il comando:
lilo -t -v

Se non ci sono messaggi di errore digitate:
lilo -v

Nel caso in cui non stessimo operando in ambiente chroot, copiate il file lilo.conf nella cartella /etc del live-cd e date il comando:
lilo -r /mnt/root -C /etc/lilo.conf -v

Create il seguente file fstab:
# /etc/fstab: filesystem table.
#
# filesystem mountpoint type options dumppass
/dev/hdc1 /boot ext3 defaults 0 2
/dev/md0 / reiserfs defaults 0 0
/dev/md1 /var reiserfs defaults 0 0
/dev/md2 /home reiserfs defaults 0 0
/dev/hdc5 swap swapdefaults,pri=1 0 0
/dev/hdd2 swap swapdefaults,pri=1 0 0

proc /proc proc defaults 0 0
/dev/fd0 /floppy vfat defaults,user,noauto,showexec,umask=022 0 0
/dev/cdrom /cdrom iso9660 defaults,ro,user,noexec,noauto 0 0
/dev/dvd /dvd iso9660 defaults,ro,user,noexec,noauto 0 0
/dev/cdaudio /cdaudio iso9660 defaults,ro,user,noexec,noauto 0 0

Se siete in ambiente chroot è sufficiente salvare il file come /etc/fstab. In caso contrario salvatelo come /mnt/root/etc/fstab.

Notate che le due partizioni di swap hanno pari priorità in modo da consentire uno swap parallelo da parte del kernel, come se si trattasse di una sola partizione raid0.

PRIMA DI RIAVVIARE IL SISTEMA copiate i file di configurazione fin qui creati su un floppy, ovvero:

Incrociate le dita e riavviate il sistema!

Se le cose non dovessero andare per il verso giusto è sempre possibile rilanciare il live-cd, copiare il file raidtab sotto /etc e inizializzare nuovamente le partizioni RAID con i comandi:
raidstart /dev/mdx

Rimontatele come spiegato sopra, quindi controllate e riconfigurate le impostazioni.

Buona Fortuna!!!


Capitolo 8. Licenza

Copyright (C) 2003 HI-Lab, cooperativa sociale l'Utopia a r.l.

This manual is free software; you may redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose. See the GNU General Public License for more details.

A copy of the GNU General Public License is available on the World Wide Web at http://www.fsf.org/copyleft/gpl.html. You can also obtain it by writing to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.

 

Questo manuale è software libero; è lecito redistribuirlo o modificarlo secondo i termini della Licenza Pubblica Generica GNU come è pubblicata dalla Free Software Foundation; o la versione 2 della licenza o (a propria scelta) una versione successiva.

È distribuito nella speranza che sia utile, ma SENZA ALCUNA GARANZIA; senza neppure la garanzia implicita di NEGOZIABILITÀ o di APPLICABILITÀ PER UN PARTICOLARE SCOPO. Si veda la Licenza Pubblica Generica GNU per avere maggiori dettagli.

Una copia della Licenza Pubblica Generica GNU è disponibile sul World Wide Web su http://www.fsf.org/copyleft/gpl.html. La si può ottenere anche scrivendo alla Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.