Archlinux con RAID ed LVM

Inserito da il17 February 2011, 17720 visite totali

In questa guida viene spiegato come installare Archlinux creando un sistema Raid (1) ed LVM.

La guida può avere carattere generale, infatti i passi per creare un raid software e la gestione di LVM è la stessa su ogni sistema linux, la differenza stà poi nell’adattare i passi alla distribuzione utilizata.

Il RAID (Redundant Array of Independent Disks) viene definito da wikipedia come: un sistema informatico che usa un insieme di dischi rigidi per condividere o replicare le informazioni.

L’utilizzo di un sistema RAID permette di avere un certo margine di sicurezza per quanto riguarda un disk-failure.
Per maggiori info riguardanti il RAID si possono leggere le informazioni riportate su wikipedia.
Qui si spiega l’uso di un sistema RAID 1, ma può essere facilmente estesa ad un RAID 5.
Da notare che per una configurazione in raid 1 servono almeno 2 dischi, mentre per una in raid 5 ne occorrono almeno 3.
La macchina è equipaggiata con 2 dischi SATA (sda ed sdb) ed un cd ide.
Accendere la macchina con il cd di installazione (in questo caso la scelta è ricaduta sulla versione core),ed al prompt di login digitiare come user root e poi INVIO (non c’è password).
La prima cosa (per comodità) è impostare la tastiera in italiano:

[root@archiso ~]# loadkeys it
Loading /usr/share/kbd/keymaps/i386/qwerty/it.map.gz

Volendo si può continuare impostando la rete ed attivare ssh per eseguire l’installazione da remoto (come in questo caso).

[root@archiso ~]# ifconfig eth0 172.17.13.116 netmask 255.255.255.224
[root@archiso ~]# route add default gw 172.17.13.123
[root@archiso ~]# /etc/rc.d/sshd start

Se si vogliono raggiungere siti esterni sarà necessario impostare i dns sul file /etc/resolv.conf.  Altra operazione sarà quella di fornire una password all’utente root tramite il comando passwd altrimenti non sarà possibile eseguire il login via ssh.

Dopo aver effettuato il login si procede con il partizionamento dei dischi.
Lo schema delle partizioni sarà il seguente:

  • partizione da 100MB (sda1) per il bootloader che verrà poi montata in /boot (raid 1)
  • partizione di swap (sda2) da 1GB (raid 1)
  • il resto del disco (sda3) per il sistema e le home degli utenti (anche questa in raid 1 ma può essere anche fatta in raid 5)

NB: La partizione di boot non può essere creata con un raid 5 perchè il boot loader (grub) non riesce ad accedere a questo tipo di partizioni.

Per eseguire il partizionamento eseguire cfdisk:

[root@archiso ~]# cfdisk /dev/sda

Dalla schermata selezionare NEW, Primary, impostare la dimensione a 100 (MB), la posizione sarà all’inizio dello spazio libero (Beginning), e poi si applica il flag per il boot (bootabile). La partizione sarà di tipo FD (Linux raid autodetec).
Procedere come sopra per la partizione di swap avendo cura di selezionare la nuova dimenzione e NON impostando il flag di boot, il tipo sarà sempre FD.
Il resto del disco verrà usato per lo spazio dati vero e proprio (root ed home) sempre FD.
Terminato il partizionamento, si salva la tabella delle partizioni tramite la selezione del comando WRITE, e tramite QUIT si esce da cfdisk.
Queste operazioni vanno eseguite su tutti i dischi fissi che si hanno a disposizione.
Per velocizzare le operazioni è possibile eseguire una copia della tabella delle partizioni del primo disco e poi copiarla sugli altri.
Per eseguire la copia digitare

[root@archiso ~]# sfdisk -d /dev/sda > table

Per impostarla sul nuovo disco

[root@archiso ~]# sfdisk /dev/sdb < table
		Checking that no-one is using this disk right now ...
		OK

		Disk /dev/sdb: 1566 cylinders, 255 heads, 63 sectors/track

		sfdisk: ERROR: sector 0 does not have an msdos signature
		/dev/sdb: unrecognized partition table type
		Old situation:
		No partitions found
		New situation:
		Units = sectors of 512 bytes, counting from 0

		Device Boot    Start       End   #sectors  Id  System
		/dev/sdb1   *        63    192779     192717  fd  Linux raid autodetect
		/dev/sdb2        192780   2184839    1992060  fd  Linux raid autodetect
		/dev/sdb3       2184840  25157789   22972950  fd  Linux raid autodetect
		/dev/sdb4             0         -          0   0  Empty
		Successfully wrote the new partition table

		Re-reading the partition table ...

		If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)
		to zero the first 512 bytes:  dd if=/dev/zero of=/dev/foo7 bs=512 count=1
		(See fdisk(8).)

Verificare con cfdisk che tutto sia andato a buon fine:

[root@archiso ~]# cfdisk /dev/sdb

Ora si continua con la creazione del raid. La prima operazione è quella di caricare i moduli per usare il raid, si userà solo il raid1 per cui il modulo raid5 in questo caso è superfluo

