Disk kvotalari
NFS va autofs maqolasida bitta fayl tizimi tarmoq orqali bir nechta mijozga ulanishi ko'rildi. Ko'p foydalanuvchili yoki umumiy fayl serverda yana bir muammo paydo bo'ladi: bitta foydalanuvchi yoki bitta guruh butun bo'limni to'ldirib qo'yishi mumkin, va bu boshqa hamma uchun xizmatni to'xtatadi. Disk kvotasi — administratorga har bir foydalanuvchi yoki guruh qancha joy va qancha fayl (inode) ishlatishi mumkinligini fayl tizimi darajasida cheklash imkonini beruvchi mexanizm.
O'quv maqsadlari
Maqolani tugatgach:
- user va group kvotasi orasidagi farqni tushunasiz;
- soft limit, hard limit va grace period tushunchalarini va ular birga qanday ishlashini bilasiz;
ext4fayl tizimida/etc/fstaborqali kvotani yoqa olasiz vaquotacheck/quotaonbilan ishga tushira olasiz;edquota,setquotavarepquotabilan kvotani belgilash va nazorat qila olasiz;- XFS fayl tizimidagi kvota mexanizmi ext4'dan nima bilan farq qilishini tushunasiz.
Nima uchun kvota kerak
Umumiy serverda (masalan, uy kataloglari /home da, yoki fayl almashish serverida) barcha foydalanuvchilar bitta fayl tizimidan foydalanadi. Kvotasiz vaziyatda bitta foydalanuvchi — tasodifan yoki ataylab — butun bo'limni to'ldirishi mumkin, natijada boshqa foydalanuvchilar fayl yoza olmay qoladi, hatto tizim loglari va vaqtinchalik fayllar uchun ham joy qolmaydi.
Kvota shu muammoni oldini oladi: har bir foydalanuvchi yoki guruhga alohida chegara qo'yiladi, chegaradan oshib ketish urinishi disk quota exceeded xatosi bilan to'xtatiladi — butun fayl tizimi emas, faqat shu foydalanuvchining yozish amali.
Info
Kvota — xavfsizlik mexanizmi emas, resurs taqsimoti vositasi. U foydalanuvchini fayllarni o'qishdan yoki mavjud fayllarni bajarishdan to'xtatmaydi — faqat yangi joy egallashini cheklaydi.
User va group kvota farqi
Kvota ikki mustaqil darajada belgilanishi mumkin:
- User kvota — muayyan bitta foydalanuvchiga (
UID) qo'yilgan chegara. Masalan,alicefoydalanuvchisi/homeda ko'pi bilan 10 GiB ishlatishi mumkin. - Group kvota — muayyan guruhga (
GID) qo'yilgan umumiy chegara. Guruh ichidagi barcha foydalanuvchilarning fayllari birgalikda shu chegaraga hisoblanadi. Masalan,devguruhi umumiy loyihalar katalogida ko'pi bilan 50 GiB ishlatishi mumkin, guruh ichidagi har bir a'zo alohida emas.
Ikkalasi bir vaqtda ham ishlatilishi mumkin: foydalanuvchi o'zining shaxsiy limitidan tashqari, a'zo bo'lgan guruhning umumiy limitiga ham bog'liq bo'ladi — qaysi biri birinchi to'lsa, o'sha chegara ishlaydi.
Soft limit, hard limit va grace period
Kvota tizimi ikkita chegara darajasini qo'llab-quvvatlaydi:
| Tushuncha | Ma'nosi |
|---|---|
| Soft limit | Ogohlantirish chegarasi. Undan oshib ketish darhol taqiqlanmaydi, lekin foydalanuvchiga ogohlantirish ko'rsatiladi va grace period boshlanadi |
| Hard limit | Qat'iy chegara. Bu qiymatdan oshib ketish umuman mumkin emas — yozish amali darhol Disk quota exceeded xatosi bilan to'xtaydi |
| Grace period | Soft limit oshib ketgandan keyin, hard limitgacha vaqtinchalik ishlashga ruxsat berilgan muddat (odatda kunlarda) |
Mantiq quyidagicha: foydalanuvchi soft limitdan oshsa, tizim darhol bloklamaydi — grace period davomida ishlashni davom ettirish mumkin (masalan, katta faylni tugatish uchun). Agar grace period tugagunga qadar foydalanish soft limitdan pastga tushmasa, tizim avtomatik ravishda soft limitni ham hard limit kabi qat'iy qo'llay boshlaydi.
0 ────────── soft limit ────────── hard limit
erkin ogohlantirish + yozish
foydalanish grace period taqiqlanadi
Bu ikki bosqichli yondashuv real hayotda muhim: foydalanuvchiga vaqtinchalik biroz ortiqcha joy berib, lekin muammoni cheksiz davom ettirishga yo'l qo'ymaydi.
/etc/fstab da kvotani yoqish (ext4)
Kvota fayl tizimi mount qilinganda usrquota va/yoki grpquota opsiyalari bilan yoqiladi. /etc/fstab da tegishli qatorga qo'shiladi:
usrquota— user kvotasini yoqadi;grpquota— group kvotasini yoqadi.
/etc/fstab sintaksisi va UUID orqali mount qilish fstab maqolasida batafsil ko'rilgan.
O'zgarishdan keyin fayl tizimini qayta mount qilish (yoki serverni qayta yuklash):
quotacheck: boshlang'ich hisob-kitob
Kvota yoqilgandan keyin, mavjud fayllarning har bir egasi qancha joy ishlatayotganini birinchi marta hisoblash kerak. Buning uchun quotacheck ishlatiladi:
-c— yangi kvota fayllarini yaratish (aquota.user,aquota.group);-u— user kvotasi uchun hisoblash;-g— group kvotasi uchun hisoblash.
Warning
quotacheck fayl tizimini skanerlaydi va katta bo'limlarda vaqt talab qilishi mumkin. Faol yozuv davom etayotgan production fayl tizimida noto'g'ri natija olish xavfi bor — imkon qadar kam yuklama vaqtida yoki fayl tizimi read-only rejimida bajarish tavsiya etiladi.
quotaon / quotaoff: kvotani ishga tushirish
Hisob-kitob fayllari tayyor bo'lgandan keyin, kvota nazoratini faollashtirish kerak:
Holatni tekshirish:
O'chirish (masalan, texnik xizmat uchun):
quotaoff kvota fayllarini o'chirmaydi — faqat nazoratni vaqtincha to'xtatadi.
edquota: kvota belgilash (interaktiv)
edquota foydalanuvchi yoki guruh uchun soft/hard limitlarni tahrirlash imkonini beruvchi interaktiv vosita — tizim standart matn muharririni ($EDITOR) ochadi:
Ochilgan tahrirlash oynasi taxminan quyidagicha 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 (soft/hard) o'lchanadi;inodesustunlari fayl sonini cheklaydi — bu katta miqdorda mayda fayl yaratishning oldini oladi, hatto ular kam joy egallasa ham.
Guruh uchun analog buyruq:
Grace period ni sozlash uchun alohida buyruq:
setquota: kvota belgilash (skript uchun)
edquota interaktiv muharrirni talab qiladi, avtomatlashtirish uchun esa setquota qulayroq — bitta buyruqda barcha qiymatlar beriladi:
Argumentlar tartibi: foydalanuvchi soft-block hard-block soft-inode hard-inode fayl-tizimi.
setquota skriptlarda va konfiguratsiya-boshqaruv vositalarida (Ansible va h.k.) ko'p foydalaniladi, chunki u interaktiv muloqot talab qilmaydi.
repquota: hisobot olish
Barcha foydalanuvchilar yoki guruhlar bo'yicha joriy foydalanish va limitlarni bir jadvalda ko'rish uchun:
Namunaviy natija:
*** 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 limitdan oshib ketgan va grace period tugashiga 6 kun qolgan, shundan keyin yozish taqiqlanadi degani.
XFS fayl tizimidagi kvota: pquota/gquota
ext4 kvotasi fayl tizimi ustida qo'shimcha, alohida boshqariladigan qatlam sifatida ishlaydi (quotacheck, aquota.user fayllari orqali). XFS esa bundan farqli — kvota mexanizmi fayl tizimining o'ziga o'rnatilgan (built-in), tashqi quotacheck talab qilinmaydi.
XFS da mount opsiyalari boshqacha nomlanadi:
uquota/usrquota— user kvotasi;gquota/grpquota— group kvotasi;pquota/prjquota— project kvota, XFS'ga xos uchinchi daraja: foydalanuvchi yoki guruhdan qat'i nazar, muayyan katalogga (masalan,/data/project-a) chegara qo'yish imkonini beradi.
XFS'da boshqaruv xfs_quota buyrug'i orqali amalga oshiriladi, edquota/setquota emas:
Info
XFS kvotasi fayl tizimi darajasida ishlaganligi sababli, odatda ext4dagi alohida quotacheck bosqichisiz, mount paytidayoq faollashadi. Bu XFS'ning katta production fayl tizimlarida tez-tez tanlanishining sabablaridan biri.
Amaliy ssenariy: umumiy fayl serverida kvota o'rnatish
Vaziyat: /home — ext4 fayl tizimi, bir nechta foydalanuvchi umumiy ishlatadi. Bitta foydalanuvchi (bob) katta video fayllar yuklab, boshqalarga joy qoldirmayapti.
1-qadam. Kvotani /etc/fstab da yoqish.
2-qadam. Qayta mount qilish va boshlang'ich hisoblash.
3-qadam. bob uchun chegara belgilash: soft 8 GiB, hard 10 GiB.
4-qadam. Natijani tekshirish.
5-qadam. bob chegaradan oshirib faylga 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 jarayoni hard limitda to'xtadi, lekin fayl tizimining qolgan qismi (boshqa foydalanuvchilar uchun) himoyalangan qoldi. Endi bob bilan alohida gaplashib, keraksiz fayllarni o'chirish yoki limitni oshirish masalasini hal qilish mumkin — butun serverni qayta ishga tushirmasdan.
Ko'p uchraydigan xatolar
quotachecksiz quotaon chaqirish
Kvota fayllari (aquota.user, aquota.group) mavjud bo'lmasa, quotaon xato beradi. quotacheck har doim quotaondan oldin, kamida bir marta bajarilishi kerak.
Soft va hard limitni bir xil qiymat qilib qo'yish
Agar soft va hard bir xil bo'lsa, grace period mexanizmi amalda ishlamaydi — foydalanuvchi chegaraga yetgan zahoti bloklanadi, ogohlantirish uchun vaqt qolmaydi. Odatda soft limit hard limitdan biroz past qo'yiladi.
ext4 sintaksisini XFS'da ishlatishga urinish
edquota/setquota XFS kvotasini to'liq boshqara olmaydi — XFS uchun xfs_quota ishlatilishi shart. Fayl tizimi turini aralashtirib yubormaslik kerak.
Faqat user kvotasini yoqib, group kvotasini unutish
Umumiy loyihalar katalogida guruh darajasidagi nazoratsiz, bitta guruhning bir nechta a'zosi birgalikda joyni tugatishi mumkin, garchi har bir a'zo alohida o'z user limitidan pastda bo'lsa ham.
Amaliy mashqlar
- Disposable VM'da alohida bo'lim yarating, uni
ext4bilan formatlab,usrquota/grpquotabilan mount qiling. - Test foydalanuvchisi uchun
setquotaorqali soft 100 MiB, hard 150 MiB chegara qo'ying vaddbilan chegaradan oshirib ko'ring. repquotanatijasidagi grace period ustunini kuzating: soft limitdan oshgach necha kundan keyin hard limit sifatida qo'llanishini aniqlang.- Xuddi shu bo'limni
xfsbilan formatlab,xfs_quotaorqali bir xil chegarani qayta o'rnating va ikkala fayl tizimidagi buyruqlar farqini yozib chiqing.
Xulosa
Disk kvotasi user va group darajasida joy hamda inode sonini cheklaydi, soft/hard limit va grace period orqali qat'iylik va moslashuvchanlik o'rtasida muvozanat yaratadi. ext4da kvota /etc/fstab opsiyasi, quotacheck va quotaon orqali qadam-baqadam yoqiladi, boshqaruv esa edquota/setquota/repquota uchligi bilan amalga oshiriladi. XFS o'zining built-in kvota mexanizmiga ega va xfs_quota orqali boshqariladi, qo'shimcha ravishda project-darajasidagi kvotani ham qo'llab-quvvatlaydi. Kvota foydalanuvchilarni cheklaydi, lekin butun fayl tizimining real bandligini ko'rsatmaydi — bu farq disk bandligi maqolasida ko'riladi.