Tuesday, May 27, 2003 12:16:23

Membatasi space user dengan Quota

Article and tutorial that related to Linux Operating System  
Pada sistem yang multiuser sering kali ditemui kendala user pada sistem kita akan menggunakan space yang ada untuk menyimpan data dan berkas-berkas lainnya, semakin besar ruang yang diberikan seringkali akan semakin besar pula berkas yang akan disimpan user tersebut. Langkah yang terbaik mengatasi hal ini adalah membatasi ruang bagi user sehingga kita bisa memiliki ruang yang lebih bagi sistem kita, yaitu menggunakan quota disk.

Yang harus dipersiapkan adalah, kita harus memastikan bahwa kernel telah mendukung quota file sistem. Disini penulis menggunakan rimba linux sebagai sistem percobaannya (Rimba 1.0) yang kernelnya telah mendukung "quota". Paket yang perlu dipersiapkan adalah "quota-3.03-1r.i386.rpm". (paket dan versi yang penulis gunakan, bisa berbeda sesuai dengan distro anda). Lalu install paket tersebut ke dalam sistem anda, dengan perintah:

[root@leuser root]# rpm -ivh quota-3.03-1r.i386.rpm
Yang perlu anda lakukan adalah memastikan terlebih dahulu apa yang anda inginkan untuk dibatasi akses spacenya. Biasanya hal ini berupa partisi untuk direktori user dan direktori untuk keperluan Web Hosting. Juga pastikan yang akan anda inginkan untuk diberikan quota itu berdasarkan tiap user atau tiap group, atau bahkan untuk keduanya.
Jika sudah diputuskan keinginan anda, maka yang perlu kita lakukan adalah mengedit file "/etc/fstab". Disini diberikan contoh asumsi dari partisi penulis sebagai berikut:

partisi /dev/sda8 /home akan kita perlakukan quota berdasarkan user
partisi /dev/sda9 /www akan kita perlakukan quota berdasarkan group.

Disini diasumsikan format file /etc/fstab adalah sebagai berikut:

/dev/sda8 /home ext2 defaults 1 2
/dev/sda9 /www ext2 defaults 1 2

Untuk menyesuaikan dengan keinginan kita maka tambahkan/rubah menjadi seperti berikut:

/dev/sda8 /home ext2 defaults,usrquota 1 2
/dev/sda9 /www ext2 defaults,grpquota 1 2

Kemudian kita harus menyiapkan file berikut:

[root@leuser root]# touch /home/aquota.user
[root@leuser root]# touch /www/aquota.group
[root@leuser root]# chmod  600 /home/aquota.user
[root@leuser root]# chmod  600 /www/aquota.group
Tambahkan dalam file /etc/rc.local baris berikut:
# Check quota and then turn quota on.

if [ -x /sbin/quotacheck ]
	then
	echo "Checking quotas. This may take some time."
	/sbin/quotacheck -avug
	echo "Done."
fi

if [ -x /sbin/quotaon ]
	then
	echo "Turning on quota."
	/sbin/quotaon -avug
fi

Setelah anda menyelesaikan sampai tahap ini, anda sekarang bisa mereboot komputer anda. Sehingga sistem anda siap dalam melakukan quota. Catatan: Ketika anda reboot nantinya akan menemui satu kesalahan sebagai berikut

Enabling local filesystem quotas: quotaon: using /home/aquota.user on /dev/sda8: Invalid argument
quotaon: using /www/aquota.group on /dev/sda9: Invalid argument
				[FAILED]

Kesalahan tersebut dapat dihiraukan karena secara otomatis akan diperbaiki dan tidak akan keluar lagi setelah sistem mengeksekusi skrip "/etc/rc.local" sesaat sebelum anda login ke sistem.

Setelah anda login, anda bisa segera melakukan setting pemberian kapasitas ke user yang anda ingin untuk dibatasi. Namun sebelumnya perlu teori singkat mengenai kata-kata yang akan dipergunakan dalam disk quota ini. Pembatasan disk quota ditentukan oleh soft limit dan hard limit. Jika suatu user telah melewati batas hard limit maka user tersebut tidak bisa menggunakan kapasitas hardisk lagi. Sedangkan soft limit merupakan batas yang bisa dilewati, namun hanya dalam periode tertentu. Periode tersebut disebut dengan grace period. Secara default nilai dari grace period ini adalah 7 hari. Jadi misalkan seorang user sudah melewati soft limit sehingga grace period mulai berlaku, jika dalam rentang grace period tidak dipatuhi untuk mengurangi kapasitas agar tidak melampaui dari soft limitnya, maka user tersebut tidak bisa menggunakan / menambah lagi kapasitas disk walaupun kapasitas hard limit belum dicapainya.

