หลังจากที่เปิดการใช้งาน disk quota กับ /home แล้ว ในตอนที่ 2 นี้จะอธิบายการกำหนดปริมาณการใช้งานดิสก์ของผู้ใช้งานแต่ละคน (user quota)
วิธีตรวจสอบค่า disk quota
เราสามารถตรวจสอบค่า quota ที่ถูกกำหนดไว้ ได้สองวิธีคือ
1. เป็น root แล้วใช้คำสั่ง repquota วิธีนี้จะแสดงรายงานของผู้ใช้งานทั้งหมด ทั้งการกำหนดค่า quota พร้อมทั้งขนาดของดิสก์ที่ผู้ใช้งานแต่ละรายใช้ไป
ตัวอย่างการใช้ repquota
[root@server ~]# repquota /home *** Report for user quotas on device /dev/sda6 Block grace time: 7days; Inode grace time: 7days Block limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------- root -- 17676 0 0 4 0 0 user1 -- 44 0 0 8 0 0 user2 -- 24 0 0 6 0 0
2. ผู้ใช้ธรรมดาร (normal user) สามารถใช้คำสั่ง quota เพื่อตรวจสอบค่าการใช้งานดิสก์ของตัวเองได้
ตัวอย่างการใช้คำสั่ง quota
[user1@server ~]$ quota Disk quotas for user user1 (uid 500): none
การกำหนด disk quota ของผู้ใช้งาน (user quota)
คอนฟิกเริ่มต้นหลังจากรันคำสั่ง quotacheck และ quotaon จะมีการตรวจสอบขนาดดิสก์ที่ถูกใช้ไป ของผู้ใช้งานแต่ละคน แต่ยังไม่มีการกำหนดค่าสูงสุดที่ใช้ได้ สังเกตค่าตัวเลขจะเป็น 0 ซึ่งเป็นค่าที่แสดงว่าไม่มีการจำกัดปริมาณการใช้งาน
ใช้คำสั่ง edquota ด้วย root เพื่อกำหนด disk quota ของผู้ใช้แต่ละคน โดยคำสั่งนี้จะเปิดโปรแกรม vi เพื่อให้เราแก้ไขค่าต่างๆ ของการใช้งานดิสก์ของผู้ใช้งานได้
ตัวอย่างการกำหนด disk quota ของ user1
[root@server ~]# edquota -u user1 Disk quotas for user user1 (uid 500): Filesystem blocks soft hard inodes soft hard /dev/sda6 44 0 0 8 0 0
ความหมายของค่าต่างๆ มีดังนี้
เราสามารถจำกัดปริมาณการใช้งาน disk quota ได้สองแบบ คือ
1. กำหนดเป็นขนาดพื้นที่ดิสก์ที่ใช้งานได้ มีหน่วยเป็น blocks คำนวณคร่าวๆ 1 block คือ 1 kilo bytes
2. กำหนดเป็นจำนวนไฟล์ที่สร้างขึ้นได้ มีหน่วยเป็น inodes หนึ่งไฟล์ใช้ 1 inode
โดยทั่วไปนิยมกำหนดเป็นแบบแรกมากกว่า คือกำหนดขนาดพื้นที่ดิสก์ที่สามารถใช้งานได้
ส่วนค่าที่กำหนดมีสองระดับคือ
1. soft เป็นปริมาณที่อนุญาตให้ใช้เกินค่านี้ได้ แต่จะอยู่ในระยะเวลาที่กำหนด (grace)
2. hard เป็นค่าสูงสุดที่ใช้ได้ ผู้ใช้งานไม่สามารถสร้างไฟล์เพิ่มเติมมากกว่านี้ได้อีกแล้ว
ตัวอย่างการกำหนดให้ user1 สามารถใช้พื้นที่ดิสก์ได้แบบ soft เท่ากับ 100 MB และแบบ hard ได้เท่ากับ 200 MB
[root@server ~]# edquota -u user1
Disk quotas for user user1 (uid 500):
Filesystem blocks soft hard inodes soft hard
/dev/sda6 44 100000 200000 8 0 0
[root@server ~]# repquota -a
*** Report for user quotas on device /dev/sda6
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 17676 0 0 4 0 0
user1 -- 44 100000 200000 8 0 0
user2 -- 24 0 0 6 0 0
ทดลองสร้างไฟล์ด้วย user
ล็อกอินเป็น user1 เพื่อตรวจสอบแล้วทดลองสร้างไฟล์ขึ้นมา
[user1@server ~]$ quota Disk quotas for user user1 (uid 500): Filesystem blocks quota limit grace files quota limit grace /dev/sda6 44 100000 200000 8 0 0
หมายเหตุ ผลลัพธ์ที่แสดงจากคำสั่ง quota จะเปลี่ยนคำว่า soft เป็นคำว่า quota และเปลี่ยน hard เป็นคำว่า limit
ใช้คำสั่ง dd เพื่อสร้างไฟล์ 50 MB
[user1@server ~]$ dd if=/dev/zero of=file-50M.bin bs=1000000 count=50 50+0 records in 50+0 records out 50000000 bytes (50 MB) copied, 0.726378 s, 68.8 MB/s
[user1@server ~]$ ls -l total 48884 -rw-r--r-- 1 user1 users 50000000 2009-03-28 16:19 file-50M.bin
[user1@server ~]$ quota
Disk quotas for user user1 (uid 500):
Filesystem blocks quota limit grace files quota limit grace
/dev/sda6 48928 100000 200000 9 0 0
ทดลองสร้างอีกไฟล์ที่มีขนาด 60 MB
[user1@server ~]$ dd if=/dev/zero of=file-60M.bin bs=1000000 count=60 60+0 records in 60+0 records out 60000000 bytes (60 MB) copied, 0.860898 s, 69.7 MB/s
[user1@server ~]$ ls -l total 107544 -rw-r--r-- 1 user1 users 50000000 2009-03-28 16:19 file-50M.bin -rw-r--r-- 1 user1 users 60000000 2009-03-28 16:20 file-60M.bin
[user1@server ~]$ quota Disk quotas for user user1 (uid 500): Filesystem blocks quota limit grace files quota limit grace /dev/sda6 107588* 100000 200000 7days 10 0 0
หลังจากที่สร้างไฟล์ที่สอง เท่ากับว่าผู้ใช้คนนี้ user1 มีการใช้งานดิสก์ไปแล้ว 110 MB ซึ่งมากกว่าค่า soft (quota) ที่กำหนดไว้ ใช้คำสั่ง quota ตรวจสอบ จะเห็นว่ามีเครื่องหมายดอกจัน (*) อยู่หลัง จำนวน blocks ที่ถูกใช้ไป พร้อมทั้งมีค่า 7days ในช่อง grace ขึ้นมา เพื่อแสดงว่า ผู้ใช้งานคนนี้ยังสามารถใช้พื้นที่ดิสก์ได้ต่อไปอีก 7 วัน แต่หลังจากนี้จะไม่อนุญาตให้สร้างได้อีกแล้ว
ทดลองสร้างไฟล์เพิ่มเติม 70 MB จะเห็นว่ายังสามารถใช้ดิสก์เพิ่มเติมได้อยู่ ขนาดรวมตอนนี้ 180MB ตราบเท่าที่ยังไม่เกิน 7days หรือไม่เกิน hard (limit)
[user1@server ~]$ dd if=/dev/zero of=file-70M.bin bs=1000000 count=70 70+0 records in 70+0 records out 70000000 bytes (70 MB) copied, 0.203143 s, 345 MB/s
[user1@server ~]$ ls -l total 175976 -rw-r--r-- 1 user1 users 50000000 2009-03-28 16:19 file-50M.bin -rw-r--r-- 1 user1 users 60000000 2009-03-28 16:20 file-60M.bin -rw-r--r-- 1 user1 users 70000000 2009-03-28 16:25 file-70M.bin
[user1@server ~]$ quota Disk quotas for user user1 (uid 500): Filesystem blocks quota limit grace files quota limit grace /dev/sda6 176020* 100000 200000 6days 11 0 0
ทดลองสร้างไฟล์เพิ่มอีก 80 MB
[user1@server ~]$ dd if=/dev/zero of=file-80M.bin bs=1000000 count=80 dd: writing `file-80M.bin': Disk quota exceeded 25+0 records in 24+0 records out 24526848 bytes (25 MB) copied, 0.174226 s, 141 MB/s
[user1@server ~]$ ls -l total 199956 -rw-r--r-- 1 user1 users 50000000 2009-03-28 16:19 file-50M.bin -rw-r--r-- 1 user1 users 60000000 2009-03-28 16:20 file-60M.bin -rw-r--r-- 1 user1 users 70000000 2009-03-28 16:25 file-70M.bin -rw-r--r-- 1 user1 users 24526848 2009-03-28 16:30 file-80M.bin
มีข้อความ error “Disk quota exceeded” เกิดขึ้น จะเห็นว่าไฟล์ที่สร้างขึ้นใหม่ ไม่สำเร็จ โดย quota จะอนุญาตให้สร้างไฟล์ได้ถึงขนาดพื้นที่ดิสก์รวมไม่เกินค่า hard (limit) เท่านั้น
[user1@server ~]$ quota
Disk quotas for user user1 (uid 500):
Filesystem blocks quota limit grace files quota limit grace
/dev/sda6 200000* 100000 200000 6days 12 0 0
ถึงตอนนี้ user1 จะไม่สามารถสร้างไฟล์ได้อีกแล้ว เพราะใช้เกินค่า hard limit แล้ว ผู้ใช้คนนี้ต้องลบไฟล์ที่มีอยู่ออกไปก่อน หรือไม่ก็ต้องขอพื้นที่ disk เพิ่มเติม
[user1@server ~]$ rm -f file-80M.bin [user1@server ~]$ rm -f file-70M.bin
[user1@server ~]$ ls -l total 107544 -rw-r--r-- 1 user1 users 50000000 2009-03-28 16:19 file-50M.bin -rw-r--r-- 1 user1 users 60000000 2009-03-28 16:20 file-60M.bin
[user1@server ~]$ quota
Disk quotas for user user1 (uid 500):
Filesystem blocks quota limit grace files quota limit grace
/dev/sda6 107588* 100000 200000 6days 10 0 0
[user1@server ~]$ dd if=/dev/zero of=file-80M.bin bs=1000000 count=80 80+0 records in 80+0 records out 80000000 bytes (80 MB) copied, 0.900514 s, 88.8 MB/s
[user1@server ~]$ ls -l total 185756 -rw-r--r-- 1 user1 users 50000000 2009-03-28 16:19 file-50M.bin -rw-r--r-- 1 user1 users 60000000 2009-03-28 16:20 file-60M.bin -rw-r--r-- 1 user1 users 80000000 2009-03-28 16:34 file-80M.bin
[user1@server ~]$ quota
Disk quotas for user user1 (uid 500):
Filesystem blocks quota limit grace files quota limit grace
/dev/sda6 185800* 100000 200000 6days 11 0 0
เมื่อใช้ดิสก์เกินค่า soft (quota) เลยระยะเวลา grace
เมื่อใช้พื้นที่ดิสก์เกินค่า soft (quota) ไปแล้ว ผู้ใช้งานยังสามารถสร้างไฟล์ได้เพิ่มเติมอีก ตราบที่ยังไม่เกินค่าเวลา grace ดีฟอลต์คือ 7 วัน แต่ถ้าเกินระยะเวลานี้แล้ว ผู้ใช้งานจะไม่สามารถสร้างไฟล์เพิ่มเติมได้อีกแล้ว
[user1@server ~]$ date Sat Mar 28 16:38:12 ICT 2009
[user1@server ~]$ quota Disk quotas for user user1 (uid 500): Filesystem blocks quota limit grace files quota limit grace /dev/sda6 185800* 100000 200000 6days 11 0 0
สมมติว่าระยะเวลาผ่านไปเกิน 7 วันแล้ว เมื่อใช้คำสั่ง quota ดู จะเห็นว่าช่อง grace เป็นเป็นค่า none
[user1@server ~]$ date
Sat Apr 4 17:00:04 ICT 2009
[user1@server ~]$ quota Disk quotas for user user1 (uid 500): Filesystem blocks quota limit grace files quota limit grace /dev/sda6 185800* 100000 200000 none 11 0 0
ผู้ใช้คนนี้จะไม่สามารถสร้างไฟล์ได้เพิ่มอีกแล้ว จะมี error ฟ้องว่า “Disk quota exceeded” ตลอด ซึ่งเป็นเพราะว่า ผู้ใช้คนนี้ใช้เกินค่า soft เกินระยะเวลา grace แล้วนั่นเอง
[user1@server ~]$ dd if=/dev/zero of=file-1M.bin bs=1000000 count=1
dd: writing `file-1M.bin': Disk quota exceeded
1+0 records in
0+0 records out
0 bytes (0 B) copied, 0.00622609 s, 0.0 kB/s
[user1@server ~]$ ls -l total 185756 -rw-r--r-- 1 user1 users 0 2009-04-04 17:01 file-1M.bin -rw-r--r-- 1 user1 users 50000000 2009-03-28 16:19 file-50M.bin -rw-r--r-- 1 user1 users 60000000 2009-03-28 16:20 file-60M.bin -rw-r--r-- 1 user1 users 80000000 2009-03-28 16:34 file-80M.bin
[user1@server ~]$ quota Disk quotas for user user1 (uid 500): Filesystem blocks quota limit grace files quota limit grace /dev/sda6 185800* 100000 200000 none 12 0 0
วิธีการแก้ไข ผู้ใช้คนนี้ต้องลบไฟล์ที่ไม่ใช้งานออกไป จนกว่าขนาดพื้นที่ดิสก์ที่ใช้ จะต่ำกว่าค่า soft ที่ถูกกำหนดไว้
[user1@server ~]$ rm -f file-1M.bin
[user1@server ~]$ rm -f file-50M.bin [user1@server ~]$ quota Disk quotas for user user1 (uid 500): Filesystem blocks quota limit grace files quota limit grace /dev/sda6 136916* 100000 200000 none 10 0 0
[user1@server ~]$ rm -f file-60M.bin
[user1@server ~]$ quota
Disk quotas for user user1 (uid 500):
Filesystem blocks quota limit grace files quota limit grace
/dev/sda6 78256 100000 200000 9 0 0
[user1@server ~]$ dd if=/dev/zero of=file-1M.bin bs=1000000 count=1 1+0 records in 1+0 records out 1000000 bytes (1.0 MB) copied, 0.0120102 s, 83.3 MB/s