Disk kvotalari
NFS va autofs maqolasida bitta fayl tizimining tarmoq orqali bir nechta klientga ulanishi ko'rib chiqildi. Ko'p foydalanuvchili yoki umumiy fayl serverida esa boshqa muammo paydo bo'ladi: bitta foydalanuvchi yoki guruh butun bo'limni to'ldirib, xizmatni boshqa hamma uchun ishdan chiqarishi mumkin. Disk kvotasi — administratorga har bir foydalanuvchi yoki guruh qancha joy va nechta fayldan (inode’dan) foydalanishi mumkinligini fayl tizimi darajasida cheklash imkonini beradigan mexanizm.
Nimalarni o'rganasiz
Bu maqola oxirida siz quyidagilarni qila olasiz:
- foydalanuvchi kvotasi va guruh kvotasi o'rtasidagi farqni tushuntirish;
- soft limit, hard limit va grace period’ni hamda ular qanday birga ishlashini tushuntirish;
ext4fayl tizimida/etc/fstaborqali kvotalarni yoqish va ularniquotacheck/quotaonbilan faollashtirish;- kvotalarni
edquota,setquotavarepquotabilan o'rnatish va kuzatish; - XFS’dagi kvota mexanizmi ext4 dan qanday farq qilishini tushuntirish.
Kvotalar nega kerak
Umumiy serverda (masalan, /home ostidagi uy kataloglari yoki fayl ulashish serveri) barcha foydalanuvchilar bitta fayl tizimini bo'lishadi. Kvotalarsiz bitta foydalanuvchi — tasodifan yoki ataylab — butun bo'limni to'ldirib, boshqa foydalanuvchilarni fayl yoza olmaydigan holatda qoldirishi mumkin; hatto tizim log'lari yoki vaqtinchalik fayllar uchun ham joy qolmaydi.
Kvotalar aynan shuning oldini oladi: har bir foydalanuvchi yoki guruh alohida cheklov oladi va undan oshish disk quota exceeded xatosi bilan to'xtaydi — bu butun fayl tizimiga emas, faqat o'sha foydalanuvchining yozish urinishiga ta’sir qiladi.
Info
Kvota — xavfsizlik mexanizmi emas, resurslarni taqsimlash vositasi. U foydalanuvchiga fayllarni o'qish yoki mavjudlarini bajarishga to'sqinlik qilmaydi — faqat u qancha yangi joyni egallashi mumkinligini cheklaydi.
Foydalanuvchi va guruh kvotalari o'rtasidagi farq
Kvotalarni ikkita mustaqil darajada o'rnatish mumkin:
- Foydalanuvchi kvotasi — muayyan foydalanuvchiga (
UID) qo'yilgan cheklov. Masalan,alicefoydalanuvchisi/homeostida ko'pi bilan 10 GiB dan foydalanishi mumkin. - Guruh kvotasi — muayyan guruhga (
GID) qo'yilgan umumiy cheklov. Guruhdagi har bir foydalanuvchining fayllari shu cheklovga birga hisoblanadi. Masalan,devguruhi umumiy loyiha katalogida har bir a’zo uchun alohida emas, birgalikda ko'pi bilan 50 GiB dan foydalanishi mumkin.
Ikkalasini bir vaqtda ishlatish mumkin: foydalanuvchi ham o'zining shaxsiy cheklovi, ham tegishli guruh cheklovi bilan bog'langan — qaysi biri birinchi to'lsa, o'sha qo'llanadi.
Soft limit, hard limit va grace period
Kvota tizimi ikki darajali cheklovni qo'llab-quvvatlaydi:
| Tushuncha | Ma’nosi |
|---|---|
| Soft limit | Ogohlantirish chegarasi. Undan oshish darhol bloklanmaydi, lekin foydalanuvchi ogohlantiriladi va grace period boshlanadi |
| Hard limit | Qat’iy cheklov. Bu qiymatdan hech qachon oshib bo'lmaydi — yozish darhol Disk quota exceeded xatosi bilan to'xtaydi |
| Grace period | Soft limit’dan yuqorida ishlashga ruxsat berilgan vaqt, shundan keyin u hard limit kabi qat’iy qo'llanadi (odatda kunlarda o'lchanadi) |
Mantiq shunday ishlaydi: agar foydalanuvchi soft limit’dan oshsa, tizim uni darhol bloklamaydi — u grace period davomida ishlashda davom etishi mumkin (masalan, katta faylni yozib tugatish uchun). Agar grace period tugashidan oldin foydalanish yana soft limit’dan pastga tushmasa, tizim avtomatik ravishda soft limit’ni hard limit kabi qat’iy qo'llay boshlaydi.
Bu ikki bosqichli yondashuv amalda muhim: u foydalanuvchiga vaqtincha qo'shimcha joy beradi, lekin muammoning cheksiz davom etishiga yo'l qo'ymaydi.
/etc/fstab da kvotalarni yoqish (ext4)
Kvotalar fayl tizimi mount qilinganda usrquota va/yoki grpquota parametrlari bilan yoqiladi. Ular /etc/fstab dagi tegishli qatorga qo'shiladi:
usrquota— foydalanuvchi kvotalarini yoqadi;grpquota— guruh kvotalarini yoqadi.
/etc/fstab sintaksisi va UUID orqali mount qilish fstab maqolasida chuqur ko'rib chiqiladi.
O'zgarishdan keyin fayl tizimini qayta mount qiling (yoki serverni qayta yuklang):
quotacheck: dastlabki hisob-kitob
Kvotalar yoqilgach, mavjud fayllarning har bir egasi bo'yicha foydalanishini birinchi marta hisoblash kerak. Buni quotacheck bajaradi:
-c— yangi kvota fayllarini (aquota.user,aquota.group) yaratish;-u— foydalanuvchi kvotalari uchun hisoblash;-g— guruh kvotalari uchun hisoblash.
Warning
quotacheck fayl tizimini skanerlaydi va katta bo'limlarda vaqt olishi mumkin. Faol yozishlar davom etayotgan production fayl tizimida noaniq natija olish xavfi bor — uni yuklama past bo'lgan paytda yoki fayl tizimi faqat o'qish rejimida bo'lganda ishga tushirish tavsiya etiladi.
quotaon / quotaoff: kvota nazoratini faollashtirish
Hisob-kitob fayllari tayyor bo'lgach, kvota nazoratini faollashtirish kerak:
Holatni tekshirish:
O'chirish (masalan, texnik xizmat uchun):
quotaoff kvota fayllarini o'chirmaydi — u faqat nazoratni vaqtincha to'xtatadi.
edquota: kvotalarni o'rnatish (interaktiv)
edquota — foydalanuvchi yoki guruhning soft/hard cheklovlarini tahrirlash uchun interaktiv vosita; u tizimning sukut bo'yicha matn muharririni ($EDITOR) ochadi:
Tahrirlash oynasi taxminan shunday ko'rinadi:
Disk quotas for user alice (uid 1001):
Filesystem blocks soft hard inodes soft hard
/dev/vg_data/lv_home 512000 10485760 12582912 8000 20000 25000
blocksustunlari kilobaytlarda o'lchanadi (soft/hard);inodesustunlari fayllar sonini cheklaydi — bu oz joy egallasa ham juda ko'p mayda fayl yaratishning oldini oladi.
Guruh uchun ekvivalent buyruq:
Grace period’ni alohida buyruq o'rnatadi:
setquota: kvotalarni o'rnatish (skriptlar uchun)
edquota interaktiv muharrirni talab qiladi; setquota esa avtomatlashtirish uchun qulayroq — har bir qiymat bitta buyruqda beriladi:
Argumentlar tartibi: user soft-block hard-block soft-inode hard-inode filesystem.
setquota skriptlarda va konfiguratsiyani boshqarish vositalarida (Ansible va boshqalar) keng ishlatiladi, chunki u hech qanday interaktiv kiritishni talab qilmaydi.
repquota: hisobot chiqarish
Har bir foydalanuvchi yoki guruh uchun joriy foydalanish va cheklovlarni bitta jadvalda ko'rish uchun:
Namunaviy chiqish:
*** Report for user quotas on device /dev/vg_data/lv_home
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
alice -- 9800000 10485760 12582912 7500 8000 25000
bob +- 12800000 10485760 12582912 6days 9100 8000 25000
bob qatoridagi + belgisi va grace ustunidagi 6days bob soft limit’dan oshganini va grace period tugashiga 6 kun qolganini bildiradi; shundan keyin yozish bloklanadi.
XFS’dagi kvotalar: pquota/gquota
ext4 kvotalari fayl tizimi ustida qo'shimcha, alohida boshqariladigan qatlam sifatida ishlaydi (quotacheck, aquota.user fayllari orqali). XFS boshqacha — uning kvota mexanizmi fayl tizimining o'ziga o'rnatilgan va tashqi quotacheck talab qilinmaydi.
XFS da mount parametrlari boshqacha nomlanadi:
uquota/usrquota— foydalanuvchi kvotasi;gquota/grpquota— guruh kvotasi;pquota/prjquota— loyiha kvotasi (project quota), XFS’ga xos uchinchi o'lchov: foydalanuvchi yoki guruhdan qat’i nazar muayyan katalogga (masalan,/data/project-a) bog'langan cheklov.
XFS’da boshqaruv edquota/setquota orqali emas, xfs_quota buyrug'i orqali bajariladi:
Info
XFS kvotalari fayl tizimi darajasida ishlagani uchun ular odatda ext4 talab qiladigan alohida quotacheck qadamisiz, mount paytidayoq faollashadi. Bu katta production fayl tizimlari uchun ko'pincha XFS tanlanishining sabablaridan biri.
Amaliy vaziyat: umumiy fayl serverida kvota o'rnatish
Vaziyat: /home — bir nechta foydalanuvchi bo'lishadigan ext4 fayl tizimi. Foydalanuvchilardan biri (bob) katta video fayllarni yuklab, boshqalarga joy qoldirmagan.
1-qadam. /etc/fstab da kvotalarni yoqing.
2-qadam. Qayta mount qiling va dastlabki hisob-kitobni bajaring.
3-qadam. bob uchun cheklov o'rnating: soft 8 GiB, hard 10 GiB.
4-qadam. Natijani tasdiqlang.
5-qadam. bob cheklovdan oshib yozishga urinadi.
$ dd if=/dev/zero of=/home/bob/bigfile bs=1M count=3000
dd: error writing '/home/bob/bigfile': Disk quota exceeded
Xulosa: yozish hard limit’da to'xtadi, fayl tizimining qolgan qismi esa (boshqa foydalanuvchilar uchun) himoyalangan holda qoldi. Endi butun serverni qayta ishga tushirmasdan bob bilan keraksiz fayllarni o'chirish yoki cheklovni oshirish haqida to'g'ridan-to'g'ri gaplashish mumkin.
Keng tarqalgan xatolar
Avval quotacheck siz quotaon ni chaqirish
Agar kvota fayllari (aquota.user, aquota.group) mavjud bo'lmasa, quotaon muvaffaqiyatsiz bo'ladi. quotacheck har doim quotaon dan oldin kamida bir marta ishga tushirilishi kerak.
Soft va hard limit’larni bir xil qiymatga o'rnatish
Agar soft va hard teng bo'lsa, grace period mexanizmi amalda hech qanday ta’sir qilmaydi — foydalanuvchi cheklovga yetishi bilan ogohlantirish uchun vaqtsiz bloklanadi. Soft limit odatda hard limit’dan biroz pastroq qo'yiladi.
XFS’da ext4 sintaksisidan foydalanishga urinish
edquota/setquota XFS kvotalarini to'liq boshqara olmaydi — XFS uchun xfs_quota kerak. Fayl tizimi turlarini adashtirmang.
Faqat foydalanuvchi kvotasini yoqib, guruh kvotasini unutish
Umumiy loyiha katalogida guruh darajasidagi nazorat bo'lmasa, bitta guruhning bir nechta a’zosi, har biri o'z foydalanuvchi cheklovidan past bo'lsa ham, birgalikda joyni to'ldirib qo'yishi mumkin.
Mashqlar
- O'chirib tashlasa bo'ladigan VM’da alohida bo'lim yarating, uni
ext4bilan formatlang vausrquota/grpquotabilan mount qiling. - Sinov foydalanuvchisi uchun
setquotaorqali 100 MiB soft / 150 MiB hard cheklov o'rnating va undanddbilan oshishga urinib ko'ring. repquotachiqishidagi grace period ustunini kuzating: soft limit’dan oshgandan keyin necha kundan so'ng u hard limit sifatida qo'llana boshlashini aniqlang.- Xuddi shu bo'limni
xfsbilan formatlang va o'sha cheklovnixfs_quotaorqali qayta o'rnating hamda ikki fayl tizimi o'rtasidagi buyruq farqlarini qayd qiling.
Mashqni bajardim deyish uchun: foydalanuvchining + belgisi va grace qiymatini ko'rsatayotgan repquota qatori berilganda grace period tugashidan oldin foydalanish kamaytirilmasa nima bo'lishini tushuntira olishingiz kerak.
Xulosa
Disk kvotasi joy va inode’lar sonini foydalanuvchi va guruh darajasida cheklaydi; soft/hard limit’lar va grace period qat’iylik bilan moslashuvchanlikni muvozanatlaydi. ext4 da kvotalar /etc/fstab parametri, quotacheck va quotaon orqali bosqichma-bosqich yoqiladi hamda edquota/setquota/repquota uchligi orqali boshqariladi. XFS’ning o'z ichki kvota mexanizmi bor; u xfs_quota orqali boshqariladi va loyiha darajasidagi kvotalarni qo'shimcha qo'llab-quvvatlaydi. Kvota foydalanuvchilarni cheklaydi, lekin fayl tizimining haqiqiy joriy bandligini ko'rsatmaydi — bu farq Disk bandligi (disk usage) maqolasida ko'rib chiqiladi.