Disini penulis mempunyai user bernama "hulk" yang akan dibatasi akses nya

[root@leuser root]# edquota -u hulk

Anda akan dibawa ke editor vi(defaultnya, atau yang sesuai dengan variabel $EDITOR anda). Kurang lebih tampilannya seperti berikut (value yang ada berbeda dengan milik anda).

Disk quotas for user hulk (uid 501):
Filesystem blocks soft hard inodes soft hard
/dev/sda8 124 0 0 27 0 0

Disini user hulk telah menggunakan 124 blocks(dalam KB) dan 27 file/direktori dalam disk partisi dari /dev/hda7, sedangkan soft maupun hard limitnya belum diset baik untuk blocks(besar ruang disk yang diberikan) maupun untuk inode(jumlah file/direktori yang bisa dimiliki). Anda bisa melakukan pengeditan seberapa besar kita mengijinkan user ini untuk menyimpan data/media nya dalam disk pada sistem kita. Kita asumsikan membatasi soft limit ke 1MB(1024KB) dan hard limit ke 2MB(2048KB) untuk ruang disknya. Diasumsikan juga kita ingin membatasi user ini memiliki softlimit sebanyak 128 file/direktori dan hard limit 512 file/direktori. Maka yang harus kita modifikasi dari perintah edquota diatas adalah:

Disk quotas for user hulk (uid 501):
Filesystem blocks soft hard inodes soft hard
/dev/sda8 124 1024 2048 27 128 512

Begitu anda menyimpan konfigurasi diatas, maka user sudah tidak bisa lagi menyimpan file/direktori melebihi kapasitas yang diperbolehkan oleh kita. Jika user hulk ternyata bandel dan mencoba apakah benar dia itu dibatasi, maka tampilan error yang akan dialami oleh user hulk adalah sebagai berikut (contoh dibawah ini,si hulk mencoba menyalin file gimp-print dari direktori /tmp ke home direktorinya):

[hulk@leuser hulk]$ cp /tmp/gimp-print-4.2.1-6r.i386.rpm .
sd(8,8): warning, user block quota exceeded.
sd(8,8): write failed, user block limit reached.
cp: writing `./gimp-print-4.2.1-6r.i386.rpm': Disk quota exceeded

Sedangkan jika diperuntukan untuk group, maka yang dilakukan adalah menjalankan perintah edquota -g nama_group.

Untuk sistem yang memiliki banyak user, tentu tidaklah efisien untuk melakukan hal yang sama berulang-ulang sedangkan yang kita inginkan adalah membatasi sebagaimana user hulk. maka kita bisa menggunakan konfigurasi user hulk tersebut bagi user yang lain dalam sistem dengan jalan menggunakan perintah berikut:

edquota -p hulk `awk -F: '$3 > 499 {print $1}' /etc/passwd`

Perintah diatas dapat diartikan bahwa kita melakukan penyalinan konfigurasi quota bagi user hulk ke user lain dalam sistem yang memiliki user ID lebih besar sama dengan 500. Sehingga sekarang user lain (dalam direktori /home) telah memiliki kendali quota disk yang sama dengan user hulk.

Untuk menetukan grace period user, gunakan perintah: edquota -u -t. Secara default seperti telah dijelaskan sebelumnya adalah 7 hari,untuk mengubahnya perlu merubah isi kolom yang ada sesuai dengan keinginan anda.

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/sda8 7days 7days

Langkah yang sama dapat diterapkan pula untuk group,dengan menjalankan perintah edquota -g -t

Monitoring penggunaan disk

Paket quota menyertakan juga perintah-perintah yang bisa dilakukan untuk melakukan monitoring penggunaan disk dalam sistem anda.

Jika kita ingin menemukan berapa besar penggunaan disk dari user / group kita, maka kita bisa menjalakan perintah seperti berikut:

quota -u nama_user atau quota -g nama_group

Sebagai contoh:

[root@leuser root]# quota -u hulk
Disk quotas for user hulk (uid 501):
Filesystem blocks quota limit grace files quota limit grace
/dev/sda8     124  1024  2048          27  128     512      

Sedangkan jika diinginkan untuk melihat summary mengenai informasi pemakaian disk dalam sistem kita, dapat dipergunakan perintah repquota -a


Permalink logo del.icio.usadd to del.icio.us | view as pdfview as pdf