LVM2 kötegek rendezése Ubuntun

Múlt héten bővítettem a mikroszerverem egy új 3 TB-os lemezzel. A végső cél a tükrözés lesz, de úgy döntöttem elkezdem az adatok átrendezését egyetlen lemez­zel, majd idővel érkezik hozzá a másik. Az új lemez a már létező 512 MB-os tükrözött lemezek mellé érkezett, az addigi köte­teket és fájlrendszereket át akartam ala­kítani, hogy a rendszerfájlok és az adatok merevlemez szinten is el­külö­nül­jenek.

A kiinduló kialakítás a következő módon nézett ki:

Partíció RAID kötet VG LV Csatolási pont Méret
sda1
sdb1
md0 /boot 180 MB
sda2
sdb2
md1 swap 15 GB
sda3
sdb3
md2 rootvg rootlv / 37 GB
sda4
sdb4
md3 datavg homelv /home 20 GB
varlv /var 203 GB
downloadslv /var/downloads 99 GB

Ezt az elrendezést kellett úgy átalakítanom, hogy a rendszertől független adatok átkerüljenek az új, 3 TB-os lemezre, minden más maradjon az 512 MB-osakon. Ehhez az alábbiakat kell megtenni:

  • homelv adatokat áttenni a datavgből a rootvgbe
  • varlv felbontása több LVre, /var/backup, /var/music, /var/videos, /var/www új LVt kap, a többi adat viszont visszakerül rootvgbe (logok, spool, stb.)
  • downloadslv átpakolása az új 3 TB-os lemezre

WD Red 3 TB megy a helyére

Az új WD Red 3 TB megy a helyére

Egész LV áthelyezése új (üres) PV-re

Egy egész LV áthelyezéséhez a következő lépeseket kell végrehajtani: az új lemezt tegyük be a mozgatandó LV groupja alá, az LV-t mozgassuk át az új lemezre, bontsuk fel a VG-t hogy az új lemez egy új groupban legyen. Egyszerűnek tűnik, és valóban az is, vegyük végig parancsokkal:

Az új lemezt adjuk hozzá a mozgatni kívánt LV groupjához:

vgextend datavg /dev/md4

Mozgassuk át az LV-t az új lemezre:

pvmove -n downloadslv /dev/md3 /dev/md4

Győződjünk meg róla, hogy tényleg átkerült az új lemezre:

lvs -o name,devices

Ha szeretnénk, akkor az eredeti VG-t feldarabolhatjuk, így az új lemez átkerül egy új VG-be:

vgsplit -n downloadslv datavg data2vg

Egész LV áthelyezése létező (nem üres) PV-re

Ha a létező PV ugyanabban a VG-ben van, akkor a fenti módszert kell követni. Azonban ha nem ugyanabban a VG-ben van, akkor a pvmove nem fog működni, ezért a lenti módszert kell követni.

LV áthelyezése másik PV-re minden más esetben

Ha az LV-nek csak egy részét szeretnénk áthelyezni vagy a cél PV másik groupban van, akkor nincs olyan LVM2 parancs, ami segítségünkre lenne a mozgatásban. A módszer ilyenkor az, hogy létrehozunk egy új LV-t a nekünk megfelelő helyen, mountoljuk, átmásoljuk az adatokat, lecseréljük a régi és az új mountpointokat, és töröljük a régi LV-t.

Hozzuk létre az új LV-t, rajta a fájlrendszert és mountoljuk:

lvcreate -n home2lv -L 20G rootvg
mkfs.ext4 /dev/mapper/rootvg-home2lv
mount /dev/mapper/rootvg-home2lv /mnt

Az adatok átmásolásához olyan fájlszintű módszert alkalmazzunk, ami támogatja a szimbolikus és a hard linkeket is.

Másolás cpio-val:

cd /home
find ./ -depth -print | cpio -pamVd /mnt

Másolás rsynckel:

rsync -avHP /home/ /mnt/

Előfordulhat, hogy másoláskor nem szeretnénk, ha a másolás átugrana másik fájlrendszerre, pl. a /var alatti tartalmakat szeretnénk csak másolni, de a /var/downloads alatt be van csatolva egy másik LV. Ilyenkor korlátozzuk a másolást az adott fájlrendszerre:

Másolás cpio-val csak az adott fájlrendszeren belül:

cd /home
find ./ -xdev -depth -print | cpio -pamVd /mnt

Másolás rsynckel csak az adott fájlrendszeren belül:

rsync -avHPx /home/ /mnt/

A két módszer bármelyikét használhatjuk, az rsync különösen hasznos ha egy másolat készítése után meg akarunk győződni róla, hogy biztosan átkerült-e minden (umount után érdemes). A downtime nagyban csökkenthető így.

Másolás után válasszuk le az eredeti fájlrendszert, és csatoljuk fel az újat:

umount /home
mount /dev/mapper/rootvg-home2lv /home

Ha minden rendben működik, akkor az /etc/fstab fájlban is cseréljük az LV-ket, hogy újraindítás után se legyen gond:

sed -i 's/datavg-homelv/rootvg-home2lv/' /etc/fstab

A csere után kedvünk szerint távolítsuk el a régi LV-t, és nevezzük át az újat:

lvremove /dev/mapper/datavg-homelv
lvrename rootvg home2lv homelv
sed -i 's/home2lv/homelv/' /etc/fstab

A végeredmény

A fenti parancsokat használva sikerült átrendeznem az LVM2 kötegeket, a végeredmény magáért beszél:

Partíció RAID kötet VG LV Csatolási pont Méret
sda1
sdb1
md0 /boot 180 MB
sda2
sdb2
md1 swap 15 GB
sda3
sdb3
md2 rootvg rootlv / 37 GB
homelv /home 20 GB
varlv /var 30 GB
sdc1 md3 datavg backupslv /var/backups 200 GB
downloadslv /var/downloads 100 GB
musiclv /var/music 100 GB
videoslv /var/videos 100 GB
wwwlv /var/www 20 GB