際際滷

際際滷Share a Scribd company logo
www.lugroma3.org




                      LVM
      Logical Volume Manager



Alessandro Manfredi
LVM - Agenda
   A che serve ?
   Come funziona ?
   Quale versione ?
   Lo voglio, dove devo firmare ?
   Forte! Ora ho un nuovo attrezzo ...
                            ... come si usa ?
LVM : Features overview
          Logical Volume Manager 
 Permette di gestire gli apparati di storage ad un livello
  di astrazione pi湛 alto rispetto alla classica visione di
  dischi e partizioni.
 Consente ampia flessibilit nell'allocazione dello
  spazio disponibile ad applicazioni ed utenti.
 Permette di ridefinire le dimensioni dei volumi creati e
  di spostarne la persistenza attraverso i dispositivi di
  storage gestiti.
 Consente la gestione dei volumi in gruppi definiti
  dall'utente.
Vantaggi concreti
Su piccoli sistemi :
 Possibilit di ridimensionare le partizioni dedicate agli
  applicativi o ai dati a seconda delle necessit.
 Possibilit di aggiungere o rimuovere apparati di storage
  senza necessit di modifiche al sistema.


Su sistemi enterprise :
 Amministrazione e mantenimento semplificati
 Associazione gruppi_utenti  gruppi_volumi
 Continuit dei servizi
 Snapshots
Anatomia
Anatomia - 2




LVM Esegue il mapping tra LE e PE
 Linear Mapping
 Striped Mapping : distribuisce frammenti di LE sequenzialmente
  nei vari PV, al fine di aumentare le performance del LV. *
Snapshots
Uno snapshot 竪 un'istantanea di un LV ottenuta
memorizzando i cambiamenti del LV rispetto allo
snapshot e viceversa.

Gli snapshot possono essere montati ( e in LVM2
modificati ) come normali LV.

La dimensione degli snapshot dipende dai
cambiamenti al LV o allo snapshot stesso nel suo
tempo di vita : per tempi relativamente brevi 竪 molto
inferiore alla dimensione del LV originale.
Snapshots - 2
                            Vantaggi
 Ottenere un backup consistente e di dimensioni ridotte, senza
necessit di interruzione dei servizi.
 Possibilit di testare software che modifica il filesystem per poi
ripristinare il volume originale, senza bisogno di allocare uno
spazio equivalente al volume.


                          Accortezze
 Applicabile solo a LV, non a partizioni classiche.
 Lo snapshot richiede uno spazio allocato proporzionale al suo
tempo di vita ( al pi湛 di dimensioni uguali al LV ).
Quale versione ?
                             LVM2
 Retrocompatibile ( a meno degli snapshot LVM1 )
 Usa il device mapper kernel driver incluso nei kernel 2.6.x


                      ( ma esiste una patch per i kernel 2.4.x )
 Snapshot read / write



                             LVM1
 Usa il device mapper dei kernel 2.4.x
 Snapshot read-only


 Considerato un progetto maturo
Setting up  Device Mapper
 Device mapper come modulo o incluso nel kernel
        > per LVM2 e kernel >= 2.6.9 dovrebbe essere presente
                ( check /proc/misc, /proc/devices, /sys/class/misc )
          se compilato come modulo #modprobe dm_mod
                          ( more at http://sources.redhat.com/dm/ )
        > per LVM1 e kernel 2.6.x occorre una patch del kernel
        > per LVM1 e kernel 2.4.x assicurarsi di avere l'ultima
          patch per il kernel per LVM1 e di compilare il supporto
          Multi-device support (RAID and LVM) > LVM
!!! L'uso di Snapshot di LV con fs ReiserFS richiede la patch
linux-2.4.x-VFS-lock presente in LVM/1.0.8/PATCHES
Setting up  LVM1 Boot time script
Debian - /etc/init.d/lvm
     #!/bin/sh
     case "$1" in
      start)
               /sbin/vgscan
               /sbin/vgchange -ay ;;
      stop)
               /sbin/vgchange -an ;;
      restart|force-reload) ;;
     esac
     exit 0
Setting up  LVM1 Boot time script
Red hat
L'rpm installa lo script di avvio.
Tuttavia se LVM viene compilato come modulo si dovr
aggiungere
modprobe lvm-mod
in /etc/rc.d/rc.sysinit prima dell'attivazione dei LV
Setting up  LVM2 Boot time script
mkinitrd delle distro moderne dovrebbe essere
 configurato per far attivare tutti i LV all'avvio.

   Se cos狸 non dovesse essere aggiungere
                manualmente
    dmsetup mknodes
    vgscan --ignorelockingfailure
    vgchange -ay ignorelockingfailure