[root@archiso ~]# modprobe raid1
[root@archiso ~]# modprobe raid5

Adesso si può creare realmente il raid, per farlo si usa l’utility mdadm, si rimanda al suo manuale per ogni ulteriore informazione a riguardo.
Per la creazione del primo array per la partizione di boot si digiti:

[root@archiso ~]# mdadm --create /dev/md1 --level=1 --raid-devices=2 --metadata=0.90 /dev/sda1 /dev/sdb1
		mdadm: array /dev/md1 started.

Il parametro –metadata=0.90 si inserisce per risolvere un problema relativo a grub che altrimenti non si installerebbe sulla partizione restituendo l’errore “Filesystem type unknown, partition type 0xfd“.

Si crei ora l’array per la swap e poi quello per i dati

	[root@archiso ~]# mdadm --create /dev/md2 --level=1 --raid-devices=2 /dev/sda2 /dev/sdb2
		mdadm: Note: this array has metadata at the start and
			may not be suitable as a boot device.  If you plan to
			store '/boot' on this device please ensure that
			your boot-loader understands md/v1.x metadata, or use
			--metadata=0.90
		Continue creating array? y
		mdadm: Defaulting to version 1.2 metadata
		mdadm: array /dev/md2 started.
	[root@archiso ~]# mdadm --create /dev/md3 --level=1 --raid-devices=2 /dev/sda3 /dev/sdb3
		mdadm: Note: this array has metadata at the start and
			may not be suitable as a boot device.  If you plan to
			store '/boot' on this device please ensure that
			your boot-loader understands md/v1.x metadata, or use
			--metadata=0.90
		Continue creating array? y
		mdadm: Defaulting to version 1.2 metadata
		mdadm: array /dev/md3 started.

Nel caso in cui per la partizione dei dati si fosse voluto usare il raid 5 il comando sarebbe stato (almeno 3 dischi):

mdadm --create /dev/md3 --level=5 --raid-devices=3 /dev/sda3 /dev/sdb3 /dev/sdc3

ed il relativo device /dev/sdcX aggiunto ad ogni riga dei precedenti.

Per verificare lo stato del raid digitare

[root@archiso ~]# cat /proc/mdstat
		Personalities : [raid1] [raid6] [raid5] [raid4]
		md3 : active raid1 sdb3[1] sda3[0]
			11485379 blocks super 1.2 [2/2] [UU]
			[======>..............]  resync = 30.8% (3541248/11485379) finish=2.6min speed=49579K/sec

		md2 : active raid1 sdb2[1] sda2[0]
			996018 blocks super 1.2 [2/2] [UU]

		md1 : active raid1 sdb1[1] sda1[0]
			96256 blocks [2/2] [UU]

		unused devices: 

Per proseguire non è necessatrio attendere la fine della sincronizzazione dell’array.
Terminata la creazione del raid si può passare alla configurazione di LVM.
Per sapere cosa è LVM e come funziona si può leggere http://sourceware.org/lvm2/.
L’ operazione preliminare è quella di caricare il modulo

[root@archiso ~]# modprobe dm-mod

dopo di che si creano da prima i pv (Physical Volume)

[root@archiso ~]# pvcreate /dev/md3
Physical volume "/dev/md3" successfully created

e li si possono controllare con

[root@archiso ~]# pvdisplay
"/dev/md3" is a new physical volume of "10.95 GiB"
--- NEW Physical volume ---
PV Name /dev/md3
VG Name
PV Size 10.95 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID yMtr3S-0Tl0-Vbuy-dEhV-jx98-1ucX-uts1iY

Ora si crea il vg (Volume Group) di nome dataarray

[root@archiso ~]# vgcreate dataarray /dev/md3
Volume group "dataarray" successfully created

Per controllarlo

[root@archiso ~]# vgdisplay
--- Volume group ---
VG Name dataarray
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size 10.95 GiB
PE Size 4.00 MiB
Total PE 2804
Alloc PE / Size 0 / 0
Free PE / Size 2804 / 10.95 GiB
VG UUID xR51Xu-i34F-hcoP-N1Wp-S1Cm-j2AS-EGghoN

Ultimo passo è quello di creare gli lv (Logical Volume) che diventeranno poi i volumi sui quali verrano montate la / e la /home

[root@archiso ~]# lvcreate --size 7.9G --name root dataarray
Rounding up size to full physical extent 7.90 GiB
Logical volume "root" created
[root@archiso ~]# lvcreate --size 3.0G --name home dataarray
Logical volume "home" created
[root@archiso ~]# lvdisplay
--- Logical volume ---
LV Name /dev/dataarray/root
VG Name dataarray
LV UUID YRXHC0-L4yv-4Nnk-d6kS-SPEo-Q6kK-xbuz78
LV Write Access read/write
LV Status available
# open 0
LV Size 7.90 GiB
Current LE 2023
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0

