תוכן עניינים

מבוא לניהול מכסות - Quota

מדריך זה נכתב על ידי jaxler בתאריך 2002-08-01
המדריך הומר לתסדיר דוקוויקי על ידי DoK בתאריך 2007-05-02

מבוא

מה זה quota?

המכסות (quota) נועדו להגביל את כמות הדיסק המותרת לשימוש למשתמש או קבוצה מסוימת ההגבלה יכולה להיות בשני מישורים, הגבלת הבלוקים או הגבלת כמות הinodes המותרים לשימוש. במערכות גדולות עם הרבה משתמשים מומלץ להגביל כל משתמש לכמות דיסק מסוימת וכך להמנע משימוש מיותר בשטח הדיסק.

למי נועד המדריך?

מדריך זה עובר על התקנת המכסות במערכת, הפעלתם וניהול המכסות בפועל. המדריך נועד לי שלא מכיר את המערכת מכסות, ומעונין להגביל את כמות הדיסק המותרת לשימוש על ידי המשתמשים השונים במערכת.

זכויות יוצרים

כל הזכויות שמורות © 2002 ל-jaxler
הרשות נתונה בזאת להעתיק, להפיץ ו/או לשנות את המסמך הזה, תחת תנאי רשיון ה-GFDL גרסה 1.1 או כל גרסה מאוחרת יותר שתפורסם ע”י המוסד לתוכנה חופשית.
השימוש במדריך מותר לשימוש לא מסחרי. העתקתו / הפצתו מחדש, מותרת בצירוף זכויות היוצרים ובהתאם למפורט ברשיון ה GFDL.

רישיון ה-GFDL זמין כאן: http://www.gnu.org/copyleft/fdl.html

התקנת תמיכה למכסות

האם המערכת שלי מוכנה?

ברוב ההפצות החדשות התמיכה במכסות מקומפלת עם הקרנל ואין צורך להתקין אותה, גם הכלים לניהול המכסות מותקנים עם ההפצות לרוב בכדי לבדוק אם הכלים מותקנים במערכת שלך הרץ:

rpm -qu | grep quota

התקנת המכסות במערכת

במקרה והמערכת שלך לא תומכת במכסות יש צורך לקמפל את הקרנל שיתמוך בהם. הורד את הטלאי המתאים לגרסת הקרנל שלך מהכתובת ftp://atrey.karlin.mff.cuni.cz/pub/local/jack/quota
בזמן קימפול הקרנל תחת התפריט filesystems בחר y באפשרות:

<code>quota support (config_quota) [n]</code>

אחרי הוספת התמיכה במכסות לקרנל הורד והתקן את חבילת התוכנות לניהול המכסות מהכתובת: http://sourceforge.net/projects/linuxqupta

לבסוף יש להפעיל מחדש את המחשב בכדי שהשינוים יכנסו לתוקף. אם אתה לא יודע לקמפל את הקרנל והמכסות לא באות עם ההפצה שלך ראה את השאלות הנפוצות בסוף המדריך

הפעלת המכסות

etc/fstab/

בכדי שהמכסות יעבדו צריך להכין את מערכת הקבצים לעבוד איתם, אנו עושים זאת על ידי עריכת הקובץ etc/fstab/ לפני הוספת התמיכה במכסות הקובץ נראה בערך ככה:

/dev/hda2 /boot ext2 defaults 1 2
/dev/hda7 / ext2 defaults 1 1
/dev/hda9 /home ext2 defaults 1 1

בשביל להפעיל את המכסות על מחיצה ה-home נשנה את השורה

/dev/hda9 /home ext2 defaults 1 1

ונוסיף לה usrquota בשביל מכסות משתמש או grpquota בשביל מכסות קבוצה אפשר להוסיף את שניהם על ידי הפרדה בפסיק. עכשיו אם הוספנו מכסות משתמש הקובץ יראה כך:

/dev/hda9 /home ext2 defaults,usrquota 1 1

ובשביל מכסות קבוצה נשנה אותו שיראה כך:

/dev/hda9 /home ext2 defaults,grpquota 1 1

אם נרצה את שניהם נשנה את הקובץ שיראה כך:

/dev/hda9 /home ext2 defaults,usrquota,grpquota 1 1

שימו לב שההוספה נעשית אחרי השדה defaults ומופרד בפסיק. ועוד דבר שחשוב לציין, הקובץ etc/fstab/ שונה ממחשב למחשב ולפי סידור המחיצות שלך בהתקנה ולכן הוא אינו זהה לזה שבדוגמה
עכשיו שסימנו להגדיר את המערכת קבצים לתמוך במכסות נריץ את הפקודה:

quotacheck -avug

בכדי שתייצר את הקבצים הדרושים לעבודת עם המכסות

init

אנחנו רוצים שבהפעלה של המחשב המערכת תפעיל את המכסות ותבדוק אם אף אחד לא חרג מההגבלה שלו. בחלק מההפצות הבדיקה כבר כלולה בסקריפט של init ואין צורך להוסיף אותה. אפשר להוסיף תהליך זה ידני על ידי הוספת הסקריפט הנל ל-init שלך:

# Check quota and then turn quota on.
if [ -x /usr/sbin/quotacheck ]
then
echo "Checking quotas. This may take some time."
/usr/sbin/quotacheck -avug
echo " Done."
fi
if [ -x /usr/sbin/quotaon ]
then
echo "Turning on quota."
/usr/sbin/quotaon -avug
fi

