Tarkibga o'tish

LVM asoslari

Oddiy bo'lim qat’iy hajmga ega va diskdagi joylashuvi bilan chegaralangan. Agar disk to'lsa, bo'limni kengaytirish odatda butun diskni qayta bo'limlashni talab qiladi. LVM (Logical Volume Manager) disklar va bo'limlar ustiga moslashuvchan qatlam qo'shib, aynan shu muammoni hal qiladi: u bir nechta diskni bitta umumiy sig'im pool’iga birlashtiradi va shu pool’dan kerakli hajmdagi logical volume’larni ajratib beradi.

Bu maqola Bo'limlar (partitions) dan keyingi qadam — fizik bo'lim tayyor bo'lgach, uni qanday qilib moslashuvchan LVM saqlash qatlamiga aylantirishni ko'rsatadi. Volume hajmini keyinroq o'zgartirish va snapshot olish LVM: hajmni o'zgartirish va snapshot maqolasida davom etadi.

Nimalarni o'rganasiz

Bu maqola oxirida siz quyidagilarni qila olasiz:

  • PV, VG va LV tushunchalarini va ular o'rtasidagi munosabatni tushuntirish;
  • pvcreate, vgcreate, lvcreate bilan yangi LVM tuzilmasini yaratish;
  • joriy holatni pvs, vgs, lvs va lvdisplay bilan tekshirish;
  • LVM device-mapper nomlarini (/dev/mapper/...) oddiy bo'lim nomidan farqlash;
  • lvremove, vgremove, pvremove bilan LV/VG/PV’ni to'g'ri tartibda olib tashlash;
  • qachon oddiy bo'lim, qachon LVM tanlash kerakligini baholash.

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’lumotlari 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 birlashtiradigan umumiy sig'im pool’i. VG hajmi undagi barcha PV’lar yig'indisiga teng.
  • Logical Volume (LV) — VG'dan ajratilgan, ustida fayl tizimi yaratiladigan mantiqiy bo'lim. Oddiy bo'limdan farqli o'laroq, uning hajmini VG chegaralari doirasida istalgan paytda o'zgartirish mumkin.

Info

LV diskda fizik jihatdan yaxlit joyda turishi shart emas — u VG ichidagi turli PV’lardan yig'ilishi mumkin. Bu foydalanuvchi yoki fayl tizimi uchun hech qanday farq qilmaydi; LV oddiy block qurilma sifatida ko'rinadi.

LVM’dan qachon foydalanish kerak

Vaziyat Oddiy bo'lim LVM
Volume keyinroq kattalashishi kerak bo'lishi mumkin Qiyin, odatda qayta bo'limlash kerak lvextend bilan onlayn kengaytiriladi
Bir nechta diskdan bitta volume sifatida foydalanish Imkonsiz VG bir nechta PV’ni birlashtiradi
Snapshot asosidagi tezkor zaxira Yo'q lvcreate -s bilan mavjud
Eng oddiy, minimal qatlamli sozlama (masalan, kichik VM) Qulay Ortiqcha murakkablik bo'lishi mumkin

LVM foydali, lekin har doim ham kerak emas. Volume hajmi hech qachon o'zgarmaydigan kichik, bitta diskli 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 diskdagi mavjud har qanday ma’lumotni o'chirib yuboradi. Ularni faqat bo'sh, ishlatilmayotgan disk yoki bo'limda, ideal holda o'chirib tashlasa bo'ladigan sinov VM’ida bajaring. Production diskda tajriba qilishdan oldin zaxira nusxa va tasdiqlangan texnik xizmat oynasiga ega bo'ling.

Yangi LVM tuzilmasini qurish

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

1. Physical Volume’larni yarating

sudo pvcreate /dev/sdb /dev/sdc

Natijani tekshirish:

sudo pvs
sudo pvdisplay

pvs qisqa jadval, pvdisplay esa batafsil ma’lumot beradi.

2. Volume Group yarating

sudo vgcreate vg_data /dev/sdb /dev/sdc

vg_data — VG nomi; ikkinchi va keyingi argumentlar unga qo'shiladigan PV’lar. Tekshirish:

sudo vgs
sudo vgdisplay vg_data

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

3. Logical Volume yarating

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

VG'ning faqat bir qismini emas, butun sig'imini bitta LV’ga berish uchun:

sudo lvcreate -n lv_app -l 100%FREE vg_data

-l (kichik harf) foiz yoki extent’lar sonini, -L (katta harf) esa aniq bayt hajmini bildiradi.

Yangi LV device-mapper orqali ikkita teng yo'l bilan ko'rinadi:

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

Ikkalasi ham bitta qurilmaga ishora qiladi; fstab va boshqa konfiguratsiyalar odatda birinchi, o'qilishi osonroq shakldan foydalanadi.

4. Fayl tizimi yarating va mount qiling

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

Doimiy mount uchun /etc/fstab ga UUID orqali yozish tavsiya etiladi — bu fstab maqolasida chuqur ko'rib chiqiladi.

sudo blkid /dev/vg_data/lv_app

Joriy holatni tekshirish buyruqlari

Buyruq Nimani ko'rsatadi
pvs / pvdisplay Physical Volume’lar ro'yxati va holati
vgs / vgdisplay Volume Group’lar, umumiy va bo'sh sig'im
lvs / lvdisplay Logical Volume’lar, hajmi va holati
lsblk Diskdan LV’gacha bo'lgan to'liq ierarxiya, daraxt ko'rinishida
lsblk

Namunaviy chiqish:

NAME                MAJ:MIN RM  SIZE RO TYPE 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 qaysi disklar qaysi LV ostida birlashtirilganini bir qarashda ko'rsatadi.

LV, VG va PV’ni olib tashlash