--- Logical volume ---
LV Name /dev/dataarray/home
VG Name dataarray
LV UUID x93XWk-7Qut-hvZ2-pqhB-Qq7s-YeeC-4ABdWX
LV Write Access read/write
LV Status available
# open 0
LV Size 3.00 GiB
Current LE 768
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:1

Volendo si possono formattare gli array ed i LV, questo passo può essere svolto durante la fare di installazione, si riporatano i comandi per completezza nel caso in cui si voglia installare un sistema di questo tipo non in fare di installazione:

[root@archiso ~]# mkfs.ext2 /dev/md1
mke2fs 1.41.11 (14-Mar-2010)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
24096 inodes, 96256 blocks
4812 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67371008
12 block groups
8192 blocks per group, 8192 fragments per group
2008 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729

Writing inode tables: done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 25 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.

[root@archiso ~]# mkswap /dev/md2
mkswap: /dev/md2: warning: don't erase bootbits sectors
on whole disk. Use -f to force.
Setting up swapspace version 1, size = 996012 KiB
no label, UUID=1bc5ded3-8ef6-4e3a-9d1b-6f6b146d05fc

[root@archiso ~]# mkfs.ext4 /dev/dataarray/home
mke2fs 1.41.11 (14-Mar-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
196608 inodes, 786432 blocks
39321 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=805306368
24 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912

Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 23 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
[root@archiso ~]# mkfs.ext4 /dev/dataarray/root
mke2fs 1.41.11 (14-Mar-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
518144 inodes, 2071552 blocks
103577 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2122317824
64 block groups
32768 blocks per group, 32768 fragments per group
8096 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 25 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.

Ora si può procedere con l’installazione della distribuzione. Digitiamo

[root@archiso ~]# /arch/setup

Si procede seguendo i passi forniti dall’installer, da prima si sceglie la sorgente di installazione (in questo caso il CD), si setta il time zone (opzionale), e si passa alla preparazione dei dischi (Prepare hard drive).
La preparazione degli hdd và fatta a mano (opzione 3 Manually configure block device and filesystem and mountpoints), selezionare l’opzione per prendere i device direttamtne da /dev/ e poi si impostano uno ad uno il filesystem (fs), una eventuale etichetta ed il punto di mount:

  • per /dev/md1 selezionare come fs ext2 e punto di mount /boot
  • /dev/md2 va impostata come partizione di swap
  • per /dev/mapper/dataarray-home selezionare come fs ext4 e punto di mount /home
  • per /dev/mapper/dataarray-root si scelga come fs ext4 e punto di mount /

Terminata la gestione dei dischi selezionare il parco software da installare (dase + base-devel) e verificare che almeno i pachetti per il raid ed lvm siano marcati per l’installazione (lvm e mdad).

Prima di eseguire la configurare il sistema si passi ad un’altra shell premendo ALT+F2 per ricreare il file di configurazione del raid /etc/mdadm.conf

[root@archiso ~]# mv /mnt/etc/mdadm.conf /mnt/etc/mdadm.conf.bk
[root@archiso ~]# mdadm --examine --scan >> /mnt/etc/mdadm.conf

premere ALT+F1 per tornare all’installazione e configurare il sistema:

  • nel file /etc/mkinitcpio.conf aggiungere mdadm e lvm2 alla riga HOOKS prima di filesystem
    HOOKS="base udev autodetect pata scsi sata mdadm lvm2 filesystems"
  • nel file /etc/rc.conf assicurarsi di impostare
    USELVM="yes"
  • in /etc/fstab verificare i punti di mount del fs.

Queste sono le modifiche fondamentali, poi chiaramente si possono eseguire tutte quelle che servono al caso specifico come i demoni di avvio, le impostazioni di rete, password di root ecc.
Per terminare l’installazione è necessario installare il bootloader.

Non rimane che riavviare e gioire del sistema in RAID ed LVM.

Per verificare che tutto sia andato a buon fine è possibile, dopo il primo riavvio ed aver atteso che gli array siano sincronizzati, staccare un disco e verificare che il sistema sia sempre in grado di avviarsi ed essere utilizzato. Verificato il funzionamento con un dico è possibile proseguire con il distacco dell’altro, ma solo dopo aver reinserito il primo e ricostruito l’array.
Per aggiungere un disco o partizione ad un array basta eseguire

[root@araida ~]# mdadm --add /dev/md3 /dev/sda3

questo reinserisce la partizione sda3 nell’array md3.

Nel caso in cui grub fosse installato solo su di un disco lo si può installare sugli altri (il sistema non sarebbe ingrado di trovare il bootloadr in caso di rottura del disco che lo contiene) digitando

[root@araida ~]# grub
grub> device (hd0) /dev/sdb
grub> root (hd0,0)
grub> setup (hd0)
grub> quit

AND THAT’S ALL FOLKS

2 commenti per “Archlinux con RAID ed LVM”

  1. Leone scrive:

    Superb related information! I have been hunting for everything like this for a while finally. Regards!

  2. unsnsn scrive:

    Uso archlinux, e ho fatto tutto con lvm & anche il mirror

Lascia una risposta

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *