Linux ja LVM virtuaalikoneissa

Nykyiset Linux-käyttöjärjestelmät tarjoavat erinomaisen skaalautuvuuden virtuaalikoneissa tukemalla esim. levyjärjestelmissä loogisia levyvolyymejä joka mahdollistaa käyttöjärjestelmän levyjen kasvatuksen ja pienennyksen lennossa. VMware vSphere tukee suurinta osaa markkinoiden Linux-käyttöjärjestelmistä vaikka virallinen tuki onkin vain suosituimmille distribuutioille. Tämän kirjoituksen aiheena on näyttää esimerkeillä miten LVM-järjestelmät toimivat Linuxilla, erityisesti virtuaalisissa ympäristöissä. Alhaalla esimerkkikuva siitä mitä LVM:llä tarkoitetaan:

Jos tarkoituksenasi on käyttää koko lisätty levy kasvattamaan loogista volyymiä suosituksena on että levyä ei osioida ollenkaan vaan levy lisätään LVM:n fyysisenä volyyminä. Levyä voidaan toki lisätä koneisiin myös sellaisenaan ja jättää käyttämättä LVM:ää mutta tämä ei ole suositeltavaa koska LVM tarjoaa paljon hyviä ominaisuuksia sekä skaalautuvuutta jatkon kannalta sekä lisäksi käytännössä kaikki modernit Linux-järjestelmät tarjoavat oletuksena LVM:ää asennuksen yhteydessäkin.

Miten liitän uusia levyjä ilman uudelleenkäynnistystä?

Heti kun olet luonut vSphere-clientillä uuden virtuaalilevyn virtuaalikoneelle voidaan uusi levy ottaa käyttöön helposti Linux-käyttöjärjestelmään. Linux kuitenkin vaatii että SCSI-väylä skannataan uudelleen ja näin uudet lisätyt levyt löytyvät. Valitettavasti tähän ei ainakaan minulla ole suoraan antaa helppoa tapaa ilman komentorivi-työskentelyä. Käynnistääksesi SCSI-väylän skannauksen anna alla oleva komento (vaihda X-kohta host-tekstin perästä oikean SCSI-väyläsi mukaiseksi):

# echo "- - -" > /sys/class/scsi_host/hostX/scan

Voit tarkistaa dmesg-komennolla mitä levyjä löydettiin etsimällä “Attached scsi disk”-viestiä

# dmesg | grep Attached
sd 0:0:X:0: Attached scsi disk sdb

Kun uusi levy on lisätty Linuxille luodaan LVM:lle fyysinen volume, volume group sekä looginen volume sekä lopuksi tiedostojärjestelmä.

# pvcreate /dev/sdb
Physical volume “/dev/sdb” successfully created

# vgcreate datavg /dev/sdb
Volume group “datavg” successfully created

# lvcreate -n datalv1 -l+100 datavg
Logical volume “datalv1” created

# mkfs.ext3 /dev/datavg/datalv1

Ensimmäisessä vaiheessa luotiin levylle fyysinen volume jonka jälkeen luotiin uusi volume group nimeltä “datavg”. Seuraavaksi luotiin datalv1-niminen looginen volume jonka kooksi annettiin 100% datavg:n koosta. Jotta voit käyttää uutta volumea luotiin sinne ext3-tiedostojärjestelmä jonka jälkeen levy on valmis käyttöönotettavaksi.

Olemassa olevan levyn kasvatus

Kun virtuaalilevyä on kasvatettu vSphere-clientilla tulee levyn muutokset skannata myös Linuxin puolella jotta lisätty osuus levystä voidaan ottaa käyttöön. Voidaksesi tehdä tämän tulee sinun tietää käyttämäsi levyn SCSI ID. Alla esimerkki jolla skannaus tehdään Linuxin puolella (korvaa devices-kohdan jälkeinen 0:0:1:0 oikealla id:llä)

# echo 1 > /sys/bus/scsi/devices/0:0:1:0/rescan

Voit käyttää dmesg-komentoa tarkistaaksesi että muutos on otettu onnistuneesti käyttöön. Löydät tämän etsimällä tekstiä “capacity change”.

# dmesg | tail -n 10 | grep change
sdb: detected capacity change from 8589934592 to 17179869184

Lopuksi itse tiedostojärjestelmä tulee kasvattaa vastaamaan muuttunutta levykokoa

# resize2fs /dev/sdb

Olemassa olevan volumen ja tiedostojärjestelmän kasvatus ilman partitiointia

Jotta muutokset tulevat voimaan tulee sinun suorittaa LVM:n fyysiselle volumelle rescan jolla muutokset havaitaan (vaihda sdb käyttämääsi oikeaan levyyn)

# pvresize /dev/sdb

Seuraavaksi laajennetaan looginen volume vastaamaan kasvanutta kokoa.

# lvextend -l+100 /dev/VolGroup01/LogVol00

Lopuksi ajetaan itse tiedostojärjestelmälle resize jotta uusi koko on käytettävissä.

# resize2fs /dev/VolGroup01/LogVol00

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s