Olib tashlash har doim yaratishning teskari tartibida bajariladi: avval LV, keyin VG, keyin PV. Agar tartib buzilsa — masalan, ichida hali LV bor VG'ni olib tashlashga urinilsa — LVM xato bilan to'xtaydi.

Danger

Quyidagi buyruqlar ma’lumotlarni qaytarib bo'lmaydigan qilib o'chiradi. Ularni faqat endi kerak bo'lmagan, zaxira nusxasi allaqachon olingan yoki o'chirib tashlasa bo'ladigan sinov VM’idagi LV/VG/PV’ga nisbatan ishga tushiring.

1. LV’ni olib tashlang

Agar u mount qilingan bo'lsa, avval unmount qiling:

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

lvremove odatda tasdiq so'raydi (Do you really want to remove...); skript bilan avtomatlashtirish uchun -y (yoki --yes) ni qo'shing:

sudo lvremove -y /dev/vg_data/lv_app

Tekshirish:

sudo lvs vg_data

Olib tashlangan LV endi ro'yxatda ko'rinmasligi kerak.

2. VG'ni olib tashlang

VG'da hech qanday LV qolmagach:

sudo vgremove vg_data

Agar VG'da hali LV bo'lsa, vgremove "Volume group ... contains ... logical volume(s)" xatosi bilan to'xtaydi — bu butun guruhni tasodifan olib tashlashdan himoya.

3. PV’ni olib tashlang

VG olib tashlangandan keyin LVM metama’lumotlarini disk yoki bo'limdan butunlay olib tashlash mumkin:

sudo pvremove /dev/sdb /dev/sdc

Tekshirish:

sudo pvs

pvremove dan keyin diskni boshqa maqsadda (masalan, oddiy fayl tizimi sifatida) qayta ishlatish mumkin.

LVM osonlashtiradigan ikkita operatsion vazifa

Volume yaratishdan tashqari, ikkita kundalik LVM amali intervyularda doim uchraydi, chunki oddiy bo'lim ularni shunchaki bajara olmaydi.

Disklarni ko'chirgandan keyin VG'ni faollashtirish (vgchange)

Disklar boshqa serverga fizik ko'chirilganda (yoki VG avtomatik faollashtirilmaganda) uning LV’lari pvs/vgs ularni ko'rsa ham /dev/mapper ostida paydo bo'lmaydi. LVM o'z metama’lumotlarini PV’larning o'zida saqlaydi, shuning uchun skanerlash va faollashtirish bilan manzarani qayta tiklaydi:

sudo vgscan                 # discover VGs on all PVs
sudo vgchange -ay vg_data   # activate every LV in the VG (-an deactivates)
lsblk

Aynan shu sababli lvs chiqishida LV active yoki inactive deb tasvirlanadi — faol bo'lmagan LV diskda mavjud, lekin hali qurilma tuguniga (device node) ega emas.

Ishdan chiqayotgan diskdan ma’lumotlarni jonli ko'chirish (pvmove)

Agar SMART VG ortidagi disklardan biri o'layotgani haqida ogohlantirsa, uning ma’lumotlarini uzilishsiz boshqa PV’ga ko'chirish mumkin — fayl tizimi butun vaqt davomida mount qilingan va ishlatilayotgan holda qoladi:

sudo pvcreate /dev/sdd            # a healthy replacement PV
sudo vgextend vg_data /dev/sdd    # add it to the VG
sudo pvmove /dev/sdb              # relocate every extent off the failing /dev/sdb
sudo vgreduce vg_data /dev/sdb    # remove the now-empty PV from the VG
sudo pvremove /dev/sdb            # strip LVM metadata; disk can be pulled

pvmove davom ettiriladigan amal — agar u uzilib qolsa, argumentsiz pvmove ni qayta ishga tushirish davom etayotgan ko'chirishni davom ettiradi. Diskni nol uzilish bilan bo'shatish imkoniyati LVM’ning oddiy bo'limlarga nisbatan eng kuchli real afzalliklaridan biri.

Keng tarqalgan xatolar

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

PV va VG o'zi fayl tizimi emas — ular shunchaki LVM metama’lumotlari. Mount qilish mumkin bo'lgan yagona narsa — tayyor LV.

VG hajmini disklarning umumiy hajmi bilan adashtirish

vgs chiqishidagi VFree — hali hech qanday LV’ga ajratilmagan joy. Yangi LV yaratishda fizik disk hajmini emas, aynan shu ustunni tekshirish kerak.

-L va -l ni adashtirish

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

Mashqlar

  1. O'chirib tashlasa bo'ladigan VM’ga ikkita qo'shimcha virtual disk qo'shing va ularni bitta VG'ga birlashtiring.
  2. pvs, vgs va lvs chiqishlarini solishtiring — har bir ustun nimani ifodalashini qayd qiling.
  3. VG sig'imining yarmini bitta LV’ga, qolganini boshqasiga ajrating. Ikkala hajmni lvs bilan tekshiring.
  4. lsblk daraxtida disk → PV → VG → LV zanjirini kuzatib chiqing.

Mashqni bajardim deyish uchun: VG'ning VFree qiymati berilganda lvcreate -L xatosiz so'rashi mumkin bo'lgan maksimal hajmni ayta olishingiz kerak.

Xulosa

LVM disklarni boshqarishga PV → VG → LV qatlamlarini qo'shib, sig'imni bitta bo'lim chegarasidan ozod qiladi. Yangi tuzilma pvcreate, vgcreate, lvcreate uchligi bilan quriladi, joriy holat esa pvs/vgs/lvs bilan kuzatiladi. Keyingi maqola — LVM: hajmni o'zgartirish va snapshot shu LV’ni ishlatilayotgan paytda qanday kengaytirish va undan qanday snapshot olishni ko'rsatadi.

Manbalar