Kamis, 02 Desember 2010

Quota

Quota adalah sebuah tool sistem administrasi yang digunakan untuk mengelola batasan resource berupa kapasitas ruang disk yang digunakan user. Sehingga kita memonitor dan membatasi penggunaan disk user maupun group. Di sini user atau group dapat dipaksakan hanya memiliki beberapa megabyite bahkan beberapa kilobyte saja di suatu partisi yang kapasitasnya bergiga-giga. Sehingga user tidak mengkonsumsi space disk melebihi kapasitas yang ditargetkan.

Sebelum menginstall quota, downloadlah software quotanya. Jika anda menggunakan Linux Slackware, bisa anda dapatkan di disk1 [cdrom]/slackware/ap/quota-3.12-i486-1.tgz. Di slackware, instalasi quota sangat mudah dengan menggunakan “/sbin/installpkg”.

shellz %: installpkg quota-3.12-i486-1.tgz
Installing package quota-3.12-i486-1…
PACKAGE DESCRIPTION:
quota: quota (Linux disk quota utilities)
quota:
quota: An implementation of the diskquota system for the Linux operating
quota: system to keep those greedy users from gobbling up 100% of the hard
quota: drive space. Works with ext2, ext3, reiserfs, and xfs filesystems.
quota: This system is based on the Melbourne quota system by Robert Elz.
quota: Edvard Tuinder and Marco van Wieringen ported this code to Linux.
quota: Jan Kara added support for the new Linux quota format and the XFS
quota: filesystem.
quota:
Executing install script for quota-3.12-i486-1…

Langkah-Langkah Konfigurasi

1. Memodifikasi file /etc/fstab

File /etc/fstab memuat informasi tentang mounting. Jadi semua partisi ataupun semua device untuk media penyimpanan yang akan dimount secara otomatis ketika booting harus dituliskan di sini. Di dalam format penulisan untuk memount terdapat beberapa parameter atau pilihan-pilihan seperti “defaults, rw, ro, nosuid, nodev” dll. Untuk menghidupkan quota dalam disk, kita harus memasukkan mengikut sertakan quota dalam parameter mount tersebut.

-> mount point untuk root di file /etc/fstab:
/dev/hda7 / ext3 defaults 1 1

-> untuk quota user file ini dapat dimodif menjadi:
/dev/hda7 / ext3 defaults,usrquota 1 1

-> jika quota diberikan untuk group, maka bisa ditambahkan quota group.
/dev/hda7 / ext3 defaults,grpquota 1 1

-> bisa juga dijadikan satu.
/dev/hda7 / ext3 defaults,usrquota,grpquota 1 1

Di sini menggunakan mount point / karena user-user yang berada di /home saya kebetulan menggunakan partisi yang sama dengan partisi root.

Mount file system yang sudah dimodifikasi seperti modifikasi di atas harus diremount untuk menginformasikan kepada system tentang modifikasi tersebut. Untuk melakukan hal ini, kita dapat melakukan remounting dengan perintah:

190 /root$ mount -oremount /

2. Menciptakan file quota.user dan quota.group

Setelah memodifikasi file /etc/fstab, langkah selanjutnya adalah membuat file quota.user dan quota.group yang diletakkan di /home. Serta hak akses adalah hanya user root yang dapat memodifikasi file tersebut.

[ root@proxy /root]$ touch /home/quota.user /home/quota.group
[ root@proxy /root]$ chmod 600 /home/quota.*

Perintah “touch” digunakan untuk menciptakan file kosong yang baru. File quota.user dan quota.group adalah file yang digunakan sebagai penyimpanan setingan quota. Untuk menghidupkan daemon quota, kita bisa menggunakan perintah:

quotaon [device]

[ root@proxy /root]$ /sbin/quotaon /dev/hda7
-> atau
[ root@proxy /root]$ /sbin/quotaon -a

-> untuk mematikan daemon quota…
[ root@proxy /root]$ /sbin/quotaoff -a

Memberikan Quota Untuk User dan Group

Untuk memberikan quota kepada user dan group, kita membutuhkan program “edquota”. Edquota adalah sebuah editor quota yang menggunakan text editor “vi” dan digunakan memodifikasi settingan quota. Misalnya, kita memberikan quota untuk user “cupid”.

