LVM

From EIK wiki

Koostas Siim Kängsepp A21


Sissejuhatus

Järgnev artikkel on kettajagude haldustööriistast LVM. Eesmärgiks on tutvustada lugejale vahendi tööpõhimõtteid ning näidata praktilist väärtust. Kuna LVM-i praktiline kasutusala väga suur, siis lisasin wikilehe lõppu lingid, mille abil on võimalik soovikorral tööriista nüanssidest lähemalt ja täpsemalt tutvuda (kasutatud lingid). Juhend on koostatud ühest variandist, kuidas LVM abil kettaruumi suurendada.

Eeldused:

  • Kuna referaat on koostatud aine "Operatsioonisüsteemide sidumine" raames, ning linuxis tunnen ma ennast veel ainult väga põgusalt "kodus." Eeldan artiklilugejat umbes samas skoobis olevat, st et oskab terminali algtasemel kasutada ning tunneb ka UNIX-le omast kataloogistruktuuri. Juhendis on toodud kõik minu poolt sisestatud käsud ning ka väljundid välja.
  • LVM on sisseehitatud enamustele Linuxi distributsioonidele, seetõttu mingid lisavahendeid või rakendusi pole vaja installeerida. Kuid kui mingil põhjusel puudub, on pakk ja täpsemad juhised võimalik soetada siit : [1]
  • Samuti peaks arvestama, et partitsioonitabelite muutmisega võib kaasneda andmete hävinemine - varukoopiad!.
  • Kui tunned end ebakindlalt, tee algul läbi virtuaalmasinas
  • Tuttav võiks olla ka järgnevate teemadega:


Kasulik lugemine


NTFS_vs_Ext4

Mkfs

Fdisk

Mis on LVM ?

LVM - struktuur

LVM (Logical Volume Manager) on kettajagude haldusvahend Linuxikeskkonnas.

Ta on loodud kihina ketaste ja failisüsteemi vahele ning ettekujutus oleks selline:

  • Failisüsteemid
  • LVM
  • RAID
  • Füüsilised plokkseadmed (kõvakettad)

Lihtsustatult võiks öelda, et ühe LVM moodustab kihi, millega saab hallata korraga mitu (loogilist) kettajagu. Need koosnevad omakorda mitmest füüsilisest salvestusüksusest(kõvaketas, mingi muu kirjutav/lugev ajam).

LVM1 vs LVM2

LVM-i on arendatud alates LVM1-st ning seda kuni versioonini 0.19 (2006-11-27), peale seda lõpetati ning hakati arendama teist versiooni, mis nimetati LVM2-ks. LVM2 on tagasiühilduv (backwards - compatible - st. ühildub vanemate versioonidega) ning kasutab samasugust käsureastruktuuri. Omab muudetud ja täiustatud on jõudlust: näiteks nüüd on toetatud klastrid ning väga suur arv kettaid. Kiiremaks on muudetud ja recovery-protseduurid.

Näited muudatustest:

LVM1 | LVM2


Ei | Ei - RHEL AS 2.1 tugi

Ei | Jah - RHEL 4 tugi

Ei | Jah - Kiirem metaandmete käsitlemine (seotud taastamisprotsessi kiirusega)

Ei | Jah - jagatud köited (volume)

Ei | Jah - Klastrid

Ei | Jah - Triibutatud köidete laiendatavus

Read-only hetktõmmis | Read-write hetktõmmis

256 | 2(astmes)32 - Max kettajagude arv

2 Tb | 8 Eb (Exabyte) - Max füüsilise ajami maht

Võimalused

  • Muuta olemasoleva failisüsteemi suurust, eeldusel et failisüsteem seda toetab
  • Tekitada kõvakettale partitsioone juurde, neid eemaldada. Sealjuures ei ole kasutusel olevate partitsioonitabelite muutmisel vaja opsüsteemi alglaadida.
  • Hiljem partitsioonide suurusi muuta ilma andmekadudeta.
  • Ühendada kokku väiksemaid füüsilised plokkseadmed üheks suuremaks loogiliseks seadmeks


