Skip to content

LVM asoslari

Oddiy bo'lim (partition) diskning belgilangan joyidan chegaralanmagan, o'zgarmas hajmga ega. Disk to'lib qolsa, bo'limni kengaytirish ko'pincha diskni butunlay qayta bo'lishni talab qiladi. LVM (Logical Volume Manager) shu muammoni hal qilish uchun disk va bo'lim ustiga qo'shimcha, moslashuvchan qatlam qo'shadi: bir nechta diskni bitta hajm hovuziga birlashtiradi va undan kerakli o'lchamdagi mantiqiy tom (logical volume) ajratadi.

Bu maqola bo'limlar mavzusidan keyingi qadam — jismoniy bo'lim tayyor bo'lgach, uni LVM orqali qanday moslashuvchan hajmga aylantirish mumkinligini ko'rsatadi. Hajmni keyinchalik o'zgartirish va snapshot olish LVM: hajmni o'zgartirish va snapshot maqolasida davom etadi.

O'quv maqsadlari

Maqolani tugatgach:

  • PV, VG va LV tushunchalarini va ular orasidagi munosabatni tushunasiz;
  • pvcreate, vgcreate, lvcreate bilan yangi LVM tuzilmasini yarata olasiz;
  • pvs, vgs, lvs va lvdisplay bilan joriy holatni tekshira olasiz;
  • LVM device-mapper nomlarini (/dev/mapper/...) oddiy bo'lim nomidan farqlaysiz;
  • lvremove, vgremove, pvremove bilan LV/VG/PV'ni to'g'ri tartibda o'chira olasiz;
  • oddiy bo'lim va LVM o'rtasida qachon qaysi birini tanlash kerakligini baholaysiz.

Uch qatlamli model: PV, VG, LV

LVM uchta qatlamdan iborat:

Physical Volume (PV)  →  Volume Group (VG)  →  Logical Volume (LV)
   /dev/sdb1                  vg_data              lv_app, lv_logs
   /dev/sdc1
  • Physical Volume (PV) — LVM metama'lumoti yozilgan disk yoki bo'lim. Xom disk (/dev/sdb) ham, oddiy bo'lim (/dev/sdb1) ham PV bo'la oladi.
  • Volume Group (VG) — bir yoki bir nechta PV'ni birlashtirgan umumiy hajm hovuzi. VG hajmi unga kiritilgan barcha PV'larning yig'indisiga teng.
  • Logical Volume (LV) — VG ichidan ajratilgan, fayl tizimi yaratiladigan mantiqiy bo'lim. Oddiy bo'limdan farqi — hajmi VG chegarasida istalgan vaqt o'zgartirilishi mumkin.

Info

LV disk ustida jismoniy jihatdan uzluksiz joylashishi shart emas — u VG ichidagi turli PV'lardan yig'ilgan bo'lishi mumkin. Foydalanuvchi va fayl tizimi uchun bu farqi sezilmaydi, LV oddiy blok qurilmasi sifatida ko'rinadi.

LVM ni qachon ishlatish kerak

Vaziyat Oddiy bo'lim LVM
Hajmni keyinchalik kengaytirish ehtimoli bor Qiyin, ko'pincha qayta bo'lish kerak lvextend bilan online kengaytiriladi
Bir nechta diskni bitta hajm sifatida ishlatish Mumkin emas VG bir nechta PV'ni birlashtiradi
Snapshot orqali tezkor backup Yo'q lvcreate -s bilan mavjud
Eng oddiy, minimal qatlamli sozlash (masalan, kichik VM) Qulay Ortiqcha murakkablik bo'lishi mumkin

LVM foydali, lekin har doim shart emas. Hajmi hech qachon o'zgarmaydigan, bitta diskli kichik serverda oddiy bo'lim yetarli bo'lishi mumkin.

Kerakli paket

Debian/Ubuntu oilasida:

sudo apt update
sudo apt install lvm2

lvm2 o'rnatilgach, pvcreate, vgcreate, lvcreate kabi buyruqlar mavjud bo'ladi.

Danger

Quyidagi buyruqlar diskning mavjud ma'lumotini o'chirib yuboradi. Ularni faqat bo'sh, ishlatilmayotgan disk yoki bo'limda, tercihan disposable test VM'da bajaring. Production diskda tajriba qilishdan oldin backup va o'zgarishlarni tasdiqlaydigan maintenance oynasi bo'lsin.

Yangi LVM tuzilmasi yaratish

Faraz qilaylik, /dev/sdb va /dev/sdc — ikkita bo'sh disk.

1. Physical Volume yaratish

sudo pvcreate /dev/sdb /dev/sdc

Natijani tekshirish:

sudo pvs
sudo pvdisplay

pvs qisqa jadval, pvdisplay batafsil ma'lumot beradi.

2. Volume Group yaratish

sudo vgcreate vg_data /dev/sdb /dev/sdc

vg_data — VG nomi, ikkinchi va undan keyingi argumentlar unga kiritiladigan PV'lar. Tekshirish:

sudo vgs
sudo vgdisplay vg_data

vgs chiqishidagi VSize ustuni ikkala diskning umumiy hajmini ko'rsatadi.

3. Logical Volume yaratish

sudo lvcreate -n lv_app -L 20G vg_data
  • -n lv_app — LV nomi;
  • -L 20G — aniq hajm (masalan, gigabaytda).

VG hajmining bir qismini emas, barchasini bitta LV'ga berish uchun:

