LVM
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:
- 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]
- Kasutaja võiks olla Linux - keskkonnaga tuttav ning kuna tegevus toimub terminalis, seega ka terminalikäskude tundmine oleks vajalik eeldus.
- Samuti peaks arvestama, et partitsioonitabelite muutmisega võib kaasneda andmete hävinemine - varukoopiad!.
- Tuttav võiks olla ka järgnevate teemadega:
Kasulik lugemine
Mis on LVM ?
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 draiv).
LVM1 vs LVM2
LVM1-te arendati kuni versioonini 0.19(2006-11-27), peale seda lõpetati ning hakati arendama teist versiooni, mis nimetati LVM2-ks. LVM2 on tagurpidi ühilduv vanema versiooniga 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
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:
[root@localhost ~]# 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:
root@localhost:~# 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 (m for help): m Command action 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 (m for help): n Command action 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): t 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.
Nüüd tuleks teha restart, et partitsioonitabel kasutusele võetaks:
[root@localhost ~]# reboot
Järgmisena tuleks teha füüsiline kettajagu (märgistada ketas /dev/sdb füüsiliseks jaoks?):
[root@localhost ~]# pvcreate /dev/sdb1 Physical volume "/dev/sdb1" successfully created [root@localhost ~]#
Kontrollida saab käsuga:
[root@localhost ~]# 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:
[root@localhost ~]# 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
Grupi praegune suurus on 37,19 GB - seda üritame uue kettaga suurendada. Füüsilise kettajao saame ühendada kettajagudegruppi käsuga:
[root@localhost ~]# vgextend VolGroup00 /dev/sdb1 Volume group "VolGroup00" successfully extended
Kontrollida saab:
[root@localhost ~]# 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:
[root@localhost ~]# 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:
[root@localhost ~]# umount /dev/mapper/VolGroup00Loogilinevoluum
Seejärel saab muuta failisüsteemi suurust käsuga:
[root@localhost var]# 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:
[root@localhost var]# 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://www.unixmultiverse.com/index.php?option=com_content&view=article&id=47&Itemid=53
http://www.tldp.org/HOWTO/LVM-HOWTO/
Koostas Siim Kängsepp A21