Erinevus lehekülje "LVM" redaktsioonide vahel

Allikas: Kuutõrvaja
(Snapshot)
(Probleemidega tegelemine)
 
(ei näidata sama kasutaja 4 vahepealset redaktsiooni)
141. rida: 141. rida:
 
  # lvcreate -L 2G -s -n vm01_snapshot /dev/voluum/vm01
 
  # lvcreate -L 2G -s -n vm01_snapshot /dev/voluum/vm01
  
Andes käsu tekitada snapshot luuakse tegelikult lvmi kettast "copy on write" dublikaat. Ehk siis iga blokk mis snapshotitud kettal muutub salvestatakse kõigepealt snapshotti. Ehk selleks, et muudatused jõustuksid pole vaja muud kui lihtsalt snapshot eemaldada. Tasub tähele panna, et snapshoti moodustamisel määratakse selle suurus -L võtmega (meiepuhul 2 gigabaiti). Juhul kui see suurus ületatakse, ehk muudatusi tekib rohkem kui kahe giga jagu, siis kustutatakse snapshot automaatselt ja seda pole võimalik kasutada.
+
Andes käsu tekitada snapshot luuakse tegelikult lvmi kettast "copy on write" dublikaat. Ehk siis iga blokk mis snapshotitud kettal muutub salvestatakse kõigepealt snapshotti. Ehk selleks, et muudatused jõustuksid pole vaja muud kui lihtsalt snapshot eemaldada. Tasub tähele panna, et snapshoti moodustamisel määratakse selle suurus -L võtmega (meiepuhul 2 gigabaiti). Juhul kui see suurus ületatakse, ehk muudatusi tekib rohkem kui kahe giga jagu, siis kustutatakse snapshot automaatselt ja seda pole võimalik kasutada. Snapshoti täituvust näeb näiteks lvdisplay käsuga
 +
 
 +
# '''lvdisplay | grep snap'''
 +
    LV snapshot status    source of
 +
                          vm01-snapshot [active]
 +
    LV Path                /dev/voluum/vm01_snapshot
 +
    LV Name                vm01-snapshot
 +
    LV snapshot status    active destination for vm01
 +
    Allocated to snapshot  3,42%
  
 
Snapshoti külge haakimiseks
 
Snapshoti külge haakimiseks
153. rida: 161. rida:
 
Soovides pöörduda snapshotitud kettal tagasi algsele seisule ehk teha nö rollback.
 
Soovides pöörduda snapshotitud kettal tagasi algsele seisule ehk teha nö rollback.
  
  # lvconvert --merge /dev/voluum/vm01_snapshot
+
  # '''lvconvert --merge /dev/voluum/vm01_snapshot'''
 
  Merging of volume vm-snapshot started.
 
  Merging of volume vm-snapshot started.
 
   vm01: Merged: 96,5%
 
   vm01: Merged: 96,5%
326. rida: 334. rida:
  
 
  # /dev/mapper/virtual-vm01--backup        /backup ext3    defaults        1      2
 
  # /dev/mapper/virtual-vm01--backup        /backup ext3    defaults        1      2
 +
 +
===Probleemidega tegelemine===
 +
 +
Mida teha kui juhtub kogematta hävitama lvm ketta, näiteks tekitama sinna peale fdiskiga uue partitsiooni ja eksitusest
 +
arusaades sooviks lvmi viilakad taastada?
 +
 +
LVM hoiab enda infost tegelikult varukoopiaid /etc/lvm/archive/ kaustas. Näiteks /etc/lvm/archive/vg1_00227-2048533959.vg. Kuid neid niisama kasutada ei saa, vaja on ka LVMi ID-d. Selle saab vaadata vg1_00227-2048533959.vg faili seest. Asub see üsna alguses kujul:
 +
 +