[ root@proxy /root]$ edquota -u cupid
Disk quotas for user cupid (uid 1200):
Filesystem blocks soft hard inodes soft hard
/dev/hda7 8 0 0 2 0 0

-> Dari eksekusi di atas kita bisa melihat bahwa:
- blocks adalah jumlah space (dalam KB) yang sudah dikonsumsi oleh user yang bersangkutan.
- soft adalah batas space (dalam KB) di suatu partisi yang digunakan user. Tetapi masih memberikan kelonggaran kepada user / group jika melebihi kapasitas yang ditetapkan sesuai batas waktu tertentu.
- hard sama dengan soft, namun perbedaan yang mencolok adalah, hard tidak memberikan kelonggaran bagi user / group pada jumlah kapasitas disk yang digunakan. Jika jumlah block yang dikonsumsi sudah mencapai batas maksimal, maka sudah tidak ada lagi space yang dapat digunakan.

-> kemudian bisa kita rubah menjadi:
[ root@proxy /root]$ edquota -u cupid
Disk quotas for user cupid (uid 1200):
Filesystem blocks soft hard inodes soft hard
/dev/hda7 8 10000 10000 42 0 0

-> bagi anda yang belum terbiasa menggunakan text editor vi, anda bisa mengawali pengeditan dengan menekan tombol huruf vocal (a,i,u,e,o) untuk masuk ke “input mode”, kemudian editlah sesuai selera anda. Untuk menyimpan file tersebut, tekanlah tombol “Esc” untuk masuk ke “Command Mode”, kemudian ketik “:wq [enter]”.

Untuk memastikan bahwa quota sudah diberikan pada user cupid, maka ceklah.

[ root@proxy /root]$ quota -v
Disk quotas for user cupid (uid 1200):
Filesystem blocks quota limit grace files quota limit grace
/dev/hda7 28 10000 10000 8 0 0

Menduplikasi Setting Quota Suatu User Untuk User Lain

Terkadang ad sebuah ide bagaimana cara yang lebih cepat untuk menset batasan quota untuk user lebih dari satu. Untuk ide ini kita lebih baik memakai sistem userid. Di sini kita bisa menentukan range / jangkauan mulai dari userid berapa sampai berapa. Jadi setting quota suatu user dikopikan ke user yang idnya berada di dalam range tersebut. Perintahnya:

# edquota -p [user_yang_mempunyai_quota] [start uid] [end uid]

-> untuk lebih jelasnya perhatikan contoh berikut:
-> agar lebih jelas perhatikan daftar user di file /etc/passwd berikut:

223 /root$ tail /etc/passwd
rpc:x:32:32:RPC portmap user:/:/bin/false
sshd:x:33:33:sshd:/:
gdm:x:42:42:GDM:/var/state/gdm:/bin/bash
pop:x:90:90:POP:/:
nobody:x:99:99:nobody:/:
wardi:x:1000:100::/home/wardi:/bin/ksh
explode:x:120:100::/home/explode:/bin/csh
darkbugs:x:5000:100::/home/darkbugs:/bin/csh
cupid::1200:100::/home/cupid:/bin/csh
endri::1888:100::/home/endri:
rivero:x:100:100::/home/rivero:
a:x:101:100::/home/a:
b:x:102:100::/home/b:
c:x:103:100::/home/c:
d:x:104:100::/home/d:
e:x:105:100::/home/e:

-> kita akan memilih hanya user yang mempunyai userid antara 100-105 saja yang akan diberikan quota.

[ root@proxy /root]$ edquota -p cupid 100-105

-> atau

[ root@proxy /root]$ edquota -p cupid 100 101 102 103 104 105

-> kita mengkopikan quota dari user cupid ke user lain yang mempunyai id 100-105.
-> untuk memeriksa, kita bisa menggunakan pilihan -v untuk quota, contonya kita memeriksa quota untuk user yang “d” yang mempunyai userid 104 mempunyai setting quota yang sama dengan user cupid.

[ root@proxy /root]$ quota -v d
Disk quotas for user d (uid 104):
Filesystem blocks quota limit grace files quota limit grace
/dev/hda7 8 10000 10000 2 0 0

