LVM: hajmni o'zgartirish va snapshot
LVM asoslari maqolasida PV → VG → LV tuzilmasi yaratildi. LVM'ning asosiy amaliy foydasi shu yerda ko'rinadi: LV hajmini ishlatilayotgan holatda, diskni butunlay qayta bo'lmasdan o'zgartirish va undan bir zumda snapshot olish mumkin.
O'quv maqsadlari
Maqolani tugatgach:
lvextendbilan LV hajmini kengaytira va fayl tizimini shu hajmga moslay olasiz;- LV hajmini kamaytirish nega xavfli ekanini va qanday xavfsizroq bajarilishini tushunasiz;
lvcreate -sbilan snapshot yarata olasiz va uning qanday ishlashini tushunasiz;- snapshotdan foydalanib, o'zgarishlarni bekor qilish (rollback) yoki ma'lumotni saqlash yo'lini bilasiz;
- snapshot hajmi to'lib qolishi nima uchun xavfli ekanini tushunasiz.
LV hajmini kengaytirish
VG'da bo'sh joy bo'lsa, LV'ni ishlatilayotgan holatda kengaytirish mumkin. Bu ikki bosqichdan iborat: avval LVM darajasida, keyin fayl tizimi darajasida.
1. VG'dagi bo'sh joyni tekshirish
VFree ustuni qancha bo'sh joy borligini ko'rsatadi. Bo'sh joy bo'lmasa, avval VG'ga yangi PV qo'shish kerak:
2. LV'ni kengaytirish
+10G — joriy hajmga qo'shiladigan miqdor (mutlaq yangi hajm emas). Butun bo'sh joyni berish uchun:
3. Fayl tizimini yangi hajmga moslash
lvextend faqat blok qurilma hajmini o'zgartiradi — fayl tizimi bundan avtomatik xabardor bo'lmaydi. Fayl tizimi turiga qarab qo'shimcha buyruq kerak.
ext4 uchun:
xfs uchun (faqat mount qilingan holatda kengaytiriladi):
Ikkala buyruqni birma-bir bajarish o'rniga, ext4 uchun bitta amalda bajarish mumkin:
-r bayrog'i lvextend dan keyin mos resize buyrug'ini avtomatik chaqiradi.
Tekshirish:
Info
ext4 va xfs — ikkalasi ham online kengaytirishni qo'llab-quvvatlaydi: LV mount qilingan, ishlatilayotgan holatda ham kengaytirish bajariladi. Bu LVM'ning eng amaliy afzalliklaridan biri.
LV hajmini kamaytirish — nega ehtiyot bo'lish kerak
Kengaytirish xavfsiz va deyarli har doim online bajariladi. Kamaytirish esa boshqacha: fayl tizimi avval o'zi kichraytirilishi, so'ng LV shu yangi, kichikroq hajmga moslashtirilishi kerak — tartib teskari.
Danger
Tartibni buzish (avval LV'ni, keyin fayl tizimini kichraytirish) ma'lumot yo'qolishiga olib keladi: fayl tizimi hali eski, katta hajmga mo'ljallangan bo'ladi, lekin blok qurilma allaqachon kichik. Bundan tashqari, xfs fayl tizimini umuman kichraytirib bo'lmaydi — faqat kattalashtirish mumkin.
ext4 uchun to'g'ri tartib (avval fayl tizimini unmount qilish tavsiya etiladi):
sudo umount /mnt/app
sudo e2fsck -f /dev/vg_data/lv_app
sudo resize2fs /dev/vg_data/lv_app 15G
sudo lvreduce -L 15G /dev/vg_data/lv_app
sudo mount /dev/vg_data/lv_app /mnt/app
xfs fayl tizimida kamaytirish qo'llab-quvvatlanmagani uchun, kerak bo'lsa, odatda: yangi kichikroq LV yaratiladi, ma'lumot rsync bilan ko'chiriladi, so'ng eski LV o'chiriladi.
Production'da kamaytirish operatsiyasi tekshirilgan backup va maintenance oynasisiz bajarilmasligi kerak.
Snapshot: mavzu va qanday ishlaydi
Snapshot — LV'ning ma'lum bir vaqtdagi holatini "muzlatib" qo'yadigan, alohida LV sifatida ko'rinadigan yozuv. Snapshot yaratilgan payt fayllarning to'liq nusxasi ko'chirilmaydi — LVM faqat asl LV'da keyinchalik o'zgargan bloklarni kuzatib boradi (copy-on-write).
lv_app (asl) ──snapshot──> lv_app_snap (o'sha paytdagi holat)
│
└─ keyingi yozuvlar faqat lv_app'ga ta'sir qiladi,
lv_app_snap o'zgarmagan holatni ko'rsatishda davom etadi
Snapshot yaratish
-s— snapshot yaratish rejimi;-n lv_app_snap— snapshot nomi;-L 2G— snapshot uchun ajratilgan joy. Bu asl LV hajmi emas, faqat o'zgaradigan bloklarni yozib borish uchun zaxira.
Tekshirish:
Origin ustuni snapshot qaysi LV'dan olinganini, Data% esa snapshot zaxirasi qancha to'lganini ko'rsatadi.
Warning
Snapshot uchun ajratilgan joy (-L) to'lib qolsa, snapshot ishlatib bo'lmas holga keladi (invalid). Asl LV'da faol yozuv ko'p bo'lgan davrda snapshotni kuzatib borish va Data% ko'rsatkichini muntazam tekshirish kerak.
Snapshotni tekshirish uchun mount qilish
Snapshot faqat o'qish uchun mount qilinishi tavsiya etiladi — bu snapshot maqsadidan kelib chiqadi: o'sha paytdagi holatni tekshirish yoki undan backup olish.
Snapshotdan rollback (asl LV'ni oldingi holatga qaytarish)
lvconvert --merge snapshotdagi holatni asl LV'ga qaytaradi, snapshot esa shu jarayonda yo'q qilinadi. LV faol ishlatilayotgan bo'lsa, merge to'liq amalga oshishi uchun ko'pincha reboot yoki VG'ni qayta faollashtirish kerak bo'ladi — buyruq natijasidagi ogohlantirishni o'qing.
Danger
lvconvert --merge qaytarib bo'lmaydigan amal: snapshot yaratilgandan keyin asl LV'ga yozilgan barcha o'zgarish yo'qoladi. Buni faqat "ma'lumotni ataylab eski holatga qaytarish" kerak bo'lgan holatda, tasdiqlangan qaror sifatida bajaring.
Snapshotni olib tashlash (rollback qilmasdan)
Agar snapshot faqat vaqtincha tekshirish yoki backup uchun ishlatilgan bo'lsa va asl LV'dagi o'zgarishlar saqlanishi kerak bo'lsa:
Bu snapshotni butunlay o'chiradi, asl LV'ga hech qanday ta'sir qilmaydi.
Snapshot qachon ishlatiladi
| Stsenariy | Snapshot foydami? |
|---|---|
| Katta yangilanish oldidan "xavfsizlik nuqtasi" olish | Ha — muammo chiqsa --merge bilan qaytarish mumkin |
| Ishlayotgan bazadan izchil backup olish | Ha — snapshotni mount qilib, undan tar/rsync bilan nusxa olinadi |
| Uzoq muddatli arxivlash | Yo'q — snapshot doimiy saqlash uchun mo'ljallanmagan, asl LV bilan bog'liqligi davom etadi |
| Diskdagi bo'sh joyni tejash | Yo'q — snapshot ham qo'shimcha joy talab qiladi |
Ko'p uchraydigan xatolar
Snapshot hajmini juda kichik olish
Snapshot -L hajmi asl LV'dagi o'zgarishlar miqdoriga qarab tanlanadi, asl LV hajmiga emas. Faol yozuv ko'p bo'lgan LV uchun kichik snapshot tez to'lib, invalid bo'lib qoladi.
resize2fs/xfs_growfs ni unutish
lvextend faqat blok qurilma hajmini o'zgartiradi. Fayl tizimi darajasidagi mos buyruq bajarilmaguncha, df eski hajmni ko'rsatishda davom etadi.
xfs ni kamaytirishga urinish
xfs_growfs faqat kattalashtiradi. Kamaytirish kerak bo'lsa, fayl tizimini emas, LV'ni almashtirish (yangi LV + ma'lumotni ko'chirish) kerak bo'ladi.
Amaliy mashqlar
- Disposable VM'da avvalgi maqoladan qolgan
lv_appLV'sini 5 GiB'ga kengaytiring vadf -hTbilan natijani tasdiqlang. lv_appdan 1 GiB snapshot oling, unga fayl yozing (asl LV'ga, snapshotga emas), so'ng snapshotni mount qilibData%qiymatini kuzating.- Snapshotdan
--mergebilan rollback qiling va asl LV'dagi fayl yo'qolganini tasdiqlang. ext4LV'ni to'g'ri tartibda (unmount → fsck → resize2fs → lvreduce) kamaytirib ko'ring va har bir qadamda natijani tekshiring.
Xulosa
lvextend (kerak bo'lsa -r bilan) LV va fayl tizimini birga, odatda online kengaytiradi; lvreduce esa teskari tartib — avval fayl tizimi, keyin LV — talab qiladi va xfs da umuman qo'llanmaydi. Snapshot copy-on-write mexanizmi orqali LV'ning ma'lum paytdagi holatini saqlaydi va lvconvert --merge bilan qaytarish yoki lvremove bilan bekor qilish mumkin. Ikkalasi ham VG'dagi bo'sh joyga bog'liq — shuning uchun disk bandligi va disk to'lganda troubleshooting maqolalarida ko'rilgan monitoring LVM muhitida ham ahamiyatini yo'qotmaydi.