คอนฟิกลีนุกซ์ Disk Quota ตอนที่ 1

แม้ว่าทุกวันนี้ขนาดของดิสก์จะมีขนาดมากขึ้นเรื่อยๆ และมีราคาที่ถูกลง แต่ปริมาณความต้องการของผู้ใช้งานกลับเพิ่มสูงขึ้น กระทั่งไม่ว่าจะเพิ่มดิสก์เท่าไร ก็ไม่เพียงพอ

โดยดีฟลอต์เซิร์ฟเวอร์ลีนุกซ์ที่ติดตั้ง จะไม่มีการจำกัดพื้นที่ดิสก์ของผู้ใช้งาน แต่ละคนสามารถใช้ได้จนกระทั่งขนาดของดิสก์ไม่เพียงพอ

บทความนี้ขอนำเสนอวิธีการคอนฟิก Disk Quota เพื่อจำกัดปริมาณการใช้งานดิสก์ โดยสามารถทำได้เป็นระดับรายผู้ใช้งาน (user quota) หรือจะแบ่งเป็นกลุ่ม (group quota) ได้

ระบบที่ทดสอบ

การคอนฟิก Disk Quota ต้องทำระดับ mount point โดยต้องเลือกว่าจะเปิดคุณสมบัติ (quotaon) กับ mount point ใด แนะนำให้ตอนติดตั้งลีนุกซ์ แยก partition ที่เป็น /home ต่างหาก ซึ่งเป็น mount point ที่เป็น home directory ของผู้ใช้งาน (user) แล้วเปิด quota เฉพาะ ส่วนนี้

ลีนุกซ์ส่วนใหญ่จะสนับสนุน disk quota ในระดับ kernel อยู่แล้ว แต่ไม่ได้เปิดการใช้งาน (quotaon) ไว้ ในบทความนี้เป็นการทดสอบคอนฟิกกับ /home บน Fedora 10

ตัวอย่างการแบ่ง partition ของเครื่องที่ทดสอบ

[root@server ~]# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda2              1011960    201320    759232  21% /
/dev/sda1               202219     13513    178266   8% /boot
/dev/sda5              1011928     17680    942844   2% /tmp
/dev/sda6              1011928     18700    941824   2% /home
/dev/sda7              5044156    939604   3848320  20% /usr
/dev/sda8              1019864     37860    930196   4% /var
tmpfs                   189632         0    189632   0% /dev/shm

ตัวอย่างไฟล์ /etc/fstab ของเครื่องที่ทดสอบ

[root@server ~]# cat /etc/fstab
/dev/sda1               /boot                   ext3    defaults        1 2
/dev/sda2               /                       ext3    defaults        1 1
/dev/sda5               /tmp                    ext3    defaults        1 2
/dev/sda6               /home                   ext3    defaults        1 2
/dev/sda7               /usr                    ext3    defaults        1 2
/dev/sda8               /var                    ext3    defaults        1 2
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
/dev/sda3               swap                    swap    defaults        0 0

เปิดคุณสมบัติ user quota

เริ่มต้น เราจะทดสอบ user quota ก่อน โดยต้องทำการ remount แล้วเพิ่มออปชั่น userquota

[root@server ~]# mount | grep home
/dev/sda6 on /home type ext3 (rw)
[root@server ~]# mount -o remount,usrquota /home
[root@server ~]# mount | grep home
/dev/sda6 on /home type ext3 (rw,usrquota)

สร้างไฟล์ aquota.user สำหรับเก็บ user quota

[root@server ~]# cd /home
[root@server home]# touch aquota.user
[root@server home]# chmod 600 aquota.user
[root@server home]# ls -l
total 28
-rw------- 1 root  root      0 2009-03-28 13:58 aquota.user
drwx------ 2 root  root  16384 2009-02-21 21:15 lost+found
drwx------ 3 user1 users  4096 2009-03-29 13:02 user1
drwx------ 3 user2 users  4096 2009-03-29 12:59 user2

รันคำสั่ง quotacheck เพื่อตรวจสอบปริมาณการใช้งานดิสก์ของแต่ละผู้ใช้

[root@server home]# quotacheck -vgum /home
quotacheck: Your kernel probably supports journaled quota but you are not using it. Consider switching to journaled quota to avoid running quotacheck after an unclean shutdown.
quotacheck: WARNING -  Quotafile /home/aquota.user was probably truncated. Cannot save quota settings...
quotacheck: Scanning /dev/sda6 [/home] done
quotacheck: Old group file not found. Usage will not be substracted.
quotacheck: Checked 7 directories and 14 files