vg1 {
 +
id = "RYLA7U-H0hv-KR0F-DVPH-UdBS-7zbb-nkzASt"
 +
 +
Seejärel saame käivitada käsu:
 +
 +
# pvcreate --uuid "oh2ZbK-weKX-zVxb-ou2t-jvaT-esW1-lAzYYn" --restorefile /etc/lvm/archive/vg1_00227-2048533959.vg /dev/sdb
 +
 +
Kui see käsk ütleb: Can't open /dev/mapper/multi2 exclusively. Mounted filesystem? Saab vaadata dmsetup status käsuga endiselt katkise lvmi küljes
 +
rippuvaid viilakaid ja nad lahti haakida.
 +
 +
# dmsetup remove_all
 +
 +
Seejärel käivitame käsu vgscan ja lvm metadata peaks olema taastatud ning kettad taastunud.
 +
 +
Kui metadata pole täielikult hävinud saab taastada ka ilma pvcreate käsuta nt
 +
 +
# vgcfgrestore vg1 --test -f /etc/lvm/archive/vg1_00227-2048533959.vg
 +
 +
Võti --test näitab vaid tehtavaid muudatusi ja midagi reaalselt ei käivita.
 +
 +
Taastatud volume group vg1 on vaja veel ka täiendavalt aktiveerida
 +
 +
# vgchange -a y vg1
 +
  16 logical volume(s) in volume group "vg1" now active
  
 
===Kasulikud lisamaterjalid===
 
===Kasulikud lisamaterjalid===
  
 
* http://www.gnu.org/software/parted/manual/html_chapter/parted_7.html
 
* http://www.gnu.org/software/parted/manual/html_chapter/parted_7.html

Viimane redaktsioon: 8. detsember 2016, kell 17:37

LVM

LVM moodustab kihi failisüsteemi ja füüsilise kõvaketta vahele. Kui kasutusel on ka RAID, siis võiks kujutleda kihte selliselt

  • Failisüsteemid
  • LVM
  • RAID
  • Füüsilised plokkseadmed

LVM pakub selliseid võimalusi

  • failisüsteemide snapshotide kasutamine, ainult loetavad või loetavad-kirjutatavad
  • eeldusel, et failisüsteem toetab, muuta olemasoleva failisüsteemi suurust
  • erinevalt nö fdisk partitsioonide kasutamisest, kui mingil moel kasutusel olevate partitsioonidega kõvakette partitsioonitabelit muuta, nt tekitada kõvakettale partitsioon juurde, siis muudatuse kehtestamiseks tuleb operatsioonisüsteem alglaadida, LVM puhul ei ole see vajalik
  • korraldada online'is andmete migreerimist füüsiliste kõvaketaste vahel (kuigi nö põhimõtteliselt õigem on seda teostada mdadm RAID vahenditega)
  • ühendada kokku väiksemaid füüsilised plokkseadmed üheks suuremaks loogiliseks seadmeks (jällegi, seda võib olla õigem teha mdadm vahenditega)

LVMi kasutamisel tuleb arvestada selliste puudustega

  • tõenäoliselt on LVM köited kasutatavad ainult Linux operatsioonisüsteemiga

Tuuma seadistamine

Linuxi 2.6 tuuma puhul on oluline lisaks füüsiliste ketaste draiveritele valida eriti device-mapper, ühe olulise mooduli nimi on dm_mod, fail dm-mod.ko

Device Drivers -> Multi-device support (RAID and LVM) -> valida kõik

2009 aastal aga on vaevalt tarvis tavakasutajal reeglina omale ise tuuma kompileerima hakata, sobib ja on soovitav kasutada distributsiooni tuuma.

LVM seadistamine

LVM lahenduse seadistamiseks sobib kasutada tarkvara lvm2 http://sourceware.org/lvm2/, reeglina on see distributsiooni jaoks pakendatud.

LVMi tuleks käsitleda kolmekihilisena

  1. Plokkseadmed tuleb LVM juures kasutamiseks spetsiaalselt märgistada.
  2. Plokkseadmed on organiseeritud voluum gruppidesse, mis on konteinerid loogilistele voluumidele.
  3. Loogilised voluumid on kõige otsekohesemalt kasutatavad, sinna peale moodustatakse tavaliselt failisüsteemid.

Iga kihi tegevusteks kasutatakse oma utiliite, vastavalt nimedega pv*, vg* ja lv*.

Esmalt tuleb olemasolevad blokkseadmed (füüsilised kõvakettad või RAID seadmed) märkida füüsilisteks voluumideks

aix:~# pvcreate /dev/md0

Tulemust näeb sedasi

aix:~# pvdisplay
 --- Physical volume ---
 PV Name               /dev/md0
 VG Name               voluum
 PV Size               465.77 GB / not usable 0   
 Allocatable           yes 
 PE Size (KByte)       4096
 Total PE              119237
 Free PE               106949
 Allocated PE          12288
 PV UUID               dC1zcu-3caT-Uirt-sbB9-r7j0-Yf06-FUGVmP

Seejärel tuleb moodustada loogiline grupp

aix:~# vgcreate voluum /dev/md0

Tulemust näeb selliselt

aix:~# vgdisplay voluum
 --- Volume group ---
 VG Name               voluum
 System ID             
 Format                lvm2
 Metadata Areas        1
 Metadata Sequence No  16
 VG Access             read/write
 VG Status             resizable
 MAX LV                0
 Cur LV                3
 Open LV               0
 Max PV                0
 Cur PV                1
 Act PV                1
 VG Size               465.77 GB
 PE Size               4.00 MB
 Total PE              119237
 Alloc PE / Size       12288 / 48.00 GB
 Free  PE / Size       106949 / 417.77 GB
 VG UUID               j8OONB-HABJ-HH1g-7Ywx-RLVG-1OzZ-IA68j9


Lõpuks moodustada loogilised voluumid

aix:~# lvcreate -L 16G -n vm01 voluum     
 Logical volume "vm01" created
aix:~# lvcreate -L 16G -n vm02 voluum
 Logical volume "vm02" created
aix:~# lvcreate -L 16G -n vm03 voluum
 Logical volume "vm03" created

Tulemust näeb selliselt

aix:~# lvdisplay /dev/voluum/vm01
 --- Logical volume ---
 LV Name                /dev/voluum/vm01
 VG Name                voluum
 LV UUID                dXfxk5-0jmz-TfQY-hTwz-XxKw-XtgS-H1IOvz
 LV Write Access        read/write
 LV Status              available
 # open                 0
 LV Size                16.00 GB
 Current LE             4096
 Segments               1
 Allocation             inherit
 Read ahead sectors     0
 Block device           253:0

Voluum saab olla available või NOT available olekus. Kasutada saab available voluume, kusjuures lvcreate järgselt viiakse voluum automaatselt available olekusse.

Voluumi eemaldamiseks tuleb esmalt ta viia NOT available olekusse

aix:~# lvchange -a n /dev/voluum/vm01

ning seejärel

aix:~# lvremove /dev/voluum/vm01

Voluumigruppide eemaldamiseks tuleks öelda

aix:~# vgremove /dev/voluum

Peale arvuti käivitamist tuleb näiteks Debian GNU/Linuxi puhul öelda

aix:~# /etc/init.d/lvm start

/dev kataloogi seadmete moodustamiseks ning ennem arvuti seiskamist

aix:~# /etc/init.d/lvm stop

Snapshot

Snapshot Logical Volume (SLV) on koopia tema moodustamise ajahetkel vastava loogilise seadme olekust, mida saab seejärel kasutada nagu tavalist failisüsteemi. Snapshoti tegemise eelduseks on, et samas voluumi grupis on piisavalt vaba kasutamata ruumi, st mida pole omistatud ühelegi loogilisele voluumile. Tavaliselt on snapshoti moodustamise põhjuseks soov olemasoleva failisüsteemi seisuga mingi muudatus järgi proovida, näiteks tarkvara uuendamine ilma, et see töötavat süsteemi segaks. Snapshoti loomiseks tuleb anda käsk

# lvcreate -L 2G -s -n vm01_snapshot /dev/voluum/vm01

Andes käsu tekitada snapshot luuakse tegelikult lvmi kettast "copy on write" dublikaat. Ehk siis iga blokk mis snapshotitud kettal muutub salvestatakse kõigepealt snapshotti. Ehk selleks, et muudatused jõustuksid pole vaja muud kui lihtsalt snapshot eemaldada. Tasub tähele panna, et snapshoti moodustamisel määratakse selle suurus -L võtmega (meiepuhul 2 gigabaiti). Juhul kui see suurus ületatakse, ehk muudatusi tekib rohkem kui kahe giga jagu, siis kustutatakse snapshot automaatselt ja seda pole võimalik kasutada. Snapshoti täituvust näeb näiteks lvdisplay käsuga

# lvdisplay | grep snap
   LV snapshot status     source of
                          vm01-snapshot [active]
   LV Path                /dev/voluum/vm01_snapshot
   LV Name                vm01-snapshot
   LV snapshot status     active destination for vm01 
   Allocated to snapshot  3,42% 

Snapshoti külge haakimiseks

# mount /dev/voluum/vm01_snapshot /mnt/vm01_snapshot

Snapshoti vabastamiseks tuleb esmalt ta lahti ühendada ja siis öelda

# lvremove /dev/voluum/vm01_snapshot

Soovides pöörduda snapshotitud kettal tagasi algsele seisule ehk teha nö rollback.

# lvconvert --merge /dev/voluum/vm01_snapshot
Merging of volume vm-snapshot started.
  vm01: Merged: 96,5%
  vm01: Merged: 96,7%
  ...
  vm01: Merged: 99,7%
  vm01: Merged: 100,0%
  vm01: Merged: 100,0%
  Merge of snapshot into logical volume vm01 has finished.
  Logical volume "vm01_snapshot" successfully removed 

Merge käsu täitmine võib võtta mõnigast aega ning kõik lugemis-kirjutamis operatsioonid mis samal ajal tulevad allikaks olevale kettale suunatakse automaatselt mergetavale snapshotile. Pelae merge käsu lõppu on algketas samas seisus mil ta oli enne snapshoti tegemist (lisaks muudatused mis tehti kettale merge käsu täitmise ajal kasutajate poolt). Snapshot ose eemaldatakse peale merge lõpetamist automaatselt.

Snapshoti moodustamine kasutab mõni MB arvuti mälu, mis snapshoti eemaldamisel vabastatakse. Lisaks tuleb arvestada, et kui labelit kasutavast juurifailisüsteemist teha snapshot, siis on sama label kahel failisüsteemil ning operatsioonisüsteemi alglaadimine ei õnnestu sellises olukorras. Lahenduseks võiks olla snapshotile muu labeli omistamine öeldes

# e2label /dev/voluum/juurikas uuslabel

Snapshotile ruumi juurde andmiseks sobib öelda, kusjuures etteantud uus ruum peab olema suurem kui olemasoleva snapshot ruum

# lvresize -L4G /dev/voluum/vm01_snapshot

LVM kolimine ühelt füüsiliselt kettalt teisele

Kui soovida kolida juurpartitsiooni sisaldav LVM voluum teisele füüsilisele kettale või mdadm abil tehtud mirrorile, siis kõigepealt installeerime mdadm

 apt-get install mdadm

Siin tuleks valida küsimusele vastuseks "all" devices

Järgnevalt teeme mirrori

 debian:~# mdadm --create /dev/md0 --level=mirror --raid-devices=2 /dev/sdc2 missing

Ning kolime juurfailisüsteemi sisaldava voluumgrupi ümber /dev/md0

 debian:~# lvm
 lvm> pvcreate /dev/md0
   Physical volume "/dev/md0" successfully created
 lvm> vgextend juur /dev/md0
   Volume group "juur" successfully extended
 lvm> pvmove /dev/sda2 /dev/md0

Ootame, kuni move käsk lõpetab töö ja edasi:

 lvm> vgreduce juur /dev/sda2
 lvm> quit

Kui /dev/sda2 on täpselt sama suur, kui /dev/sdc2, siis soovitavalt peale rebooti saame panna sda2 lisaks md0 mirrorisse.

Antud kolimise näide peaks kehtima juhul, kui partitsioon, kuhu kolitakse on piisavalt suur, et mahutada kõik sellel kettal olevad Logical Volumed (lvm -> käsk pvs), samuti peaks see võimaldama kopeerida ka ainult üht ketast mitmest kettast koosnevate LVMide puhul. Mõistlik on sellist operatsiooni teha siiski eelnevalt kontrollides varukoopiate olemasolu ja cd-lt buutides.

Veel toredaid programme

Programm lvm töötab interaktiivses režiimis

aix:~# lvm
lvm> pvs
 PV         VG     Fmt  Attr PSize   PFree  
 /dev/md0   voluum lvm2 a-   465.77G 167.77G
lvm> lvs
 LV       VG     Attr   LSize   Origin Snap%  Move Log Copy% 
 kraam250 voluum -wi-ao 250.00G                              
 vm01     voluum -wi-ao  16.00G                              
 vm02     voluum -wi-ao  16.00G                              
 vm03     voluum -wi-ao  16.00G                              
lvm> vgs
 VG     #PV #LV #SN Attr   VSize   VFree  
 voluum   1   4   0 wz--n- 465.77G 167.77G
lvm> lvscan
 ACTIVE            '/dev/voluum/vm01' [16.00 GB] inherit
 ACTIVE            '/dev/voluum/vm02' [16.00 GB] inherit
 ACTIVE            '/dev/voluum/vm03' [16.00 GB] inherit
 ACTIVE            '/dev/voluum/kraam250' [250.00 GB] inherit
lvm> vgscan
 Reading all physical volumes.  This may take a while...
 Found volume group "voluum" using metadata type lvm2
lvm> pvscan
 PV /dev/md0   VG voluum   lvm2 [465.77 GB / 167.77 GB free]
 Total: 1 [465.77 GB] / in use: 1 [465.77 GB] / in no VG: 0 [0   ]

Voluumi ümbernimetamine

Voluumi nime muutmiseks tuleb esmalt voluumi kasutamine lõpetada, nt vastav failisüsteem lahti ühendada ning märkida voluum mitte-aktiivseks ning seejärel näidata vana ja uus nimi

 bash# lvchange -a n /dev/voluum/voluuminimi
 bash# lvrename /dev/voluum/voluuminimi /dev/voluum/voluumi_uus_nimi

Seejärel märkida voluum uuesti aktiivseks ning kasutada tavapäraselt moel

 bash# lvchange -a y /dev/voluum/voluumi_uus_nimi

Märkused

  • loogilise voluumi moodustamisel saab määrata suurust LVMi jaoks kõige nö loomulikumates mõõtühikutes, extent'ides, nt kogu volume groupi suuruse logical volume tekitamiseks tuleb öelda
 # lvcreate -l arv -n voluuminimi grupinimi

kus arv on extentide arv vastavas grupis, mida saab vaadata vgdisplay grupinimi käsuga

  • Tihtipeale ei ole LVM seadistusfailis /etc/lvm/lvm.conf tarvis muudatusi teha, aga seal saab juhtida filter direktiiviga, milliseid seadmeid LVM käsitleb võimaliku ressursina LVM moodustamiseks või nt kuivõrd LVM utiliitidega sooritatud tegevusi logitakse sh kuhu. Kusjuures, kui filter parameetrit muuta tuleb seejärel öelda 'vgscan', et LVM cache failis /etc/lvm/.cache uuendataks.
  • Kõigi LVM volume grupi voluumide aktiivseks (või mitteaktiivseks) muutmiseks sobib öelda vastavalt
 # vgchange -a y volumegrupinimi
 # vgchange -a n volumegrupinimi
  • Kui pvdisplay ei näita seadmete nimekirjas oodatavat seadet, maksab küsida otse
 # pvdisplay /dev/md0
  • Voluumi grupi eemaldamisel kututatakse kõik grupis olevad voluumid
 # vgremove data
 Do you really want to remove volume group "data" containing 32 logical volumes? [y/n]: y
  Logical volume "fs" successfully removed
  Logical volume "moraal" successfully removed
  Logical volume "cyrus_data" successfully removed
  ... 
  Volume group "data" successfully removed
  • Kui süsteemi on tekkinud mõni nö ületäitunud snapshot, mis on INACTIVE olekus, siis võivad LVM käsud anda sellised teateid oma muu väljundi alguses
 # vgdisplay 
 /dev/dm-2: read failed after 0 of 4096 at 0: Input/output error
 ..
  • Kui LVM PV, VG, LV ja failisüsteem asuvad kõik ühel plokkseadmel /dev/sdb, siis failisüsteemi suurendamiseks sobib selline järgnevus

Esmalt öelda, kusjuures tulemusena tekib vastavasse volume gruppi vaba ruumi juurde

# pvresize /dev/sdb
Physical volume "/dev/sdb" changed
1 physical volume(s) resized / 0 physical volume(s) not resized

Seejärel suurendada lvm köidet, eeldusel, et viimine suurus oli 40 G nt

# lvresize -L80G /dev/pgdata/data_postgresql

Ja lõpuks failisüsteemi

e2fsck, resize2fs jne
  • 100% täitmine olemasolevast vabast VG mahust
# lvcreate -l100%FREE -n voluuminimi voluumigrupinimi

Failisüsteemide moodustamine LVMile

Failisüsteemi tekitamine LVM partitsioonile toimub samamoodi nagu tavalisele blokkseadmele Näiteks ext3 failisüsteemi moodustamine toimub käsuga

# mkfs.ext3  /dev/virtual/vm01-backup

Ning seejärel võib anda mountimiseks käsu

# mount /dev/virtual/vm01-backup /backup

Kontrollime kas ketas tuli külge

# df
Filesystem           1K-blocks      Used Available Use% Mounted on
...
/dev/mapper/virtual-vm01--backup
                     103212320    192248  97777192   1% /backup

LVM partitsioonid mounditakse fstabi abil arvuti boodil samamoodi nagu tavalised partitsioonidki, tuleb vaid teada täisrada.

# /dev/mapper/virtual-vm01--backup        /backup ext3    defaults        1       2

Probleemidega tegelemine

Mida teha kui juhtub kogematta hävitama lvm ketta, näiteks tekitama sinna peale fdiskiga uue partitsiooni ja eksitusest arusaades sooviks lvmi viilakad taastada?

LVM hoiab enda infost tegelikult varukoopiaid /etc/lvm/archive/ kaustas. Näiteks /etc/lvm/archive/vg1_00227-2048533959.vg. Kuid neid niisama kasutada ei saa, vaja on ka LVMi ID-d. Selle saab vaadata vg1_00227-2048533959.vg faili seest. Asub see üsna alguses kujul:

vg1 {
	id = "RYLA7U-H0hv-KR0F-DVPH-UdBS-7zbb-nkzASt"

Seejärel saame käivitada käsu:

# pvcreate --uuid "oh2ZbK-weKX-zVxb-ou2t-jvaT-esW1-lAzYYn" --restorefile /etc/lvm/archive/vg1_00227-2048533959.vg /dev/sdb

Kui see käsk ütleb: Can't open /dev/mapper/multi2 exclusively. Mounted filesystem? Saab vaadata dmsetup status käsuga endiselt katkise lvmi küljes rippuvaid viilakaid ja nad lahti haakida.

# dmsetup remove_all 

Seejärel käivitame käsu vgscan ja lvm metadata peaks olema taastatud ning kettad taastunud.

Kui metadata pole täielikult hävinud saab taastada ka ilma pvcreate käsuta nt

# vgcfgrestore vg1 --test -f /etc/lvm/archive/vg1_00227-2048533959.vg

Võti --test näitab vaid tehtavaid muudatusi ja midagi reaalselt ei käivita.

Taastatud volume group vg1 on vaja veel ka täiendavalt aktiveerida

# vgchange -a y vg1
  16 logical volume(s) in volume group "vg1" now active

Kasulikud lisamaterjalid