LVM on kasutatav lisaks veel paljudeks tegevusteks. Sealhulgas:

  • failisüsteemide snapshottide tegemine ja kasutamine
  • loogiliste ketaste triibutamine sarnaselt RAID-0 -le
  • tervete ketaste või osade peegeldamine sarnaselt RAID-1 -le
  • ketaste liigutamine ja ühendamine üle võrgu


Negatiivsed küljed

  • Süsteemi taastamine võib osutuda väga keeruliseks.
  • Alglaadimisaeg võib muutuda pikemaks
  • Ajapikku võib probleemiks osutuda loogiliste kettajagude fragmenteeritus, mis muudab I/O jõudlust negatiivselt. See tuleneb sellest, et salvestusseadmed ei eralda vajalikku mahtu järjest.



Juhend kettaruumi lisamiseks

Pahatihti on vaja tööjaamale, serverile kettaruumi juurde. Seda on võimalik teha, lisades uue ketta ning ühendades selle näiteks kodukataloogiga.


Füüsiliste ketaste kohta saad infot:

fdisk -l
Disk /dev/sda: 40.0 GB, 40060403712 bytes
255 heads, 63 sectors/track, 4870 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 4870 39013852+ 8e Linux LVM
Disk /dev/sdb: 40.0 GB, 40020664320 bytes
16 heads, 63 sectors/track, 77545 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Device Boot Start End Blocks Id System

Dev/sda peal on OS ning seal on partitsioon juba olemas. Disk /dev/sdb on uus ketas, mida tahame lisada kodukataloogile. Disk /dev/sdb peal ei ole veel partitsioonitabelit, kuna sinna ei ole seda kunagi tehtud. Teeme selle:

fdisk /dev/sdb


WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
        switch off the mode (command 'c') and change display units to
        sectors (command 'u').
Command (m for help):
Vajutades m, saame käskude nimekirja:
   Command action: m
  a   toggle a bootable flag
  b   edit bsd disklabel
  c   toggle the dos compatibility flag
  d   delete a partition
  l   list known partition types
  m   print this menu
  n   add a new partition
  o   create a new empty DOS partition table
  p   print the partition table
  q   quit without saving changes
  s   create a new empty Sun disklabel
  t   change a partition's system id
  u   change display/entry units
  v   verify the partition table
  w   write table to disk and exit
  x   extra functionality (experts only)

Lähtudes juhistest teeme partitsiooni ning kirjutame tabeli lõpuks ka kettale (!):

Command action: n
e extended
p primary partition (1-4)
p
Partition number (1-4):
1
First cylinder (177545,
default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (177545,default 77545):
Using default value 77545

Vajutades p saame kontrollida:

Command (m for help): p
Disk /dev/sdb: 40.0 GB, 40020664320 bytes
16 heads, 63 sectors/track, 77545 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 77545 39082648+ 83 Linux

Partitsiooni ID tuleks vahetada 8e-ks, kuna see on tüüp, mida Linux-LVM toetab.

Command (m for help): m
Selected partition 1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)
Command (m for help): p
Disk /dev/sdb: 40.0 GB, 40020664320 bytes
16 heads, 63 sectors/track, 77545 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 77545 39082648+ 8e Linux LVM

Oluline on vajutada w, et muudatused ka kirjutataks kettale:

Command (m for help): w
The partition table has been altered!
Calling ioctl() to reread
partition table.
WARNING: If you have created or modified any DOS 6.x
partitions, please see the fdisk manual page for additional
information.
Syncing disks.

Reboot ei ole vajalik

Järgmisena tuleks teha füüsiline kettajagu (märgistada ketas /dev/sdb füüsiliseks jaoks?):

pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created

Kontrollida saab käsuga:

pvdisplay
Physical
volume PV
Name /dev/sda2
VG Name VolGroup00
PV Size 37.21 GB / not usable 19.46 MB
Allocatable yes
PE Size (KByte) 32768
Total PE 1190
Free PE 59
Allocated PE 1131
PV UUID 8iXatK0ULJBdMJeFuxzhfA38AZDB8mBO
NEW
Physical volume PV
Name /dev/sdb1
VG Name
PV Size 37.27 GB
Allocatable NO
PE Size (KByte) 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID YP01nVuh4jvlpDM5fPNOjOQQ8iSVEzCx