חשוב שהסקריפט יתבצע רק אחרי שהמערכת קבצים ב etc/fstab/ הועלתה (mounted) אחרת הסקריפט לא יעבוד.

ניהול מכסות

תקופת חסד

התקופת חסד נועדה לפעול במקרה ומשתמש עבר את ההגבלה שלו, הזמן שנקבע כתקופת החסד הוא הזמן שיש למשתמש לפנות מקום ולחזור לגבולת ההגבלה שנקבע לו

הגבלה רכה

ההגבלה הרכה קובעת את כמות הדיסק שניתן לנצל, אם עברת את ההגבלה ה”תקופת חסד” נכנסת לפעולה ותקופת הזמן שנקבע כתקופת החסד היא הזמן שיש לך לחסור לגבולות המכסה שלך.

[test@ajaxler]$ quota
Disk quotas for user test (uid 501):
Filesystem blocks quota limit grace files quota limit grace
/dev/hda3 56 500 1000 14 0 0

בפלט אפשר לראות שמשתמש test מכניס את הפקודה quota לראות כמה מקום נשאר לו/ השדה quota עומד על 500 וזה ההגבלה הרכה שלו. אפשר גם לראות שאין הגבלה על ה-inodes והמכסה שווה לאפס (לא מוגבל)

הגבלה קשיחה

ההגלבה הקשיחה מגבילה את כמות הדיסק המקסימלית שהמשתמש יכול לצרוך, במקרה והמשתמש עבר את ההגלה הרכה גם בזמן החסד הוא לא יוכל לעבור את מכסת ההגבלה הקשיחה.

[test@ajaxler]$ quota
Disk quotas for user test (uid 501):
Filesystem blocks quota limit grace files quota limit grace
/dev/hda3 56 500 1000 14 0 0

בפלט אפשר לראות שמשתמש test מכניס את הפקודה quota לראות כמה מקום נשאר לו. השדה limit עומד על 1000 וזה ההגלבה הקשיחה שלו.

quota - כמה מקום נשאר לי?

הפקודה ללא דגלים בודקת את המגבלה של המשתמש ומציגה אותה:

[test@ajaxler]$ quota
Disk quotas for user test (uid 501):
Filesystem blocks quota limit grace files quota limit grace
/dev/hda3 56 500 1000 14 0 0

אם ננתח את מה שאנחנו רואים:

quota -g testgrp
quota -u jaxler

יראה את המכסות של המשתמש jaxler

quotaon - הפעל אותי

הפקודה מפעילה את המכסות ולרוב מומלץ להריץ אותה בהפעלה של המערכת.

quotaoff - כבה אותי

הפקודה מכבה את המכסות בכל מערכות הקבצים שהוגדרו לתמוך במכסות.הפקודה דומה מאוד ל- quotaon והדגלים זהים.

quotachek - בדוק את מערכת הקבצים

הפקודה סורקת את מערכות הקבצים ומעדכנת את קבצי המידע של המכסות במידע האחרון על השימוש בדיסק. ברוב המערכות מומלץ להריץ את הפקודה בהפעלה של המחשב.

edquota - קבע לי מכסה!

אחרי שהפעלנו את התמיכה במכסות נשאר לנו להגדיר את המכסות למשתמשים או לקבוצות, הפקודה הזו נועדה לעשות בדיוק את זה. בשביל לקבוע מכסה למשתמש מסוים אנו נריץ:

edquota -u username

זה יקח אותו לעורך הטקסט ונקבל את הטקסט הבא:

Disk quotas for user test (uid 501):
Filesystem blocks soft hard inodes soft hard
/dev/hda3 52 500 1000 14 0 0

אנו יכולים לראות כאן שהמשתמש test משתמש ב 52 בלוקים שההגבלה הרכה שלו היא 500 וההגבלה הקשיחה שלו היא 1000. שני האפסים בסוף הם ההגבלה על ה inodes וכאשר הערך הוא 0 המשתמש לא מוגבל. בשביל להגביל קבוצה שלמה נשתמש בדגל -g:

edquota -g grupname

שוב פקודה זו תכניס אותנו לעורך טקסט ונקבל פלט דומה לזה של קביעת מכסה למשתמש. אם נרצה להגדיר אותם הגדרות לקבוצת משתמשים אפשר לעשות את זה על ידי הדגל -p:

edquota -p jaxler user1user2user3

כדי לשים לב שהמשתמשים user1 user2 user3 נכתבים בלי רווח ומקבלים את ההגדרות מכסה שלהם מהמשתמש jaxler

repquota - סכם לי את המידע

הפקודה מסכמת את המכסות של כל המשתמשים במערכת. הפלט שלה נראה בערך כך:

User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 4129872 0 0 251337 0 0
amanda -- 860 0 0 56 0 0
nobody -- 4 0 0 1 0 0
bin -- 34292 0 0 1779 0 0
netdump -- 16 0 0 5 0 0
daemon -- 8 0 0 3 0 0
test -- 52 500 1000 13 0 0
Statistics:
Total blocks: 8
Data blocks: 2
Entries: 31
Used average: 15.500000

אם יש קבוצה או שם משתמש ארוך יותר מ9 תווים הדגל -t יציג את הפלט בצורה נוחה יותר

שאלות נפוצות

quotaon: using //aquota.group on /dev/hda2: Invalid argument

בשביל לפתור את הבעיה צריך לייצר את הקבצים על ידי הפקודה

quotacheck -avug

במקרים מסוימים נצטרך גם להוסיף את הדגל -m

$ ./configure
$ make
$ su
# make install

קישורים ומקורות

קישורים ומקורות