Disko kvotos yra naudojamos apriboti naudotojui ar naudotojų grupui suteiktos disko vietą failinėje sistemoje. Nenaudojant šių limitų naudotojai gali netikėtai užpildyti visą disko vietą sukeldami problemą ne tik sau, bet ir serverio administratoriui, nes dėl visos disko vietos išnaudojimo administratorius galite prarasti galimybę prisijungti prie serverio.
Šioje pamokoje pateiksime instrukciją, kaip komandinės eilutės pagalba įdiegti įrankį kvotų kūrimui, stebėjimui bei nurodysite, kaip nustatyti tam tikras kvotas konkretiems naudotojams.
0. Preliminarūs reikalavimai
- Pamoka yra parengta naudojant mūsų parengtą Ubuntu 18.04 OS šabloną KVM virtualizacijos serveriuose, tačiau taip pat gali tikti ir kitose OS atlikus nedidelius pritaikymus pagal sistemos naudojamas komandas.
- Ne
root naudotojas turintis
sudo teises. Susikurti naudotoją ir priskirti jam teises galite pagal šią
instrukciją.
1. Kvotos įrankio diegimas
Rekomenduojame visų pirma atsinaujinti paketus ir tada idiegti
quota:
sudo apt update
sudo apt install quota
Prisijungę prie serverio iš naujo galite patikrinti turimą versiją su šia komanda:
Pateikiamas atsakymas:
Quota utilities version 4.04.
. . .
Gali būti įdiegia ir kita versija, tai neturi įtakos.
2. Kvotos branduolio modulio diegimas
Kvotos modulio diegimas gali būti atliekamas tik KVM serveriuose. Konteineriuose, deja, nėra galimybės naudoti kvotų. Modulio diegimui naudokite šią komandą:
sudo apt install linux-image-extra-virtual
Ši komanda įdiegs reikiamus modulius kvotų diegimui. Papildomai reikalingas ir linux-generic paketas kvotų veikimas:
sudo apt -y install linux-generic
Atliekame modulių pridėjimą, kad jie būtų matomi ir po perkrovimo. Tada atlikite perkrovimą:
echo quota_v1 >> /etc/modules
echo quota_v2 >> /etc/modules
reboot
Toliau atnaujinsime failinę sistemą mountinimo funkcijai tam, kad galėtume įjungti kvotos savo root failinėje sistemoje.
3. Failinės sistemos mountinimo funkcijos atnaujinimas
Tam, kad aktyvuoti kvotas konkrečioje failinėje sistemoje, turime mountinti ją su keliomis su kvotomis susijusiomis parinktimis. Šį veiksmą atliekame atnaujindami failinės sistemos įrašus
/etc/fstab/ konfigūraciniuose failuose. Atidarykite failą su savo norimu redaktoriumi:
sudo nano /etc/fstab
Prieš errors=remount-ro įterpkite usrquota,grpquota įrašus:
UUID=dbe3eca9-174a-xxxx-ae9b-f7fcd9edb595 / ext4 usrquota,grpquota,errors=remount-ro 0 0
Šis veiksmas leidžia įgalinti naudotojo (usrquota) ir grupės (grpquota) kvotas failinėse sistemose. Jeigu jums reikalingas tik vienas iš dviejų kvotų tipų, palikite tik vieną. Svarbiausia, kad nepaliktumėte tarpų ar kitų papildomų simbolių šiame faile.
Perkraukite failinę sistemą tam, kad nauji pasirinkimai pradėtų veikti:
Galime patikrinti ar pakeitimai įsigaliojo tikridami /proc/mounts failą. Naudosime grep tam, kad būtų pateikiamas root failinės sistemos įrašas:
cat /proc/mounts | grep ' / '
Atsakymas:
/dev/sda1 / ext4 rw,relatime,quota,usrquota,grpquota,errors=remount-ro,data=ordered 0 0
Patikrinkite ar matote du (arba vieną) pasirinkimus, kuriuos nurodėte. Dabar kai įdiegėme įrankį ir atnaujinome failinę sistemą, galime įjungti kvotų sistemą.
4. Kvotų aktyvavimas
Veiksmai reikalingi prieš aktyvavimą:
Šiuo veiksmu sukuriami katalogai /aquota.user ir /aquota.group. Šiuose failuose bus saugomi konkretūs kvotų limitai bei šie failai reikalingi tam, kad galėtume stebėti kvotas.
- u: - nurodo, kad turi būti sukuriamas naudotojų duomeninis paremtas failas;
- g: - nurodo, kad turi būti sukuriamas grupių duomeninis paremtas failas;
- m: - išjungia failų sistemos pakartotinį remountinimąir nurodo kaip read-only, kai vykdomas pradinis kvotų nustatymas.
Patikrinti ar konkretūs kvotoms reikalingi failai sukurti galite paleisdami komandą:
Jums bus pateikiamas atsakymas:
aquota.group bin dev home initrd.img.old lib64 media opt root sbin sys usr vmlinuz
aquota.user boot etc initrd.img lib lost+found mnt proc run srv tmp var vmlinuz.old
Patikrinus, kad failai yra sukurti galite aktyvuoti kvotas:
5. Naudotojų kvotų konfigūravimasEgzistuoja keli skirtingi būdai kaip galite konfigūruoti naudotojų kvotas. Šiuo atveju mes naudosimte edquota ir setquota komandas.
1. Naudotojų/grupių kvotų administravimas naudojant edquota
edquota komanda naudojama kvotų tvarkymui. Pavyzdžiui:
-u opcija nurodo, kad bus keičiama naudotojo kvota. Jeigu norite keisti grupės kvotos teises, naudokite -g opciją.
Jums bus atidaromas failas naudojant numatytą teksto redaktorių. Failas panašus į crontab -e naudojamą lentelę. Bus pateikiamas failo turinys į šį:
Disk quotas for user vardas (uid 1000):
Filesystem blocks soft hard inodes soft hard
/dev/sda1 16 0 0 4 0 0
Šioje lentelėje galite apriboti naudotojo kvotas naudojant
blocks ir
inodes reikšmes.
blocks reiškia, kiek kilobaitų šiuo metu naudoja naudotojas
/dev/sda1 failinėje sistemoje,
inodes - kiek failų bei direktorijų gali turėti naudotojas. Svarbu pažymėti, kad jeigu
inodes limitas pasiekamas anksčiau, nebūna atsižvelgiama į
blocks limitą ir naudotojas nebegalės kurti naujų failų ar direktorijų.
soft ir
hard reiškia kokie galimi limitai ties
block ar
inodes reikšmėmis.
soft reikšmė suteikia mažesnė ir joje nurodoma, kiek vietos gali naudoti naudotojas netaikant papildomų apribojimų. Jeigu naudotojas viršija šį limitą ir per 7 dienas negrįžta į žemesnę nei
soft limitas reikšmę, ji būna pakeičiama į
hard ir yra uždraudžiama kurti naujus failus ar direktorijas.
hard reikšmė nurodo kokia maksimali vieta ar inode kiekis galimas. Pasiekus šį limitą naudotojas iškart nebegali kurti naujų failų ar direktorijų.
Savo lentelę atnaujinimo su reikšmėmis:
Disk quotas for user vardas (uid 1000):
Filesystem blocks soft hard inodes soft hard
/dev/vda1 16 100M 110M 4 0 0
Išsaugokite ir uždarykite failą.
2. Naudotojų/grupių kvotų administravimas naudojant setquota
Skirtingai nei edquota, setquota leidžia koreguoti kvotų reikšmes vienos komandos įvedimu. Pavyzdžiui:
sudo setquota -u vardas 200M 220M 0 0 /
Šia komanda mes dvigubai pakeliame vardas naudotojo blocks reikšmes nekoreguodami inodes reikšmių. Inodes reikšmių nurodytas būtinas net tada kai jų nekeičiame.
Atlikę komandą galite pasitikrinti ar limitai sėkmingai nustatyti:
6. Kvotų ataskaitosNorint pamatyti visų naudotojų kvotų ataskaitą, naudokite komandą:
Jums bus pateikiamas atsakymas:
*** Report for user quotas on device /dev/sda1
Block grace time: 7days; Inode grace time: 7days
Space limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 1891M 0K 0K 76805 0 0
daemon -- 60K 0K 0K 3 0 0
systemd-timesync -- 4K 0K 0K 2 0 0
syslog -- 768K 0K 0K 7 0 0
_apt -- 20K 0K 0K 3 0 0
landscape -- 8K 0K 0K 4 0 0
pollinate -- 4K 0K 0K 2 0 0
vardas -- 16K 200M 220M 4 0 0
Jums pateikiamas / root failinės sistemos naudotojų sąrašas su naudojamais kiekias bei limitais. Kadangi limitus nustatėm tik vardas naudotojui, tik ties juo matysim soft ir hard reiškmes. Taip pat pastebėsite Block grace time: 7 days įrašą ir grace stulpelį. Jeigu bent vienas naudotojas viršys soft limitą, grace stulpelyje matysite kiek laiko jam liko sumažinti savo disko vietą.
7. Grace periodo konfigūravimas
Galime keisti grace periodą, kuriuo naudotojui yra suteikia laiko tarpas sumažinti savo naudojamą disko vietą/inode kiekį. Tam naudojame setquota komandą:
sudo setquota -t 864000 864000 /
Ši komanda nustato tiek blocks tiek inodes limitą į 864000 sekundes, kas yra 10 dienų. Šis nustatymas vykdomas visiems naudotojams ir abi reikšmes turi būti nurodomas net ir tuo atveju jei nenaudojate vienos iš reikšmių (blocks ar inodes) limitavimo. Reikšmes turi būti nurodomas sekundėmis.
Gali patikrinti ar nustatymas įsigaliojo:
Pateikiamas atsakymas:
. . .
Block grace time: 10days; Inode grace time: 10days
. . .
Štai ir viskas. Galite sėkmingai naudotis kvotomis bei jas administruoti. Sėkmės!