Ketas on märgistatud uue füüsilise kettajaona. Nüüd tuleks see määrata /dev/sdb1 olemasolevasse kettajaogruppi. Gruppe saab näha käsuga:


vgdisplay
Volume
group VG
Name VolGroup00
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 3
Max PV 0
Cur PV 1
Act PV 1
VG Size 37.19 GB
PE Size 32.00 MB
Total PE 1190
Alloc PE / Size 1131 / 35.34 GB
Free PE / Size 59 / 1.84 GB
VG UUID Udjflk2VDAzucoZnkil7k1H12mxdwOi5


Soovikorral on võimalik teha uus kettajagudegrupp käsuga vgcreate:


vgcreate my_new_volume_group /dev/sda1 /dev/sdb1


Meie praeguse grupi suurus on 37,19 GB - seda üritame uue kettaga suurendada. Füüsilise kettajao saame ühendada kettajagudegruppi käsuga:

vgextend VolGroup00 /dev/sdb1
Volume group "VolGroup00" successfully extended

Kontrollida saab:

vgdisplay
Volume
group VG
Name VolGroup00
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 5
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 3
Max PV 0
Cur PV 2
Act PV 2
VG Size 74.44 GB
PE Size 32.00 MB
Total PE 2382
Alloc PE / Size 1131 / 35.34 GB
Free PE / Size 1251 / 39.09 GB
VG UUID Udjflk2VDAzucoZnkil7k1H12mxdwOi5

Nüüd on suurus 74,44GB. Kuna meil on nüüd rohkem ruumi kettajagudegrupis, saame suurendada /var kataloogi. Teeme seda näiteks 20GB võrra. See käib käsuga:

lvextend L+20G /dev/VolGroup00/Loogilinevoluum
Extending logical volume Loogilinevoluum to 34.62 GB
Logical volume Loogilinevoluum successfully resized

Nüüd tuleks kodukataloog ning kettajagu lahti ühendada, mis seotud /var kataloogiga:

umount /dev/mapper/VolGroup00Loogilinevoluum

Seejärel saab muuta failisüsteemi suurust käsuga:

resize2fs /dev/mapper/VolGroup00Loogilinevoluum
resize2fs 1.39 (02May2011)
Filesystem at /dev/mapper/VolGroup00Loogilinevoluum is mounted on /var; online resizing required
Performing an online resize of /dev/mapper/VolGroup00LogVolvar to 9076736 (4k) blocks.
The filesystem on /dev/mapper/VolGroup00Loogilinevoluum is now 9076736 blocks long.

Kontrollides käsuga df-hf:

df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00LogVolfs 19G 2.5G 16G 14% /
/dev/sda1 99M 11M 84M 12% /boot
tmpfs 300M 0 300M 0% /dev/shm
/dev/mapper/VolGroup00Loogilinevoluum 34G 226M 32G 1% /var



Juhul kui füüsiliselt kettaruumi on kuid partitsioon ei mahuta enam, siis on LVM abil võimalik seda ka suurendada. Selle jaoks on tegelikult olemas ka spetsiaalsed programmid, mis lihtsustavad tunduvalt tegevust. Manuaalselt seda teha on üpriski tülikas. Üks näide sellisest vabavaralisest programmist on näiteks GParted - [2] . Nietatud programm toetab enamusi kasutuselolevatest failisüsteemidest, kaasaarvatud näiteks ext2, 3, 4, ntfs, FAT16, FAT32.

Kasutatud kirjandus

http://www.gnu.org/software/parted/manual/html_chapter/parted_7.html

http://en.wikipedia.org/wiki/Logical_Volume_Manager_%28Linux%29

http://en.wikipedia.org/wiki/Logical_volume_management

http://sourceware.org/lvm2/

http://www.unixmultiverse.com/index.php?option=com_content&view=article&id=47&Itemid=53

http://www.tldp.org/HOWTO/LVM-HOWTO/

http://vallaste.ee/


Koostas Siim Kängsepp A21