[ root@proxy /root]$ quota -v a b c d e
Disk quotas for user a (uid 101):
Filesystem blocks quota limit grace files quota limit grace
/dev/hda7 8 10000 10000 2 0 0
Disk quotas for user b (uid 102):
Filesystem blocks quota limit grace files quota limit grace
/dev/hda7 8 10000 10000 2 0 0
Disk quotas for user c (uid 103):
Filesystem blocks quota limit grace files quota limit grace
/dev/hda7 8 10000 10000 2 0 0
Disk quotas for user d (uid 104):
Filesystem blocks quota limit grace files quota limit grace
/dev/hda7 8 10000 10000 2 0 0
Disk quotas for user e (uid 105):
Filesystem blocks quota limit grace files quota limit grace
/dev/hda7 8 10000 10000 2 0 0

Memodifikasi Parameter Batasan Waktu Quota (grace period)

Kebijakan pemberian quota / batasan penggunaan space disk juga membutuhkan waktu, Berapa lama user akan dibatasi dengan quota tersebut. Secara default lama batasan quota adalah 7 hari. Namun kita dengan mudah dapat merubahnya. Setting waktu yang diijinkan adalah hari, jam, menit dan detik (days, hours, minutes, seconds).

[ root@proxy /root]$ edquota -t
Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
Filesystem Block grace period Inode grace period
/dev/hda7 7days 7days

-> Misalkan kita mau mengganti dari yang 7 hari itu kita ganti cuman 1 hari saja.

[ root@proxy /root]$ edquota -t
Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
Filesystem Block grace period Inode grace period
/dev/hda7 1days 1days

-> dll…..

Memberikan Quota Untuk Group

Selain dapat memberikan batasan untuk user, quota juga dapat juga memberikan batasan untuk group. Group adalah sekelompok user yang tergabung dalam sebuah team di sebuah system. Dengan option “-g” kita bisa memberikan quota ke sebuah group. Katakanlah kita mau memberikan quota untuk group “users”, maka kita dapat memberikan perintah berikut:

[ root@proxy /root]$ edquota -g users
Disk quotas for group users (gid 100):
Filesystem blocks soft hard inodes soft hard
/dev/hda7 204800 0 0 8566 0 0

-> kemudian ganti menjadi..

[ root@proxy /root]$ edquota -g users
Disk quotas for group users (gid 100):
Filesystem blocks soft hard inodes soft hard
/dev/hda7 204800 155000 155000 8566 0 0

-> maka batasan space disk untuk group users adalah 155 MB.

Menampilkan Ringakasan Seluruh Setting Quota dengan Repquota

Untuk melihat seluruh daftar user yang dikenai kebijakan quota maupun tidak, kita bisa menggunakan tool “repquota”. Repquota digunakan untuk meringkas quota milik sebuah file system. Format penulisan:

/usr/sbin/repquota [ -vsiug ] [ -c | -C ] [ -t | -n ] [ -F format-name ] filesystem

/usr/sbin/repquota [ -avtsiug ] [ -c | -C ] [ -t | -n ] [ -F format-name ]

-> untuk lebih jelasnya silahkan baca di “man quota”. ingin lebih mahir? silahkan banyak mencoba-coba.

-> ingin lebih cepat dan ringkas coba perintah sederhana berikut:

[ root@proxy /root]$ repquota -a
*** Report for user quotas on device /dev/hda7
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
———————————————————————-
root — 2400616 0 0 154147 0 0
bin — 28 0 0 3 0 0
lp — 12 0 0 1 0 0
news — 152 0 0 20 0 0
uucp — 920 0 0 41 0 0
smmsp — 4 0 0 1 0 0
mysql — 8 0 0 2 0 0
nobody — 4 0 0 1 0 0
wardi — 204572 0 0 8537 0 0
explode — 8 0 0 2 0 0
darkbugs — 8 0 0 2 0 0
cupid — 28 10000 10000 7 0 0
endri — 12 0 0 3 0 0
rivero — 8 10000 10000 2 0 0
a — 8 10000 10000 2 0 0
b — 8 10000 10000 2 0 0
c — 8 10000 10000 2 0 0
d — 8 10000 10000 2 0 0
e — 8 10000 10000 2 0 0
#94 — 66388 0 0 2171 0 0

0 komentar: