Revisione 0.3 HOWTO per migrare, dopo aver installato mandriva 2007, alcune partizioni in LVM Le partizioni che ho deciso di migrare sono: /home, /usr, /var, /tmp. -Inanzi tutto ho installato il pacchetto: lvm2-2.02.06-2mdv2007.0 Avendo installato il sistema usando tutto lo spazio dei dischi ho dovuto aggiungere un altro disco per poter fare il lavoro con un doppio passaggio, la prossima volta mi lascerò almeno una partizione, con sufficiente spazio per farlo con un giro solo. Ricordarsi di smontare le partizioni , eventualmente montate, prima di metterle in LVM. ISTRUZIONI PASSO PASSO: -Eseguo il comando : cat /proc/partitions per verificare le partizioni disponibili [web@localhost ~]$ cat /proc/partitions major minor #blocks name 3 0 160086528 hda 3 1 112993146 hda1 3 2 1 hda2 3 5 47086483 hda5 8 0 53320704 sda 8 1 4088479 sda1 8 2 1 sda2 8 5 4088479 sda5 8 6 16370014 sda6 8 7 16410019 sda7 8 8 4088479 sda8 8 9 8273002 sda9 -Con il comando : su divento root, necessario per proseguire l'attività -Con il comando : pvcreate /dev/hda5 creo il disco fisico -Con il comando : pvscan verifico i dischi inseriti in LVM #pvscan File descriptor 3 left open PV /dev/hda5 VG test_lv lvm2 [44,90 GB / 44,90 GB free] Total: 1 [44,90 GB] / in use: 1 [44,90 GB] / in no VG: 0 [0 ] -Dal display vediamo di aver inserito hda5 da 44,90G -Con il comando : vgcreate test_lv /dev/hda5 creo il gruppo virtuale dei dischi, nel mio caso una sola partizione. #vgcreate test_lv /dev/hda5 -Con il comando : vgdisplay verifico cosa ho creato # vgdisplay File descriptor 3 left open --- Volume group --- VG Name test_lv System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 13 VG Access read/write VG Status resizable MAX LV 0 Cur LV 3 Open LV 1 Max PV 0 Cur PV 1 Act PV 1 VG Size 44,90 GB PE Size 4,00 MB Total PE 11495 VG UUID n9tZ7p-MX1a-cdiU-7eEY-ENFN-UiAg-igIeuj -Dal display vediamo di aver creato test_lv -Finalmente andiamo a creare la prima partizione che ci serve con il comando : #lvcreate -L 5G -n lv_home test_lv il comando ha creato un volume logico da 5G dentro il gruppo di volumi test_lv chiamato lv_home -Formatto ext3 con il comando : #mkfs.ext3 /dev/test_lv/lv_home -Creo il mount point temporaneo con il comando: #mkdir /mnt/myhome -Monto il file-system: #mount -t ext3 /dev/test_lv/lv_home /mnt/myhome -Eseguo il comando : # mount /dev/sda1 on / type ext3 (rw) /dev/sda7 on /home type ext3 (rw) none on /proc type proc (rw) /dev/mapper/test_lv-lv_home on /mnt/myhome type ext3 (rw) none on /mnt/floppy type supermount (rw,sync,dev=/dev/fd0,fs=ext2:vfat,--) /dev/sda8 on /tmp type ext3 (rw) /dev/sda6 on /usr type ext3 (rw) /dev/sda9 on /var type ext3 (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) -Per essere sicuro di copiare la home senza che venga modificata, mi disconnetto dalla sessione corrente ed eseguo :init 1 (ovvero user singolo). #init 1 -Una volta connesso rido' il su per diventare super-user e rimonto il mount-point. -Copio tutta la home sulla home temporanea preservando gli attributi: #cd /home #cp -Rap * /mnt/myhome -IMPORTANTISSIMO-Do il comando : sync per essere sicuro di committare la scrittura #sync -Verifico di aver copiato tutto nella nuova direttori #ll /mnt/myhome -Smonto la home e la myhome: #umount /mnt/myhome #umount /home -Edito la fstab per far puntare al nuova home, prima salvo la fstab in fstab.sav #cp /etc/fstab /etc/fstab.sav #vim /etc/fstab -Sostituisco: /dev/sda7 /home ext3 defaults 1 2 -Con : /dev/mapper/test_lv-lv_home /home ext3 defaults 1 2 -Attenzione al device che è leggermente diverso dal solito e che si può verificare dal mount precedente. -Esco da user singolo digitando 2 volte exit, e se tutto va bene riparte kde. -Eseguo una chiusura e ripartenza pulita per verificare che non ci siano problemi. -In caso di problemi, non parte kde perchè manca la home, entro con la console e verifico tutto da capo. -Dopo di che faccio gli stessi passi per le altre 3 partizioni, usr, tmp e var, -Per la usr e la var potrei non riuscire a smontarle perchè dichiarate in uso, ed allora posso solo modificare la fstab, verificare con attenzione di non aver fatto errori e riavviare la macchina. -In caso di errori in ripartenza, spengo e riparto con sysrescue,ripristino la fstab.sav e riparto -La cancellazione/riutilizzo delle vecchie partizioni la effettuero solo dopo qualche giorno. -Comandi principali: #pvcreate /dev/hda5 creo il disco fisico #pvcreate /dev/hda1 #pvscan verifico i dischi inseriti in LVM #vgcreate vg_esercizio /dev/hda5 creo il gruppo virtuale dei dischi #pvdisplay #vgdisplay #lvdisplay #vgscan #vgextend vg_esercizio /dev/hda1 (aggiungo un volume) #vgreduce nomegruppo phisicalvolume (tolgo un volume) #vgremove nomegruppo (rimouvo un gruppo) #lvcreate -L20g -n main dati (creo un disco di 20Gb nel vg dati di nome main) #lvcreate -Lsize{m,k,g} nomegruppo #lvdisplay /dev/hda5/main #mkfs.ext3 /dev/hda5/main #lvcreate -L 1G -n lv_appo vg_esercizio (creo appo di 1G) #mkfs.ext3 /dev/vg_esercizio/lv_appo (formatto il file-system) #lvextend -L+5G /dev/vg_esercizio/lv_appo (estendo appo di 5G) #e2fsck -f /dev/vg_backup/lv_backup (check del file-system) #resize2fs -p /dev/vg_backup/lv_backup 100G (necessario prima di lvreduce, lvresize) #resize2fs /dev/vg_esercizio/lv_appo (consigliato dopo lvextend, lvreduce, lvresize) #lvremove /dev/test_lv/lv_tmp (rimuovo un logical group) #vgremove test_lv (rimuovo un volum group) #vgreduce vg_backup /dev/hdc5 (rimuovo un volume dal volum group) #pvremove /dev/hdc5 (rimuovo un disco dal volum group) -I passaggi da seguire sono questi: 1)Inizializzate il phisical volume: Dato un disco fisico (/dev/hde) o una partizione (/dev/hde1) inizializzate il pv con # pvcreate /dev/hde Physical volume "/dev/hde" successfully created 2)Create un volume group che contenga il pv: Questo sara' l'equivalente a un disco virtuale, che andra' poi "partizionato" (con i logical volumes). per esempio: vgcreate dati /dev/hde #Create il logical volume 3)Questo e' l'equivalente della partizione vera e propria che anda' formattato con il filesystem che preferite, il device sara' raggiungibile con /dev/nomegruppo/nomevolume. Dovete scegliere una grandezza per il device (con vgdisplay potete vedere i dettagli del vg nel quale creerete il lv). Volendo potete usare l'opzione -n nomevolume per specificare un nome al lv. Per specificare la dimensione in Kb, Mb, Gb digitate lvcreate -Lsize{m,k,g} nomegruppo (scegliete il suffisso appropriato). Per esempio per creare un disco di 20Gb nel vg dati e dargli nome main: #lvcreate -L20g -n main dati Se volete specificare la dimensione in logical extens dovete invece usare l'opzione -l. 4)Formattare e usare il logical volume Ora potete formattare il device /dev/nomegruppo/nomevolume, per esempio (con ReiserFS): #mkfs.reiserfs /dev/dati/main quindi (una volta creato il mountpoint) mount -t reiserfs /dev/dati/main mountpoint e inserite in /etc/fstab la riga: /dev/dati/main /mnt/dati reiserfs ro,users,auto,umask=0 0 0 6)Ridimensionare un logical volume esistente Per ridimensionare un LV esistente dovete tener conto che ci sono due entita' in gioco: Il logical volume (che come abbiamo più volte ripetuto ha la funzionalia' equivalente di una partizione) e la partizione vera e propria (ReiserFS per esempio) che è contentuta nel LV. Per aumentare il LV dobbiamo prima aggiungere un disco, se necessario, usando i tool del filesystem da noi addottato (non tutti i filesystem consentono un ridimensionamento online, a volte dovremo smontare la partizione), e quindi aumentare, prima il VG, poi LV. Un metodo e' questo, vediamo come aggiungere 20Gb alla partizione /mnt/tempvar del device (LV) /dev/vg_var/lv_var #cat /proc/partitions (vedo i dischi fisici) #mount (vedo disco e mount-point relativo) #umount /mnt/tempvar (smonto mount-point interessato) #pvscan (vedo i dischi in LVM) #pvcreate /dev/hdc7 (inserisco un disco in LVM) #pvscan (verifico) #vgextend vg_var /dev/hdc7 (aggiungo il disco al VG) #pvscan (verifico) #lvextend -L+20G /dev/vg_var/lv_var (incremento di 20G il LV) #pvscan (verifico) #e2fsck -f /dev/vg_var/lv_var (eseguo il check del LV) #pvscan (verifico) #resize2fs -p /dev/vg_var/lv_var (eseguo l'incremento effettivo) #mount /dev/mapper/vg_var-lv_var /mnt/tempvar (rimonto il mount-point) Per rimpicciolire il LV dobbiamo rimpicciolire la partizione usando i tool del filesystem da noi addottato (non tutti i filesystem consentono un ridimensionamento online, a volte dovremo smontare la partizione), e quindi rimpicciolire, prima il file-system e poi il LV. Un metodo e' questo, vediamo come ridimensionare da 130G a 100Gb la partizione /backup del device (LV) /dev/vg_backup/lv_backup: #umount /backup #resize2fs -p /dev/vg_backup/lv_backup 100G (Prima operazione per diminuire,lo resizo a 100G) #resize_reiserfs -s -30Gb /dev/vg_backup/lv_backup (per reiserfs) #lvreduce -L -30G /dev/vg_backup/lv_backup (seconda operazione per diminuire) #e2fsck -f /dev/vg_backup/lv_backup (eseguo il check del LV) #resize2fs -p /dev/vg_backup/lv_backup (terza operazione per consolidare) #vgreduce vg_backup /dev/hdc7 (quarta operazione tolgo un disco) #pvremove /dev/hdc7 (quinta operazione tolgo disco da lvm) Abbiamo prima smontato la partizione backup, per poterla ridimensionare. Poi con "resize2fs" abbiamo ridimensionato la partizione, poi con lvreduce abbiamo rimpicciolito anche il LV che la conteneva. Chiamando "resize2fs" senza parametri (-p serve a visualizzare le fasi di resize) facciamo in modo che la partizione prenda tutto lo spazio del LV (non dovrebbe essere necessario, ma essendo un comando comodo molte altre volte... eccolo!) Gli ultimi due comandi, vgreduce e pvremove li utilizzo se voglio togliere anche il disco da LVM ******************* Log Seconda fase [web@localhost log]$ [web@localhost log]$ su Password: [root@localhost log]# mc [root@localhost log]# cat /proc/partitions major minor #blocks name 3 0 160086528 hda 3 1 112993146 hda1 3 2 1 hda2 3 5 47086483 hda5 8 0 53320704 sda 8 1 4088479 sda1 8 2 1 sda2 8 5 4088479 sda5 8 6 42781315 sda6 252 0 6291456 dm-0 252 1 5242880 dm-1 252 2 5242880 dm-2 252 3 5242880 dm-3 252 4 2097152 dm-4 [root@localhost log]# pvcreate /dev/sda6 File descriptor 3 left open Physical volume "/dev/sda6" successfully created [root@localhost log]# pvscan File descriptor 3 left open PV /dev/hda5 VG test_lv lvm2 [44,90 GB / 21,90 GB free] Total: 1 [44,90 GB] / in use: 1 [44,90 GB] / in no VG: 0 [0 ] [root@localhost log]# vgcreate vg_esercizio /dev/sda6 File descriptor 3 left open Volume group "vg_esercizio" successfully created [root@localhost log]# pvscan File descriptor 3 left open PV /dev/sda6 VG vg_esercizio lvm2 [40,80 GB / 40,80 GB free] PV /dev/hda5 VG test_lv lvm2 [44,90 GB / 21,90 GB free] Total: 2 [85,70 GB] / in use: 2 [85,70 GB] / in no VG: 0 [0 ] [root@localhost log]# df Filesystem Dimens. Usati Disp. Uso% Montato su /dev/sda1 3,9G 110M 3,6G 3% / /dev/mapper/test_lv-lv_home 5,0G 145M 4,6G 4% /home /dev/mapper/test_lv-lv_tmp 2,0G 68M 1,9G 4% /tmp /dev/mapper/test_lv-lv_usr 5,0G 2,1G 2,7G 44% /usr /dev/mapper/test_lv-lv_var 5,0G 2,7G 2,1G 57% /var [root@localhost log]# lvcreate -L 5G -n lv_home vg_esercizio File descriptor 3 left open Logical volume "lv_home" created [root@localhost log]# lvcreate -L 2G -n lv_tmp vg_esercizio File descriptor 3 left open Logical volume "lv_tmp" created [root@localhost log]# lvcreate -L 5G -n lv_usr vg_esercizio File descriptor 3 left open Logical volume "lv_usr" created [root@localhost log]# lvcreate -L 15G -n lv_var vg_esercizio File descriptor 3 left open Logical volume "lv_var" created [root@localhost log]# mkfs.ext3 /dev/vg_esercizio/lv_home mke2fs 1.39 (29-May-2006) Etichetta del filesystem= Tipo SO: Linux Dimensione blocco=4096 (log=2) Dimensione frammento=4096 (log=2) 655360 inode, 1310720 blocchi 65536 blocchi (5.00%) riservati per l'utente root Primo blocco dati=0 Maximum filesystem blocks=1342177280 40 gruppi di blocchi 32768 blocchi per gruppo, 32768 frammenti per gruppo 16384 inode per gruppo Backup del superblocco salvati nei blocchi: 32768, 98304, 163840, 229376, 294912, 819200, 884736 Scrittura delle tavole degli inode: fatto Creazione del journal (32768 blocchi): fatto Scrittura delle informazioni dei superblocchi e dell'accounting del filesystem: fatto Questo filesystem verrà automaticamente controllato ogni 38 mount, o 180 giorni, a seconda di quale venga prima. Usare tune2fs -c o -i per cambiare. [root@localhost log]# mkfs.ext3 /dev/vg_esercizio/lv_tmp mke2fs 1.39 (29-May-2006) Etichetta del filesystem= Tipo SO: Linux Dimensione blocco=4096 (log=2) Dimensione frammento=4096 (log=2) 262144 inode, 524288 blocchi 26214 blocchi (5.00%) riservati per l'utente root Primo blocco dati=0 Maximum filesystem blocks=536870912 16 gruppi di blocchi 32768 blocchi per gruppo, 32768 frammenti per gruppo 16384 inode per gruppo Backup del superblocco salvati nei blocchi: 32768, 98304, 163840, 229376, 294912 Scrittura delle tavole degli inode: fatto Creazione del journal (16384 blocchi): fatto Scrittura delle informazioni dei superblocchi e dell'accounting del filesystem: fatto Questo filesystem verrà automaticamente controllato ogni 22 mount, o 180 giorni, a seconda di quale venga prima. Usare tune2fs -c o -i per cambiare. [root@localhost log]# mkfs.ext3 /dev/vg_esercizio/lv_usr mke2fs 1.39 (29-May-2006) Etichetta del filesystem= Tipo SO: Linux Dimensione blocco=4096 (log=2) Dimensione frammento=4096 (log=2) 655360 inode, 1310720 blocchi 65536 blocchi (5.00%) riservati per l'utente root Primo blocco dati=0 Maximum filesystem blocks=1342177280 40 gruppi di blocchi 32768 blocchi per gruppo, 32768 frammenti per gruppo 16384 inode per gruppo Backup del superblocco salvati nei blocchi: 32768, 98304, 163840, 229376, 294912, 819200, 884736 Scrittura delle tavole degli inode: fatto Creazione del journal (32768 blocchi): fatto Scrittura delle informazioni dei superblocchi e dell'accounting del filesystem: fatto Questo filesystem verrà automaticamente controllato ogni 21 mount, o 180 giorni, a seconda di quale venga prima. Usare tune2fs -c o -i per cambiare. [root@localhost log]# mkfs.ext3 /dev/vg_esercizio/lv_var mke2fs 1.39 (29-May-2006) Etichetta del filesystem= Tipo SO: Linux Dimensione blocco=4096 (log=2) Dimensione frammento=4096 (log=2) 1966080 inode, 3932160 blocchi 196608 blocchi (5.00%) riservati per l'utente root Primo blocco dati=0 Maximum filesystem blocks=4026531840 120 gruppi di blocchi 32768 blocchi per gruppo, 32768 frammenti per gruppo 16384 inode per gruppo Backup del superblocco salvati nei blocchi: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208 Scrittura delle tavole degli inode: fatto Creazione del journal (32768 blocchi): fatto Scrittura delle informazioni dei superblocchi e dell'accounting del filesystem: fatto Questo filesystem verrà automaticamente controllato ogni 30 mount, o 180 giorni, a seconda di quale venga prima. Usare tune2fs -c o -i per cambiare. [root@localhost log]# df Filesystem Dimens. Usati Disp. Uso% Montato su /dev/sda1 3,9G 110M 3,6G 3% / /dev/mapper/test_lv-lv_home 5,0G 145M 4,6G 4% /home /dev/mapper/test_lv-lv_tmp 2,0G 68M 1,9G 4% /tmp /dev/mapper/test_lv-lv_usr 5,0G 2,1G 2,7G 44% /usr /dev/mapper/test_lv-lv_var 5,0G 2,7G 2,1G 57% /var [root@localhost log]# vgdisplay File descriptor 3 left open --- Volume group --- VG Name vg_esercizio System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 5 VG Access read/write VG Status resizable MAX LV 0 Cur LV 4 Open LV 0 Max PV 0 Cur PV 1 Act PV 1 VG Size 40,80 GB PE Size 4,00 MB Total PE 10444 Alloc PE / Size 6912 / 27,00 GB Free PE / Size 3532 / 13,80 GB VG UUID R2E0ds-Zqnr-t8DI-Do8Y-x3jI-m5SZ-yuFTle --- Volume group --- VG Name test_lv System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 15 VG Access read/write VG Status resizable MAX LV 0 Cur LV 5 Open LV 4 Max PV 0 Cur PV 1 Act PV 1 VG Size 44,90 GB PE Size 4,00 MB Total PE 11495 Alloc PE / Size 5888 / 23,00 GB Free PE / Size 5607 / 21,90 GB VG UUID n9tZ7p-MX1a-cdiU-7eEY-ENFN-UiAg-igIeuj [root@localhost log]init 1 ******************* Guida reperita in rete :http://openskills.info/infobox.php?ID=867 Migrazione di un file system esistente verso LVM Il modo migliore per vedere come funziona LVM è metterlo in pratica, possibilmente su un computer di prova che può essere sacrificato per i nostri esperimenti. Vediamo qui la procedura adottata per migrare su un sistema RedHat Linux 8 la directory /home da una normale partizione fisica ad una partizione basata su LVM. Quanto riportato può essere utile, oltre che per avere un'idea dei pochi comandi necessari, per tutti i casi in cui non si è usato LVM durante l'installazione e si decide di implementarlo in tempi successivi. [root@89 /]# cat /proc/partitions Visualizziamo innanzitutto quali partizioni sono presenti sui dischi collegati al sistema. Si nota hda variamente partizionato e hdc e hdd senza partizioni major minor #blocks name rio rmerge rsect ruse wio wmerge wsect wuse running use aveq 22 0 3528000 hdc 6 6 24 30 1 3 8 0 0 30 30 22 64 2481696 hdd 1 3 8 10 0 0 0 0 0 10 10 3 0 4224150 hda 14048 39349 183186 149870 4952 10187 82764 480080 0 119420 639100 3 1 104391 hda1 31 80 222 580 17 8 50 4460 0 3180 5040 3 2 2072385 hda2 6159 3376 75626 60190 1231 3020 34880 188820 0 69350 257130 3 3 522112 hda3 7193 32990 80366 46130 1525 5005 13210 220250 0 53150 267410 3 4 1 hda4 0 0 0 0 0 0 0 0 0 0 0 3 5 755023 hda5 23 97 306 290 11 5 104 2910 0 3200 3200 3 6 570276 hda6 629 2769 26530 42520 2168 2149 34520 63640 0 22540 106160 3 7 192748 hda7 9 25 104 100 0 0 0 0 0 100 100 [root@89 /]# mount Di fatto tutto il sistema è montato su partizioni di hda /dev/hda3 on / type ext3 (rw) none on /proc type proc (rw) /dev/hda1 on /boot type ext3 (rw) none on /dev/pts type devpts (rw,gid=5,mode=620) /dev/hda5 on /home type ext3 (rw) none on /dev/shm type tmpfs (rw) /dev/hda2 on /usr type ext3 (rw) /dev/hda6 on /var type ext3 (rw) A questo punto decidiamo di creare dei fisical device usando hdc e hdd [root@89 /]# pvcreate /dev/hdc pvcreate -- physical volume "/dev/hdc" successfully created [root@89 /]# pvcreate /dev/hdd pvcreate -- physical volume "/dev/hdd" successfully created [root@89 /]# pvscan Il comando pvscan è utile per visualizzare lo stato dei PV pvscan -- reading all physical volumes (this may take a while...) pvscan -- inactive PV "/dev/hdc" is in no VG [3.36 GB] pvscan -- inactive PV "/dev/hdd" is in no VG [2.37 GB] pvscan -- total: 2 [5.73 GB] / in use: 0 [0] / in no VG: 2 [5.73 GB] Possiamo creare un Volume Group, utilizzando i PV appena creati. Notare che avremmo potuto usare un unico comando (vgcreate /dev/hdc /dev/hdd) ma abbiamo preferito provare ad estendere il gruppo (chiamato "grumo") appena creato con il comando vgextend [root@89 /]# vgcreate grumo /dev/hdc vgcreate -- INFO: using default physical extent size 4 MB vgcreate -- INFO: maximum logical volume size is 255.99 Gigabyte vgcreate -- doing automatic backup of volume group "grumo" vgcreate -- volume group "grumo" successfully created and activated [root@89 /]# vgdisplay Comando utile per visualizzare lo stato di un Volume Group, notare come cambia l'output dopo aver aggiunto il PD hdd --- Volume group --- VG Name grumo VG Access read/write VG Status available/resizable VG # 0 MAX LV 256 Cur LV 0 Open LV 0 MAX LV Size 255.99 GB Max PV 256 Cur PV 1 Act PV 1 VG Size 3.36 GB PE Size 4 MB Total PE 860 Alloc PE / Size 0 / 0 Free PE / Size 860 / 3.36 GB VG UUID 49Urj3-lrwC-3S3k-pF7p-NZ71-1bGg-44QOeF [root@89 /]# vgextend grumo /dev/hdd vgextend -- INFO: maximum logical volume size is 255.99 Gigabyte vgextend -- doing automatic backup of volume group "grumo" vgextend -- volume group "grumo" successfully extended [root@89 /]# vgdisplay --- Volume group --- VG Name grumo VG Access read/write VG Status available/resizable VG # 0 MAX LV 256 Cur LV 0 Open LV 0 MAX LV Size 255.99 GB Max PV 256 Cur PV 2 Act PV 2 VG Size 5.72 GB PE Size 4 MB Total PE 1464 Alloc PE / Size 0 / 0 Free PE / Size 1464 / 5.72 GB VG UUID 49Urj3-lrwC-3S3k-pF7p-NZ71-1bGg-44QOeF A questo punto possiamo creare un Logical Volume. Decidiamo di farlo grande 1 Gigabyte (-L 1G) e di chiamarlo "casa". Con il comando lvdisplay se ne visualizzano le informazioni di base. Notare che con il comando lvcreate è obbligatorio speficicare il Volume Group in cui crearlo e la dimensione del Logcial Volume (tramite i flag -l o -L). [root@89 /]# lvcreate -L 1G -n casa grumo [root@89 /]# lvdisplay /dev/grumo/casa --- Logical volume --- LV Name /dev/grumo/casa VG Name grumo LV Write Access read/write LV Status available LV # 1 # open 0 LV Size 1 GB Current LE 256 Allocated LE 256 Allocation next free Read ahead sectors 1024 Block device 58:0 Il nostro Logical Volume /dev/grumo/casa è a tutti gli effetti un device a blocchi che possiamo formattare e montare su una directory del nostro filesystem [root@89 /]# mkfs.ext3 /dev/grumo/casa [...] [root@89 /]# mkdir /mnt/casa [root@89 /]# mount -t ext3 /dev/grumo/casa /mnt/casa/ [root@89 /]# mount [...] /dev/hda6 on /var type ext3 (rw) /dev/grumo/casa on /mnt/casa type ext3 (rw) Ne approfittiamo per vedere come appare il modulo LVM [root@89 /]# lsmod Module Size Used by Not tainted loop 11224 0 (autoclean) lvm-mod 61792 3 autofs 12228 0 (autoclean) (unused) ne2k-pci 6752 1 8390 7884 0 [ne2k-pci] ipt_REJECT 3448 6 (autoclean) iptable_filter 2316 1 (autoclean) ip_tables 14456 2 [ipt_REJECT iptable_filter] ext3 64160 6 jbd 48180 6 [ext3] A questo punto copiamo tutto il contenuto della /home attuale sul LV appena creato e montato temporaneamente su /mnt/casa [root@89 /]# cp -Ra /home/* /mnt/casa/ Per montare stabilmente la nostra home sul LV dobbiamo modificare /etc/fstab [root@89 /]# cat /etc/fstab LABEL=/ / ext3 defaults 1 1 LABEL=/boot /boot ext3 defaults 1 2 none /dev/pts devpts gid=5,mode=620 0 0 LABEL=/home /home ext3 defaults 1 2 none /proc proc defaults 0 0 none /dev/shm tmpfs defaults 0 0 LABEL=/usr /usr ext3 defaults 1 2 LABEL=/var /var ext3 defaults 1 2 /dev/hda7 swap swap defaults 0 0 /dev/cdrom /mnt/cdrom iso9660 noauto,owner,kudzu,ro 0 0 /dev/fd0 /mnt/floppy auto noauto,owner,kudzu 0 0 In particolare modifichiamo il device da montare su /home: /dev/grumo/casa /home ext3 defaults 1 2 A questo punto possiamo smontare la vecchia home, la directory temporanea /mnt/casa e rimontare home con il nuovo /etc/fstab modificato [root@89 /]# umount /mnt/casa/ [root@89 /]# umount /home/ [root@89 /]# mount /home/ Tutto fin'ora è filato liscio, le operazione di creazione e gestione di LVM sono state piuttosto facili, la migrazione della home è stata rapida perchè coinvolgeva pochi file in produzione, con maggiori quantita' di dati da spostare, ci sarebbero stati sicuramente tempi e complicazioni maggiori (avremmo fatto una prima copia di tutti i file e poi una rapida sincronizzazione con rsync appena prima di smontare e rimontare il tutto. L'operazione sarebbe stata comunque resa più difficoltosa se ci fossero stati vari utenti locali a lavorare su /home e avrebbe potuto comportare un disservizio forzato di alcuni minuti) Tutto a posto? Non esattamente. Abbiamo eseguito il reboot del sistema (sempre consigliabile farlo subito, quando si fanno simili cambiamenti radicali, per essere sicuri che tutto si ripristini senza problemi) e inesorabilmente si è tutto bloccato lasciandoci in mantenance mode: - Il kernel ha dato un messaggio di errore tipo "kmod: failed to exec /sbin/modprobe -s -k block-major-8, errno = 2 - Al momento di eseguito il mount dei file system, il sistema si è bloccato non riuscendo a trovare il mount point per /home (di fatto non trovando il nostro Logical Volume /dev/grumo/casa) L'HowTo e la logica ci hanno fatto capire che il problema stava nel mancato caricamento automatico del modulo LVM (non ci sarebbero stati problemi se avessimo avuto un kernel con il supporto LVM direttamente compilato nel core). Abbiamo provato inizialmente a modificare /etc/modules.conf aggiungendo la riga: alias block-major 8 lvm-mod ma senza risultati. Allora senza ulteriori indugi, e in modo non particolarmente elegante, ma comunque efficace, abbiamo aggiunto all'INIZIO di /etc/rc.d/rc.sysinit (il primo script che viene eseguito da init sui sistemi Redhat) il caricamente manuale del modulo: /sbin/insmod lvm-mod e il tutto ha finalmente funzionato. Notare che se non ci fossimo presi la briga di provare subito un reboot, avremmo avuto maggiori problemi al prossimo avvio, senza magari ricordare gli interventi fatti o avere la possibilita' di intervenire immediatamente.