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 lemezzel, 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öteteket és fájlrendszereket át akartam alakítani, hogy a rendszerfájlok és az adatok merevlemez szinten is elkülönüljenek.
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
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 |