ถ้ารันคำสั่ง quotacheck ถูกต้อง จะมีการเขียนข้อมูลลงในไฟล์ aquota.user ใช้คำสั่ง ls ดู จะเห็นว่ามีขนาดเพิ่มขึ้น

[root@server home]# ls -l
total 36
-rw------- 1 root  root   7168 2009-03-28 13:59 aquota.user
drwx------ 2 root  root  16384 2009-02-21 21:15 lost+found
drwx------ 3 user1 users  4096 2009-03-29 13:02 user1
drwx------ 3 user2 users  4096 2009-03-29 12:59 user2

เปิดคุณสมบัติ quota ด้วยคำสั่ง quotaon

[root@server home]# quotaon -v /home
/dev/sda6 [/home]: user quotas turned on

ใช้คำสั่ง repquota เพื่อแสดงรายงานการใช้งานดิสก์ของแต่ละคน

[root@server home]# 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

แก้ไขไฟล์ /etc/fstab

เมื่อทดสอบ quota สำเร็จแล้ว สุดท้ายต้องมีการเพิ่มออปชั่นลงไปในไฟล์ /etc/fstab เพื่อให้มีผลหลังจากที่มีการรีบู๊ตเครื่อง

ตัวอย่างการเพิ่มออปชั่น usrquota ที่ /home ในไฟล์ /etc/fstab

[root@server ~]# cat /etc/fstab
/dev/sda1               /boot                   ext3    defaults        1 2
/dev/sda2               /                       ext3    defaults        1 1
/dev/sda5               /tmp                    ext3    defaults        1 2
/dev/sda6               /home                   ext3    defaults,usrquota  1 2
/dev/sda7               /usr                    ext3    defaults        1 2
/dev/sda8               /var                    ext3    defaults        1 2
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
/dev/sda3               swap                    swap    defaults        0 0

ยกเลิกการใช้ user quota

หากต้องการยกเลิกการใช้งาน user quota สามารถทำได้ดังนี้

รันคำสั่ง quotaoff เพื่อปิดการตรวจสอบ quota (ถ้าต้องการปิดการใช้ user quota ชั่วคราว ให้รันคำสั่งนี้ก็เพียงพอแล้ว ไม่ต้องทำขั้นต่อไป)

[root@server ~]# quotaoff -v /home
/dev/sda6 [/home]: user quotas turned off

แก้ไขไฟล์ /etc/fstab โดยลบ usrquota ที่เพิ่มเข้าไปในบรรทัดของ mount point แล้วรันคำสั่ง mount เพื่อ remount ใหม่ แต่ไม่มีออปชั่น usrquota

[root@server ~]# mount | grep home
/dev/sda6 on /home type ext3 (rw,usrquota)
[root@server ~]# mount -o remount /home
[root@server ~]# mount | grep home
/dev/sda6 on /home type ext3 (rw)

ลบไฟล์ aquota.user

[root@server ~]# cd /home/
[root@server home]# ls -l
total 36
-rw------- 1 root  root   7168 2009-03-28 14:07 aquota.user
drwx------ 2 root  root  16384 2009-02-21 21:15 lost+found
drwx------ 3 user1 users  4096 2009-03-28 14:05 user1
drwx------ 3 user2 users  4096 2009-03-29 12:59 user2
[root@server home]# rm -f aquota.user

ในตอนต่อไปจะกล่าวถึงวิธีการกำหนดค่า quota ของแต่ละผู้ใช้งาน

ข้อมูลอ้างอิง

4 thoughts on “คอนฟิกลีนุกซ์ Disk Quota ตอนที่ 1”

  1. ขอบคุณครับให้ความรู้ละเอียดมากเลยครับ

  2. จนผมต้อง ADD TO FAVORITE เลย ขอบคุณจิงๆๆ
    พอดีผมต้องการทราบรายละเอียดเรื่อง quota อ่ะครับ

    เป็นกำลังใจให้นะครับที่เขียนบทความดีๆๆ ต่อไป

  3. ขอบคุณมากครับสำหรับบทความดีๆ จะติดตามต่อไปนะครับ

  4. โครตเทพเลยครับ ถึงจะเป็นบทความที่เก่า แต่ก็เอามาช่วยผมได้เยอะเลยครับ ขอบคุณมากครับ ADD TO FAVORITE ไว้เหมือนกันครับ อิอิ

Leave a Reply

Your email address will not be published.