Квотите са средство, с чиято помощ указвате колко дисково пространство
може да заема даден потребител или група на Вашата Linux система. С квотите
определяте лимитита за дисково пространство по два начина: броят
inode-и (файлове, устройства, директории т.н), които даден потребител или
група може да притежава, както и броят блокове от диска(в повечето случаи
блокове от 1К).
Квотите задължават потребителите или групите от потребители да спазват
този лимит, като по този начин предпазват от заемане
на цялото дисково пространство от един потребител и нарушаване нормалната
работа на системата.
Квотите се определят за различни файлови системи, потребители или групи
от потребители.
В момента се поддръжа единствено ext2 файлова система.
За да използвате квоти на вашата Linux машина трябва да имате root права
и да направите следните стъпки.
1. Конфигуриране на Linux ядрото:
Преди да може да използвате квотите на вашата система трябва да компилирате
ядрото с опцията "Filesystems ->Quota support". След което трябва
да прекомпилирате ядрото и да го инсталирате.
2. Избиране на файлова система:
След като започнете да използвате новото ядро трябва да решите коя файлова
система се нуждае от квоти. Обикновено това са дяловете в които се намират
директориите на потребителите на системата. За да разрешите квотите за
дадена файлова система трябва да редактирате /etc/fstab файлът и
да добавите usrquota и grpquota. Ето и пример:
# устройство директория тип
опции
/dev/hda1 /
ext2 defaults
/dev/hda2 none
swap sw
/dev/hda3 /usr
ext2 defaults,usrquota
/dev/hdb1 /usr/users ext2 defaults,grpquota
/proc proc defaults
Ключовата дума "usrquota" се използва когато искаме да използваме квоти
за отделни потребители. Ключовата дума "grpquota"
от своя страна позволява използването на квоти за групи от потребители
на системата. Ако използвате тези ключови думи -
usrquota и grpquota без "=" тогава системата ще търси файловете които
описват квотите на отделните групи и потребители
в началната директория на устройството за която са активирани квотите.
За конкретния пример(т.е /etc/fstab) трябва да напишете следните команди:
touch /usr/quota.user
chmod 600 /usr/quota.user
touch /usr/users/quota.gruop
chmod 600 /usr/users/quota.gruop
Файлът "quota.user" съдържа в себе си информация за квотите на
отделните потребители, докато файлът "quota.group" описва квотите на отделните
групи.
Може да посочите от къде се намират тези файлове, ако не са разположени
в главната директория.
Това става по следният начин: пишете "usrquota=/usr/adm/quotasrc.user"
ако искате да се използва файлът /usr/adm/quotasrc.user.
Имайте предвид максимумът от редове който може да сложите в /etc/fstab.
3. Активиране на квотите
Периодично записите, които се намират в quota.* файловете, трябва
да се проверяват дали отговарят на текущото състояние на системата. Командата
"quotacheck" се използва за да се провери дали даден потребител не е надхвърлил
своята квота.
Не е нужно да демонтирате файловата система или да дезактивирате квотите
за да стартирате тази команда, въпреки това
ако в момента, в който стартирате тази команда, устройствата се използва
активно това може да доведе до грешни резултати.
За предпочитане е да използвате "quotacheck" командата когато не се
извършват почти никакви действия от файловата система.
За да проверите за действителното дисково пространство което използва
даден потребител стартирайте командата "quotacheck"
по следния начин "quotacheck -avug". Изпълнението на командата може
да вземе известно време на големи файлови системи.
Самото активиране на квотите става с командата "quotaon".
За да актвирате квотите автоматично добавете следните редове в някой
rc файл
За Slackware това е /etc/rc.d/rc.M
# Check quotas and then turn quota system on:
if fgrep quota /etc/fstab 1> /dev/null 2> /dev/null ; then
if [ -x /sbin/quotacheck ]; then
echo "Checking filesystem quotas..."
/sbin/quotacheck -avug
fi
if [ -x /sbin/quotaon ]; then
echo "Activating filesystem quotas..."
/sbin/quotaon -avug
fi
fi
4. Проверка на квотите на отделните потребители или групи.
Администраторът може да използва командата "quota" за да проследи използваното
дисково пространство от отделен потребител и командата "repquota"
за да провери използването и лимитите на всички потребители на файловата
система.
# repquota -a
Block limits
File limits
User
used soft hard grace
used soft hard grace
root -- 175419
0 0
14679 0 0
bin -- 18000
0 0
735 0 0
uucp -- 729
0 0
23 0 0
man --
57 0
0
10 0 0
user1 -- 13046 15360
19200
806 1500 2250
user2 -- 2838
5120 6400
377 1000 1500
5. Добавяне и редактиране на квотите на даден потребител или
група
За да редактирате квотите на различните потребители или групи използвайте
командата "edquota". За да редактирате потребител използвайте "edquota
-u" и "edquota -g" за да редактирате група. Има точно по два реда информация
за активните квоти на дадена файлова система.
Quotas for user user1:
/dev/hda3: blocks in use: 5799, limits (soft = 8000, hard = 10000)
inodes in use: 1454, limits (soft = 3000, hard = 4000)
Забележете, че има два вида ограничения: soft и hard. Soft ограничението
показва колко е препоръчителния размер, който може да заема даден
потребител. Ако тази граница се прескочи има "гратисен" период, през който
потребителя трябва да намали общия размер на използваните файлове
. Гратисният период може да бъде променян с командата "edquota -t ",
резултатът от която е:
Time units may be: days, hours, minutes, or seconds
Grace period before enforcing soft limits for users:
/dev/hda3: block grace period: 7 days, file grace period: 7 days
Редактирайте и запишете съдържанието за да активирате промените.
Освен дни - days, може да изпoлзвате и sec(onds), min(utes), hour(s),
day(s), week(s), и month(s). Ако след края на гратисния период
потребителя не слезе под квотата си се използва hard лимита. hard лимита
е абсолютния максимум, който даден потребител може да използва. Ако потребител
надхвърли този лимит той няма право да добавя нови файлове. Този
ред
blocks in use: 5799, limits (soft = 8000, hard = 10000)
показва колко блока може да използва дадения потребител. Често 1 block
= 1 kilobyte.
А този ред
inodes in use: 1454, limits (soft = 3000, hard = 4000)
показва колко inodes (файлове/устройства/и т.н) се полагат на
потребителя. В повече от случайте имате групи от потребители с една и съща
квота. Бърз начин да редактирe квотата на всички тези потребители
е да редактирате квотата на един от тези потребители, примерно bob, след
което да напишете на ръка следната команда
edquota -p bob `awk -F: '$3 > 499 {print $1}' /etc/passwd`
Тук става дума за потребители, които имат ID > 499.
Сега всички потребители имат една и съща квота, но допълнително
може да смените квотите на отделните потребители.
6. Премахване на квотите за потребител или група
Ако искате да дезактивирате квотата за даден потребнител или група
използвайте програмата "edquota". Пишете: edquota username | uid или edquota
-g groupname | gid и определете софт лимита както и хард лимита на 0. Това
ще е достатъчно за да премахнете квотата на даден потребител и да му позволи
да използва колкото си иска дисково пространство.
7. Спиране на квотите за всички потребители.
Това става с командата "quotaoff". Добре е тази команда да се добави
в скриптът, който се изпълнява при спиране на системата.
Отново ще дам пример със Slackware. Тези редове трябва да поставите
във файлът /etc/rc.d/rc.6
# Try to turn off quota:
if fgrep quota /etc/fstab 1> /dev/null 2> /dev/null ; then
if [ -x /sbin/quotaoff ]; then
echo "Turning off filesystem quotas."
/sbin/quotaoff -a
fi
fi