Setting up  LVM Tools & Libs
 Utilizzare il packet manager della distro per
  installare LVM Tools e LVM Libraries
... oppure
 Scaricare i sorgenti
     tar -xzvf lvm-tools-and-libraries.tar.gz
     ./configure --help
     ./configure
     make
     make install
     make remove
LVM  Common tasks overview
 # pvcreate /dev/devname
      crea un PV descriptor all'inizio di devname
 # vgcreate [-s ES] vg_name /dev/deva1 /dev/devb1
      crea un VG ed associa i dev come PV
 # vgchange -ay vg_name
      attiva il VG e tutti i suoi LV
 # vgchange -an vg_name
      disattiva il VG e tutti i suoi LV
 # vgremove vg_name
      rimuove il VG
LVM  Common tasks overview - 2
 # vgextend vg_name /dev/devc1
      estende il VG aggiungendo il PV
      ( NB: il PV deve essere inizializzato!)
 # pvdisplay /dev/deva1
      visualizza informazioni sul PV
 # vgdisplay /dev/deva1
      visualizza informazioni sul PV
 # vgreduce vg_name /dev/deva1
      riduce il VG rimuovendo il PV
LVM  Common tasks overview - 3
 # lvcreate -L1500 -n lv_name vg_name
       crea un LV di 1500MB lv_name nel VG vg_name
 # lvcreate -i2 -I4 -l100 -n lv_name vg_name
       crea un LV di 100 LE con 2 stripe di grandezza 4kb
 # lvcreate -l $( vgdisplay vg_name | grep "Total PE"
    | awk '{print $2}') vg_name -n lv_name
       crea un LV della dimensione del VG
 # lvcreate -n lv_name vg_name /dev/devb1
       crea un LV mappando le LE nelle PE del devb1
LVM  Common tasks overview - 4
 # lvremove /dev/vg_name/lv_name
       rimuove il LV ( NB: Deve essere smontato! )
 # lvextend -L40G /dev/vg_name/lv_name
       estende il LV alla dimensione specificata
 # lvextend -L+4G /dev/vg_name/lv_name
       estende il LV della dimensione specificata.
       E' necessario estendere il fs dopo l'estensione del LV
      ext2/ext3    # resize2fs /dev/vg_name/lv_name              (*)
      reiserfs     # resize_reiserfs -f /dev/vg_name/lv_name
      xfs          # xfs_growfs /mpoint
      jfs          # mount -o remount,resize=<fs_blocksize> /mpoint
LVM  Common tasks overview - 5
 # lvreduce -L-4G /dev/vg_name/lv_name
       riduce il LV della dimensione specificata.
       E' necessario ridurre il fs prima della riduzione del LV
      ext2/ext3    # resize2fs /dev/vg_name/lv_name <vbsize>       (*)
      reiserfs     # resize_reiserfs -s -4G /dev/vg_name/lv_name
      xfs          no-way to reduce xfs fs
      jfs          no-way to reduce jfs fs
 # lvcreate -L512M -s -n snap_name /dev/vg/lv_name
       crea uno snapshot del LV assegnandogli 512 Mb del VG
       Se la persistenza delle differenze tra lo snapshot ed il LV
       supera lo spazio allocato, lo snapshot viene disabilitato.
Cose a cui prestare attenzione
La partizione di avvio contenete l'immagine del kernel non pu嘆
                       essere su un LV !

  Un filesystem root su un LV richiede un initrd che attivi i LV
            altrimenti il fs non pu嘆 essere montato !
                ( see lvmcreate_initrd for LVM1 )
    Creare un PV su un intero disco non partizionato 竪
 sconsigliato in quanto altri sistemi rilevano il disco come non
                              utilizzato !
Ma se proprio ci tenete almeno prima distruggete la tabella delle partizioni:
# dd if=/dev/zero of=/dev/diskname bs=1k count=1
# blockdev --rereadpt /dev/diskname
Cose a cui prestare attenzione - 2
  Sistemi running LVM1 con devfs richiedono di specificare il
                  percorso completo dei dev
 # vgcreate vg_name /dev/ide/host0/bus0/target0/lun0/part1 ...

E' sconsigliato creare PVs su pi湛 partizioni dello stesso disco: in
      caso di striped mapping le prestazioni diminuiscono
                         notevolmente !
   LVM1 su partizioni DOS richiede che il tipo di partizione sia
               impostato a 0x8e ( fdisk o simili ... )

Prima di rimuovere un PV da un VG occorre spostare tutte le PE
             che il PV ospita sugli alri Pvs del VG !
LVM  Common tasks overview - 6
 # pvmove /dev/devname
      distribuisce tutte le PE allocate sul device, sugli altri PV
      dello stesso VG sec'竪 abastanza spazio.
      Se non c'竪 abbastanza spazio ...
      # pvcreate /dev/otherdisk
      # vgextend vg_name /dev/otherdisk
      # pvmove /dev/devname /dev/otherdisk                      (*)
      # vgreduce vg_name /dev/devname


 # vgsplit vg_name another_vg /dev/sdb2
      combina vgreduce e vgcreate
An useful tool : vgexport / vgimport
                       Scenario : sostituzione di una macchina server
[admin@old_machine] # unmount /mnt/design/users
[admin@old_machine] # vgchange -an design
                      vgchange -- volume group "design" successfully deactivated
[admin@old_machine] # vgexport design
                      vgexport -- volume group "design" successfully exported
[admin@new_machine] # pvscan
                       pvscan -- reading all physical volumes (this may take a while...)
                       pvscan -- inactive PV "/dev/sdb1" is in EXPORTED VG "design" [996 MB / 996 MB free]
                       pvscan -- inactive PV "/dev/sdb2" is in EXPORTED VG "design" [996 MB / 244 MB free]
                       pvscan -- total: 2 [1.95 GB] / in use: 2 [1.95 GB] / in no VG: 0 [0]
[admin@new_machine] # vgimport design
                       Volume group "vg" successfully imported
[admin@new_machine] # vgchange -ay design
[admin@new_machine] # mkdir -p /mnt/design/users
[admin@new_machine] # mount /dev/design/users /mnt/design/users
Domande ?
?(e risposte)
Online References
LVM Howto @ Linux.org
               http://www.linux.org/docs/ldp/howto/LVM-HOWTO/
Logic Volume Managemente  Wikipedia
       http://en.wikipedia.org/wiki/Logical_volume_management
Logic Volume Manager ( Linux ) - Wikipedia
           http://en.wikipedia.org/wiki/Logical_Volume_Manager
Red Hat LVM1 / LVM2 Resource Page
                                    http://sources.redhat.com/lvm/
                                   http://sources.redhat.com/lvm2/
Red Hat Device Mapper resource Page
                                     http://sources.redhat.com/dm/

More Related Content

LUG - Logical volumes management

  • 1. www.lugroma3.org LVM Logical Volume Manager Alessandro Manfredi
  • 2. LVM - Agenda A che serve ? Come funziona ? Quale versione ? Lo voglio, dove devo firmare ? Forte! Ora ho un nuovo attrezzo ... ... come si usa ?
  • 3. LVM : Features overview Logical Volume Manager Permette di gestire gli apparati di storage ad un livello di astrazione pi湛 alto rispetto alla classica visione di dischi e partizioni. Consente ampia flessibilit nell'allocazione dello spazio disponibile ad applicazioni ed utenti. Permette di ridefinire le dimensioni dei volumi creati e di spostarne la persistenza attraverso i dispositivi di storage gestiti. Consente la gestione dei volumi in gruppi definiti dall'utente.
  • 4. Vantaggi concreti Su piccoli sistemi : Possibilit di ridimensionare le partizioni dedicate agli applicativi o ai dati a seconda delle necessit. Possibilit di aggiungere o rimuovere apparati di storage senza necessit di modifiche al sistema. Su sistemi enterprise : Amministrazione e mantenimento semplificati Associazione gruppi_utenti gruppi_volumi Continuit dei servizi Snapshots
  • 6. Anatomia - 2 LVM Esegue il mapping tra LE e PE Linear Mapping Striped Mapping : distribuisce frammenti di LE sequenzialmente nei vari PV, al fine di aumentare le performance del LV. *
  • 7. Snapshots Uno snapshot 竪 un'istantanea di un LV ottenuta memorizzando i cambiamenti del LV rispetto allo snapshot e viceversa. Gli snapshot possono essere montati ( e in LVM2 modificati ) come normali LV. La dimensione degli snapshot dipende dai cambiamenti al LV o allo snapshot stesso nel suo tempo di vita : per tempi relativamente brevi 竪 molto inferiore alla dimensione del LV originale.
  • 8. Snapshots - 2 Vantaggi Ottenere un backup consistente e di dimensioni ridotte, senza necessit di interruzione dei servizi. Possibilit di testare software che modifica il filesystem per poi ripristinare il volume originale, senza bisogno di allocare uno spazio equivalente al volume. Accortezze Applicabile solo a LV, non a partizioni classiche. Lo snapshot richiede uno spazio allocato proporzionale al suo tempo di vita ( al pi湛 di dimensioni uguali al LV ).
  • 9. Quale versione ? LVM2 Retrocompatibile ( a meno degli snapshot LVM1 ) Usa il device mapper kernel driver incluso nei kernel 2.6.x ( ma esiste una patch per i kernel 2.4.x ) Snapshot read / write LVM1 Usa il device mapper dei kernel 2.4.x Snapshot read-only Considerato un progetto maturo
  • 10. Setting up Device Mapper Device mapper come modulo o incluso nel kernel > per LVM2 e kernel >= 2.6.9 dovrebbe essere presente ( check /proc/misc, /proc/devices, /sys/class/misc ) se compilato come modulo #modprobe dm_mod ( more at http://sources.redhat.com/dm/ ) > per LVM1 e kernel 2.6.x occorre una patch del kernel > per LVM1 e kernel 2.4.x assicurarsi di avere l'ultima patch per il kernel per LVM1 e di compilare il supporto Multi-device support (RAID and LVM) > LVM !!! L'uso di Snapshot di LV con fs ReiserFS richiede la patch linux-2.4.x-VFS-lock presente in LVM/1.0.8/PATCHES
  • 11. Setting up LVM1 Boot time script Debian - /etc/init.d/lvm #!/bin/sh case "$1" in start) /sbin/vgscan /sbin/vgchange -ay ;; stop) /sbin/vgchange -an ;; restart|force-reload) ;; esac exit 0
  • 12. Setting up LVM1 Boot time script Red hat L'rpm installa lo script di avvio. Tuttavia se LVM viene compilato come modulo si dovr aggiungere modprobe lvm-mod in /etc/rc.d/rc.sysinit prima dell'attivazione dei LV
  • 13. Setting up LVM2 Boot time script mkinitrd delle distro moderne dovrebbe essere configurato per far attivare tutti i LV all'avvio. Se cos狸 non dovesse essere aggiungere manualmente dmsetup mknodes vgscan --ignorelockingfailure vgchange -ay ignorelockingfailure
  • 14. Setting up LVM Tools & Libs Utilizzare il packet manager della distro per installare LVM Tools e LVM Libraries ... oppure Scaricare i sorgenti tar -xzvf lvm-tools-and-libraries.tar.gz ./configure --help ./configure make make install make remove
  • 15. LVM Common tasks overview # pvcreate /dev/devname crea un PV descriptor all'inizio di devname # vgcreate [-s ES] vg_name /dev/deva1 /dev/devb1 crea un VG ed associa i dev come PV # vgchange -ay vg_name attiva il VG e tutti i suoi LV # vgchange -an vg_name disattiva il VG e tutti i suoi LV # vgremove vg_name rimuove il VG
  • 16. LVM Common tasks overview - 2 # vgextend vg_name /dev/devc1 estende il VG aggiungendo il PV ( NB: il PV deve essere inizializzato!) # pvdisplay /dev/deva1 visualizza informazioni sul PV # vgdisplay /dev/deva1 visualizza informazioni sul PV # vgreduce vg_name /dev/deva1 riduce il VG rimuovendo il PV
  • 17. LVM Common tasks overview - 3 # lvcreate -L1500 -n lv_name vg_name crea un LV di 1500MB lv_name nel VG vg_name # lvcreate -i2 -I4 -l100 -n lv_name vg_name crea un LV di 100 LE con 2 stripe di grandezza 4kb # lvcreate -l $( vgdisplay vg_name | grep "Total PE" | awk '{print $2}') vg_name -n lv_name crea un LV della dimensione del VG # lvcreate -n lv_name vg_name /dev/devb1 crea un LV mappando le LE nelle PE del devb1
  • 18. LVM Common tasks overview - 4 # lvremove /dev/vg_name/lv_name rimuove il LV ( NB: Deve essere smontato! ) # lvextend -L40G /dev/vg_name/lv_name estende il LV alla dimensione specificata # lvextend -L+4G /dev/vg_name/lv_name estende il LV della dimensione specificata. E' necessario estendere il fs dopo l'estensione del LV ext2/ext3 # resize2fs /dev/vg_name/lv_name (*) reiserfs # resize_reiserfs -f /dev/vg_name/lv_name xfs # xfs_growfs /mpoint jfs # mount -o remount,resize=<fs_blocksize> /mpoint
  • 19. LVM Common tasks overview - 5 # lvreduce -L-4G /dev/vg_name/lv_name riduce il LV della dimensione specificata. E' necessario ridurre il fs prima della riduzione del LV ext2/ext3 # resize2fs /dev/vg_name/lv_name <vbsize> (*) reiserfs # resize_reiserfs -s -4G /dev/vg_name/lv_name xfs no-way to reduce xfs fs jfs no-way to reduce jfs fs # lvcreate -L512M -s -n snap_name /dev/vg/lv_name crea uno snapshot del LV assegnandogli 512 Mb del VG Se la persistenza delle differenze tra lo snapshot ed il LV supera lo spazio allocato, lo snapshot viene disabilitato.
  • 20. Cose a cui prestare attenzione La partizione di avvio contenete l'immagine del kernel non pu嘆 essere su un LV ! Un filesystem root su un LV richiede un initrd che attivi i LV altrimenti il fs non pu嘆 essere montato ! ( see lvmcreate_initrd for LVM1 ) Creare un PV su un intero disco non partizionato 竪 sconsigliato in quanto altri sistemi rilevano il disco come non utilizzato ! Ma se proprio ci tenete almeno prima distruggete la tabella delle partizioni: # dd if=/dev/zero of=/dev/diskname bs=1k count=1 # blockdev --rereadpt /dev/diskname
  • 21. Cose a cui prestare attenzione - 2 Sistemi running LVM1 con devfs richiedono di specificare il percorso completo dei dev # vgcreate vg_name /dev/ide/host0/bus0/target0/lun0/part1 ... E' sconsigliato creare PVs su pi湛 partizioni dello stesso disco: in caso di striped mapping le prestazioni diminuiscono notevolmente ! LVM1 su partizioni DOS richiede che il tipo di partizione sia impostato a 0x8e ( fdisk o simili ... ) Prima di rimuovere un PV da un VG occorre spostare tutte le PE che il PV ospita sugli alri Pvs del VG !
  • 22. LVM Common tasks overview - 6 # pvmove /dev/devname distribuisce tutte le PE allocate sul device, sugli altri PV dello stesso VG sec'竪 abastanza spazio. Se non c'竪 abbastanza spazio ... # pvcreate /dev/otherdisk # vgextend vg_name /dev/otherdisk # pvmove /dev/devname /dev/otherdisk (*) # vgreduce vg_name /dev/devname # vgsplit vg_name another_vg /dev/sdb2 combina vgreduce e vgcreate
  • 23. An useful tool : vgexport / vgimport Scenario : sostituzione di una macchina server [admin@old_machine] # unmount /mnt/design/users [admin@old_machine] # vgchange -an design vgchange -- volume group "design" successfully deactivated [admin@old_machine] # vgexport design vgexport -- volume group "design" successfully exported [admin@new_machine] # pvscan pvscan -- reading all physical volumes (this may take a while...) pvscan -- inactive PV "/dev/sdb1" is in EXPORTED VG "design" [996 MB / 996 MB free] pvscan -- inactive PV "/dev/sdb2" is in EXPORTED VG "design" [996 MB / 244 MB free] pvscan -- total: 2 [1.95 GB] / in use: 2 [1.95 GB] / in no VG: 0 [0] [admin@new_machine] # vgimport design Volume group "vg" successfully imported [admin@new_machine] # vgchange -ay design [admin@new_machine] # mkdir -p /mnt/design/users [admin@new_machine] # mount /dev/design/users /mnt/design/users
  • 25. Online References LVM Howto @ Linux.org http://www.linux.org/docs/ldp/howto/LVM-HOWTO/ Logic Volume Managemente Wikipedia http://en.wikipedia.org/wiki/Logical_volume_management Logic Volume Manager ( Linux ) - Wikipedia http://en.wikipedia.org/wiki/Logical_Volume_Manager Red Hat LVM1 / LVM2 Resource Page http://sources.redhat.com/lvm/ http://sources.redhat.com/lvm2/ Red Hat Device Mapper resource Page http://sources.redhat.com/dm/