sudo lvcreate -n lv_app -l 100%FREE vg_data

-l (kichik harf) foizni yoki extent sonini, -L (katta harf) aniq baytli hajmni bildiradi.

Yangi LV device-mapper orqali ikki xil yo'l bilan ko'rinadi:

/dev/vg_data/lv_app
/dev/mapper/vg_data-lv_app

Ikkalasi ham bir xil qurilmaga ishora qiladi; fstab va boshqa konfiguratsiyada odatda birinchi, o'qish uchun qulayroq shakl ishlatiladi.

4. Fayl tizimi yaratish va mount qilish

sudo mkfs.ext4 /dev/vg_data/lv_app
sudo mkdir -p /mnt/app
sudo mount /dev/vg_data/lv_app /mnt/app

Doimiy ulanish uchun /etc/fstab ga UUID orqali yozish tavsiya etiladi — bu fstab maqolasida batafsil ko'rilgan.

sudo blkid /dev/vg_data/lv_app

Joriy holatni tekshirish buyruqlari

Buyruq Nima ko'rsatadi
pvs / pvdisplay Physical Volume'lar ro'yxati va holati
vgs / vgdisplay Volume Group'lar, umumiy va bo'sh hajm
lvs / lvdisplay Logical Volume'lar, hajm va holat
lsblk Diskdan LV'gacha butun ierarxiyani daraxt ko'rinishida
lsblk

Namunaviy natija:

NAME                MAJ:MIN RM  SIZE RO TYPE LSBLK MOUNTPOINTS
sdb                   8:16   0   10G  0 disk
└─vg_data-lv_app    253:0    0   20G  0 lvm  /mnt/app
sdc                   8:32   0   10G  0 disk
└─vg_data-lv_app    253:0    0   20G  0 lvm  /mnt/app

lsblk yordamida qaysi disklar qaysi LV ostida birlashganini bir qarashda ko'rish mumkin.

LV, VG va PV'ni o'chirish

O'chirish har doim yaratishga teskari tartibda bajariladi: avval LV, keyin VG, so'ng PV. Tartib buzilsa, masalan hali LV bor VG'ni o'chirishga urinilsa, LVM xato berib to'xtatadi.

Danger

Quyidagi buyruqlar ma'lumotni qaytarib bo'lmas holda o'chiradi. Ularni faqat kerak bo'lmagan, oldindan backup olingan yoki disposable test VM'dagi LV/VG/PV uchun bajaring.

1. LV'ni o'chirish

Avval mount qilingan bo'lsa, unmount qiling:

sudo umount /mnt/app
sudo lvremove /dev/vg_data/lv_app

lvremove odatda tasdiq so'raydi (Do you really want to remove...); skriptda avtomatlashtirish kerak bo'lsa -y (yoki --yes) qo'shiladi:

sudo lvremove -y /dev/vg_data/lv_app

Tekshirish:

sudo lvs vg_data

O'chirilgan LV endi ro'yxatda ko'rinmasligi kerak.

2. VG'ni o'chirish

VG ichida boshqa LV qolmagandan keyin:

sudo vgremove vg_data

VG'da hali LV bo'lsa, vgremove "Volume group ... contains ... logical volume(s)" deb xato beradi — bu tasodifan butun guruhni o'chirib yubormaslik uchun himoya.

3. PV'ni o'chirish

VG o'chirilgandan keyin, disk yoki bo'limdagi LVM metama'lumotini butunlay olib tashlash:

sudo pvremove /dev/sdb /dev/sdc

Tekshirish:

sudo pvs

pvremovedan keyin diskni boshqa maqsadda (masalan, oddiy fayl tizimi sifatida) qayta ishlatish mumkin bo'ladi.

Ko'p uchraydigan xatolar

PV'ni to'g'ridan-to'g'ri mount qilishga urinish

PV va VG o'zi fayl tizimi emas — ular faqat LVM metama'lumoti. Mount qilinadigan narsa faqat tayyor LV.

VG hajmini diskning umumiy hajmi bilan adashtirish

vgs dagi VFree — hali LV'ga ajratilmagan bo'sh hajm. Yangi LV yaratishda shu ustunga qarash kerak, jismoniy disk hajmiga emas.

-L va -l ni chalkashtirish

-L 20G — aniq hajm, -l 50%FREE — bo'sh joyning foizi. Ikkisini bir vaqtda ishlatib bo'lmaydi.

Amaliy mashqlar

  1. Disposable VM'da ikkita qo'shimcha virtual disk qo'shing va ularni bitta VG'ga birlashtiring.
  2. pvs, vgs, lvs natijalarini solishtiring — har birida qaysi ustun nimani ifodalashini yozing.
  3. VG hajmining yarmini bitta LV'ga, qolgan qismini boshqa LV'ga ajrating. lvs orqali ikkalasining hajmini tekshiring.
  4. lsblk daraxtida disk → PV → VG → LV bog'lanishini toping.

Xulosa

LVM disk boshqaruviga PV → VG → LV qatlamlarini qo'shib, hajmni bo'lim chegarasidan ozod qiladi. Yangi tuzilma pvcreate, vgcreate, lvcreate uchligi bilan yaratiladi, joriy holat esa pvs/vgs/lvs bilan kuzatiladi. Keyingi LVM: hajmni o'zgartirish va snapshot maqolasi shu LV'ni ishlatilayotgan holatda qanday kengaytirish va undan snapshot olishni ko'rsatadi.

Manbalar