Versione 1.0
Autore:Falko Timme
Ultimo aggiornamento:09-02-2015
Questa guida mostra come lavorare con LVM (Logical Volume Management) su Linux. Descrive anche come utilizzare LVM insieme a RAID1 in un capitolo aggiuntivo. Poiché LVM è un argomento piuttosto astratto, questo articolo viene fornito con un'immagine Debian Etch VMware che puoi scaricare e avviare, e su quel sistema Debian Etch puoi eseguire tutti i comandi che eseguo qui e confrontare i tuoi risultati con i miei. Attraverso questo approccio pratico dovresti abituarti a LVM molto velocemente.
Tuttavia, non garantisco che questo tutorial funzionerà per te!
1 Nota preliminare
Questo tutorial è stato ispirato da due articoli che ho letto:
- http://www.linuxdevcenter.com/pub/a/linux/2006/04/27/managing-disk-space-with-lvm.html
- http://www.debian-administration.org/articles/410
Questi sono ottimi articoli, ma difficili da capire se non hai mai lavorato con LVM prima. Ecco perché ho creato questa immagine Debian Etch VMware che puoi scaricare ed eseguire in VMware Server o VMware Player (vedi https://www.howtoforge.com/import_vmware_images per sapere come farlo).
Ho installato tutti gli strumenti di cui abbiamo bisogno nel corso di questa guida sul sistema Debian Etch (eseguendo
apt-get install lvm2 dmsetup mdadm reiserfsprogs xfsprogs
) quindi non devi preoccuparti di questo.
La rete del sistema Debian Etch è configurata tramite DHCP, quindi non devi preoccuparti di indirizzi IP in conflitto. La password di root è howtoforge. Puoi anche connetterti a quel sistema con un client SSH come PuTTY. Per scoprire l'indirizzo IP del sistema Debian Etch, esegui
ifconfig
Il sistema ha sei dischi rigidi SCSI, /dev/sda - /dev/sdf. /dev/sda è usato per il sistema Debian Etch stesso, mentre useremo /dev/sdb - /dev/sdf per LVM e RAID. /dev/sdb - /dev/sdf hanno ciascuno 80 GB di spazio su disco. All'inizio agiremo come se ciascuno avesse solo 25GB di spazio su disco (utilizzando quindi solo 25GB su ciascuno di essi), e nel corso del tutorial "sostituiremo" i nostri hard disk da 25GB con hard disk da 80GB, dimostrando così come puoi sostituire i piccoli dischi rigidi con quelli più grandi in LVM.
L'articolo http://www.linuxdevcenter.com/pub/a/linux/2006/04/27/managing-disk-space-with-lvm.html utilizza dischi rigidi da 250 GB e 800 GB, ma alcuni comandi come pvmove richiedono tanto tempo con dischi rigidi di tali dimensioni, ecco perché ho deciso di utilizzare dischi rigidi da 25 GB e 80 GB (abbastanza per capire come funziona LVM).
1.1 Riepilogo
Scarica questa immagine Debian Etch VMware (~310 MB) e avviala in questo modo. Accedi come root con la password howtoforge.
2 Layout LVM
Fondamentalmente LVM si presenta così:
Hai uno o più volumi fisici (/dev/sdb1 - /dev/sde1 nel nostro esempio), e su questi volumi fisici crei uno o più gruppi di volumi (es. file server) e in ogni gruppo di volumi puoi creare uno o più volumi logici. Se utilizzi più volumi fisici, ogni volume logico può essere più grande di uno dei volumi fisici sottostanti (ma ovviamente la somma dei volumi logici non può superare lo spazio totale offerto dai volumi fisici).
È buona norma non allocare tutto lo spazio ai volumi logici, ma lasciare un po' di spazio inutilizzato. In questo modo puoi ingrandire uno o più volumi logici in seguito, se ne senti la necessità.
In questo esempio creeremo un gruppo di volumi chiamato fileserver e creeremo anche i volumi logici /dev/fileserver/share, /dev/fileserver/backup e /dev/fileserver/media (che utilizzerà solo metà dello spazio offerto dai nostri volumi fisici per ora - in questo modo possiamo passare a RAID1 in seguito (descritto anche in questo tutorial)).
3 La nostra prima configurazione LVM
Scopriamo insieme i nostri hard disk:
fdisk -l
L'output è simile a questo:
server1:~# fdisk -l
Disk /dev/sda: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 18 144553+ 83 Linux
/dev/sda2 19 2450 19535040 83 Linux
/dev/sda4 2451 2610 1285200 82 Linux swap / Solaris
Disk /dev/sdb: 85.8 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdb doesn't contain a valid partition table
Disk /dev/sdc: 85.8 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdc doesn't contain a valid partition table
Disk /dev/sdd: 85.8 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdd doesn't contain a valid partition table
Disk /dev/sde: 85.8 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sde doesn't contain a valid partition table
Disk /dev/sdf: 85.8 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdf doesn't contain a valid partition table
Non ci sono ancora partizioni su /dev/sdb - /dev/sdf. Creeremo le partizioni /dev/sdb1, /dev/sdc1, /dev/sdd1 e /dev/sde1 e per ora lasceremo /dev/sdf intatto. Agiamo come se i nostri dischi rigidi avessero solo 25 GB di spazio invece di 80 GB per ora, quindi assegniamo 25 GB a /dev/sdb1, /dev/sdc1, /dev/sdd1 e /dev/sde1:
fdisk /dev/sdb
server1:~# fdisk /dev/sdb
Il numero di cilindri per questo disco è impostato su 10443.
Non c'è niente di sbagliato in questo ma è maggiore di 1024,
e potrebbe in alcune impostazioni causare problemi con:
1) software che è in esecuzione al avvio (ad es., vecchie versioni di LILO)
2) avviare e partizionare software da altri OS
(ad es. DOS FDISK, OS/2 FDISK)
Command (m for help): <-- m
Command action
a attiva/disattiva un flag avviabile
b edit bsd disklabel
c attiva/disattiva il flag di compatibilità dos
d elimina una partizione
l elenca i tipi di partizione noti
m stampa questo menu
n aggiungi una nuova partizione
o crea una nuova tabella delle partizioni DOS vuota
p stampare la tabella delle partizioni
q uscire senza salvare le modifiche
s creare una nuova etichetta disco Sun vuota
t cambiare l'id di sistema di una partizione
u cambiare unità di visualizzazione/immissione
v verificare la tabella delle partizioni w scrivi tabella su disco ed esci
x funzionalità extra (solo esperti)
Comando (m per aiuto): <-- n
Comando azione
e esteso
p partizione primaria (1-4)
<-- p
Numero partizione (1-4): <-- 1
Primo cilindro (1-10443, predefinito 1).
Comando (m for help): <-- t
Partizione 1 selezionata
Codice esadecimale (digitare L per elencare i codici): <-- L
0 Vuoto 1E nascosto W95 FAT1 80 Old Minix BE BE SOLIS SCOORE
1 FAT12 24 NEC DOS 81 Minix/Old Lin BF Solaris
2 Xenix Root 39 Piani 9 82 Linux Swap/SO C1 DRDOS/sec (grasso-
3 Xenix USR 3C PartitionMagic 83 Linux C4 DRDOS/sec (Fat-
4 FAT16 <32m 40 VENIX 80286 84 OS/2 Hidden C:C6 DRDOS/SEC (Fat-
5 Extended 41 pp C boot preparazione 85 Linux esteso C7 Syrinx
6 FAT16 42 SFS 86 NTFS Volume set DA Non-FS Dati
7 hpfs/ntfs 4d qnx4.x 87 ntfs set db cp/m/ctos/.
8 AIX 4E QNX4.x 2nd Parte 88 Linux Plaintext De Dell Utility
9 Aix Bootable 4F QNX4.X 3rd Parte 8E Linux LVM DF Bootit
A OS /2 Boot Manag 50 OnTrack DM 93 AMoeba AMoeba E1 DOS Accesso
B W95 FAT32 51 ONTRACK DM6 AUX 94 AMOBEB BBT E3 DOS R /O
C W95 FAT32 (LBA) 52 CP /M 9F BSD /OS E4 Speedstor
E W95 Fat16 ( Lba) 53 ontrack dm6 aux a0 ibm Thinkpad hi eb beos fs
f w95 extd (lba) 54 ontrackdm6 a5 freebsd ee efi gpt
10 opus 55 ez-drive a6 openbsd ef efi (fat-12 /16/
11 Nascosto FAT12 56 Arco d'oro a7 NeXTSTEP f0 Linux/PA-RISC b
12 Compaq diagnost 5c Priam Edisk a8 Darwin UFS F1 Speedstor
14 FAT16 nascosto16 <3 61 Speedstor A9 NetBSD F4 Speedstor
16 Hidden Fat16 63 GNU HURD o SYS AB Darwin Boot F2 DOS Secondary
17 Hidden HPFS /NTF 64 Novell B7 B7 BSDI FS fd Linux raid auto
18 AST SmartSleep 65 Novell Netware b8 BSDI swap fe LANstep
1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid ff BBT
1c F AT W95 /> Codice esadecimale (digitare L per elencare i codici): <-- 8e
Tipo di partizione di sistema modificato a 8e (Linux LVM)
Comando (m per aiuto): <-- w
La tabella delle partizioni è stata modificata!
Chiamata ioctl() per rileggere la tabella delle partizioni.
Sincronizzazione dei dischi.
Ora facciamo lo stesso per i dischi rigidi /dev/sdc - /dev/sde:
fdisk /dev/sdc
fdisk /dev/sdd
fdisk /dev/sde
Quindi esegui
fdisk -l
ancora. L'output dovrebbe essere simile a questo:
server1:~# fdisk -l
Disk /dev/sda: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 18 144553+ 83 Linux
/dev/sda2 19 2450 19535040 83 Linux
/dev/sda4 2451 2610 1285200 82 Linux swap / Solaris
Disk /dev/sdb: 85.8 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 3040 24418768+ 8e Linux LVM
Disk /dev/sdc: 85.8 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdc1 1 3040 24418768+ 8e Linux LVM
Disk /dev/sdd: 85.8 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdd1 1 3040 24418768+ 8e Linux LVM
Disk /dev/sde: 85.8 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sde1 1 3040 24418768+ 8e Linux LVM
Disk /dev/sdf: 85.8 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdf doesn't contain a valid partition table
Ora prepariamo le nostre nuove partizioni per LVM:
pvcreate /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
server1:~# pvcreate /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
Physical volume "/dev/sdb1" successfully created
Physical volume "/dev/sdc1" successfully created
Physical volume "/dev/sdd1" successfully created
Physical volume "/dev/sde1" successfully created
Riprendiamo quest'ultima azione per scopi di formazione:
pvremove /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
server1:~# pvremove /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
Labels on physical volume "/dev/sdb1" successfully wiped
Labels on physical volume "/dev/sdc1" successfully wiped
Labels on physical volume "/dev/sdd1" successfully wiped
Labels on physical volume "/dev/sde1" successfully wiped
Quindi esegui
pvcreate /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
ancora:
server1:~# pvcreate /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
Physical volume "/dev/sdb1" successfully created
Physical volume "/dev/sdc1" successfully created
Physical volume "/dev/sdd1" successfully created
Physical volume "/dev/sde1" successfully created
Ora corri
pvdisplay
per conoscere lo stato attuale dei tuoi volumi fisici:
server1:~# pvdisplay
--- NEW Physical volume ---
PV Name /dev/sdb1
VG Name
PV Size 23.29 GB
Allocatable NO
PE Size (KByte) 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID G8lu2L-Hij1-NVde-sOKc-OoVI-fadg-Jd1vyU
--- NEW Physical volume ---
PV Name /dev/sdc1
VG Name
PV Size 23.29 GB
Allocatable NO
PE Size (KByte) 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID 40GJyh-IbsI-pzhn-TDRq-PQ3l-3ut0-AVSE4B
--- NEW Physical volume ---
PV Name /dev/sdd1
VG Name
PV Size 23.29 GB
Allocatable NO
PE Size (KByte) 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID 4mU63D-4s26-uL00-r0pO-Q0hP-mvQR-2YJN5B
--- NEW Physical volume ---
PV Name /dev/sde1
VG Name
PV Size 23.29 GB
Allocatable NO
PE Size (KByte) 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID 3upcZc-4eS2-h4r4-iBKK-gZJv-AYt3-EKdRK6