Sistemdeki disk alanlarını kolayca yönetmek ve kısıtlı bölgeler,projeler,işler için bölümlenmiş alanlarda kullanıcılara ve gruplara belirli yerler verebilmek için disk kotalarını kullanırız. Böylece sistemi yöneten kişi disk üstündeki bölümlendirmeleri ve FS’leri tam dolmadan öğrenebileceği gibi kullanıcıyı da bu konudan haberdar ederek sınırlamalara dikkatini çeker.
Kotayı kullanıcı ve grup hesapları üstünde genel disk kullanımı bazında ayarlayabiliriz. quota RPM paketinin sistemde yüklü olması gerekir. quota paketinin sistemimizde yüklü olup olmadığını şu şekilde kontrol edebiliriz.
[root@artemis ~]# rpm -qa|grep quota
quota-3.13-5.el5
[root@artemis ~]#
Ardından bir File System(FS) üstünde kota işlemlerini uygulamamız için şu adımları izlememiz gerekli;
1. /etc/fstab dosyasını editleyerek Kota kullanacağımız FS parçasında usrquota ve grpquota ifadelerini eklememiz gerekiyor. (ACL’de eklediğimiz gibi 4. Kolona ekliyoruz bu ifadeleri.)
- File System’i tekrar mount etmemiz gerekiyor (remount). Umount/mount FS_ismi veya mount –o remount FS_ismi
- Kota database’i oluşturup disk kullanım tablosunu çıkartmamız gerekiyor. quotacheck –cug FS_ismi, quotacheck -avug
- Kota kurallarını (policy) sisteme eklememiz gerekiyor. Kullanıcıya kota uygulayacaksak Edquota –u kullanıcı_ismi, Gruba kota uygulayacaksak Edquota –u grup_ismi
- quotaon [FS_ismi]– FS üstünde kotayı aktif hale getirmemiz gerekiyor.
(quotaoff [FS_ismi]- FS üstünde kotayı pasif hale getirmek isterseniz.)
Vi editöründe /etc/fstab dosyasını açarak yine elimizde bulunan boş /myfs’i kota işlemlerinde kullanacağımız için ,onun bulunduğu satırı aşağıdaki şekilde düzelttik.
[root@artemis ~]# cat /etc/fstab
/dev/VolGroup00/LogVol00 / ext3 defaults 1 1
LABEL=/boot /boot 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/VolGroup00/LogVol01 swap swap defaults 0 0
/dev/sdb5 swap swap defaults 0 0
/dev/sdb1 /myfs ext3 defaults,usrquota,grpquota 0 0
[root@artemis ~]#
/myfs File Sistemi üzerinde fstab dosyasına eklediğimiz değişikliklerin etkili olabilmesi için sistemden /myfs FS’ini umount edip tekrar mount etmemiz gerekiyor.
Bunu iki türlü yolla yapabiliriz. İstersek umount,mount komutlarını arka arkaya ya da sadece mount komutunu –remount seçeneği ile koşarak halledebiliriz.
//*********** birinci yol**************//
[root@artemis ~]#
[root@artemis ~]# umount /myfs
[root@artemis ~]# mount /myfs
[root@artemis ~]#
//*********** ikinci yol**************//
[root@artemis ~]# mount -o remount /myfs
Şimdi FS’ imizi sistemde kota için kullanacağımız hale getirmiş olduk ama birde bunu açıkça sistemin kendisine iletmemiz gerekiyor.Bunun için kota uygulayacağımız FS üstünde
Kota database’i oluşturmamız gerekiyor. Bunun için quotacheck komutunu kullanacağız.
UYARI-1!: quotacheck komutu kullanılan(mounted halde ve kullanıcılar veya uygulamalar tarafından üstünden işlem yapılan FS’ler) bir Fs üstünde koşmanızı resmiyette Redhat firması tavsiye etmiyor. Onun için kota oluşturmayı düşündüğünüz FS’i hemen oluşturduktan sonra,kullanılmaya başlamadan önce kota bilgilerini eklerseniz sizin için daha iyi olur. Eğer illaki mounted ve kullanılan Fs üstünde bu komutu çalıştırmak istiyorsak şu adımları izleyiniz.
quotaoff /fs_ismi
mount –o ro,remount /fs_ismi
quotacheck –options /fs_simi
Seçenekler |
Açıklama |
-c |
Var olan kota dosyalarını okuma,yeni bir işlem varsa disk üstüne kaydet yani Kota hesabı aktif hale getirilmek istenen FS üstünde kota bilgilerini tutan dosyaları oluştur demek. |
-u |
Kullanıcı kotalarını tutan |
-g |
Grup kotalarını tutan |
-v |
Verbose mode,kullanıcıya ne olup bittiğini bilgisini göster. |
-d |
Debugging Mode, eğer bir şeyler ters gidiyorsa –d seçeneği ile daha detaylı olup bitene bakabilirsiniz. |
-i |
Interaktif mod. |
Dolayısıyla ilk başta bu komutu –cug diye bütün seçenekleriyle koşmamız gerekiyor.
[root@artemis ~]# quotacheck -cug /myfs -- > /myfs için kota dosyalarını oluşturmuş olduk.
[root@artemis ~]#
[root@artemis ~]#
[root@artemis ~]# ls -al /myfs -- > gördüğünüz gibi /myfs altında kota bilgilerini tutacak aquota.user ve aquota.group dosyaları oluştu.
total 48
drwxrwxr-x 3 root yonetici 4096 Oct 10 00:22 .
drwxr-xr-x 24 root root 4096 Oct 9 16:38 ..
-rwxrwx--- 1 root root 45 Oct 9 21:50 acl_ornek
-rw------- 1 root root 7168 Oct 10 00:22 aquota.group
-rw------- 1 root root 6144 Oct 10 00:22 aquota.user
drwx------ 2 root root 16384 Sep 10 15:03 lost+found
[root@artemis ~]# quotacheck –avug -- > FS’i kota için kullanmaya başlamadan öncede komple kontrol yaptırıyoruz.
quotacheck: Scanning /dev/sdb1 [/myfs] done
quotacheck: Checked 3 directories and 5 files
edquota ; Şimdi de kullanıcı veya gruba kota ekleme kısmına geldik. Bunun içinde edquota komutunu kullanacağız.edquota komutuna –u seçeneği ile user bilgisini vereceğiz ve karşımıza bir text editör çıkacak. Bu text editörde değerleri değiştireceğiz.
[root@artemis ~]# edquota –u bilgipark -- > bilgipark kullanıcısına kota ekleyeceğiz,karşımıza text editor gelecek, vi gibi kullanarak bilgileri giriyoruz.
Disk quotas for user bilgipark (uid 501):
Filesystem blocks soft hard inodes soft hard
/dev/sdb1 0 0 0 0 0 0
~
Bilgileri girerken bu tabloyu gözden geçirebilirsiniz. Nereye ne girmeniz gerektiği bilgisi yer alıyor.
Filesystem |
Blocks |
inodes |
Soft Limit |
Hard Limit |
Kota uygulanan FS |
Kullanıcının şu an kullandığı 1K boyutlu block sayısı. 100 blocks demek 100K demek aslında.Not: Bu değerleri değiştirmeyin. Bunlar size referans olarak gösterilen şu anki değerlerdir. |
Kullanıcıya ait olan inodes sayısı. Not: Bu değerleri değiştirmeyin. Bunlar size referans olarak gösterilen şu anki değerlerdir. |
Soft Limit maksimum kullanılabilecek değeri ifade eder. Ama bu değer aşılabilir. Belli bir uyarı verilir.Grace period denilen uyarı periyoduna sahiptir.Grace period da biterse kullanıcının erişimi yasaklanır. |
Kullanıcının kesinlikle aşamayacağı sınırdır. Kullanıcı hiçbir şekilde bu limitin ötesine geçemez. |
Editörde soft limit için 100,hard limit için 150 girdik. Yani /myfs altında bilgipark kullanıcısı 100K alan kullanırsa soft limite gelecek.150K’dan sonrasını kesinlikle kullanamayacak.
//***********root kullanıcısının shell’i********************************//
[root@artemis myfs]# edquota -u bilgipark -- > editör gelecek ve aşağıdaki değerleri gireceğiz.
Disk quotas for user bilgipark (uid 501):
Filesystem blocks soft hard inodes soft hard
/dev/sdb1 0 100 150 1 0 0
~
~
[root@artemis myfs]# quotaon –avug -- > kota uygulamasını aktif hale getirdik
//***********paralelde bilgipark kullanıcısının shell’i********************************//
[bilgipark@artemis myfs]$ dd if=/dev/zero of=/myfs/kota_ornek bs=100K count=1 -- > şimdi dd komutu yardımıyla dummy bir dosya oluşturuyoruz 100k’lık.ve soft limite eriştiğimiz için uyarı alıyoruz.
sdb1: warning, user block quota exceeded.
1+0 records in
1+0 records out
102400 bytes (102 kB) copied, 0.00055392 seconds, 185 MB/s
[bilgipark@artemis myfs]$
[bilgipark@artemis myfs]$
[bilgipark@artemis myfs]$ ls -lrht
total 140K
drwx------ 2 root bilgipark 16K Sep 10 15:03 lost+found
-rwxrwx--- 1 root bilgipark 45 Oct 9 21:50 acl_ornek
-rw------- 1 root root 7.0K Oct 10 01:03 aquota.group
-rw------- 1 root root 7.0K Oct 10 01:11 aquota.user
-rw-rw-r-- 1 bilgipark bilgipark 100K Oct 10 01:11 kota_ornek
[root@artemis myfs]# quota bilgipark -- > soft limit erişimi sonrası bilgipark kullanıcısının kota bilgilerini kontrol ediyoruz.
Disk quotas for user bilgipark (uid 501):
Filesystem blocks quota limit grace files quota limit grace
/dev/sdb1 104* 100 150 6days 1 0 0
[bilgipark@artemis myfs]$ dd if=/dev/zero of=/myfs/kota_ornek bs=150K count=1 şimdi de dd komutu yardımıyla soft limiti geçip hard limite yanaşacak bir dummy dosya oluşturuyoruz.
sdb1: warning, user block quota exceeded. -- > 100K civarında soft limiti geçtik ve bu uyarıyı aldık
sdb1: write failed, user block limit reached. -- > 150K civarında ise hard limite yaklaşınca yazma işi hata aldı ve kesti.
dd: writing `/myfs/kota_ornek': Disk quota exceeded
1+0 records in
0+0 records out
147456 bytes (147 kB) copied, 0.00204268 seconds, 72.2 MB/s
[root@artemis myfs]# quota bilgipark -- > soft limit erişimi sonrası bilgipark kullanıcısının kota bilgilerini kontrol ediyoruz.
Disk quotas for user bilgipark (uid 501):
Filesystem blocks quota limit grace files quota limit grace
/dev/sdb1 148* 100 150 7days 1 0 0
[root@artemis myfs]#
Gruplara kota uygulamak; Eğer bir grup adına kota uygulaması yapmak istiyorsak edquota komutunu –g seçeneği ile koşmamız gerekiyor.
Mesela yonetici grubuna kota uygulayacaksak edquota –g yonetici denilip gelen text editörde değerleri girmemiz yeterli.
Kullanıcı kotaları ile aynı olduğu için örnek vermiyoruz.
Grace Period ve edquota –t komutu; Diskte Blocks alanında veya Inode sayısında Soft Limit aşılırsa o soft limit aşımına ne kadar süreyle izin verileceğini belirtmek için kullanılır.Kullanıcı soft limiti aştıktan sonra grace period işlemeye başlar.Eğer kullanıcı kendi limitlerine yani soft limitin altına düşmezse belirtilen gün sonunda erişimi yasaklanır. Bu grace periyodu hem block alanı hem inode sayısı için ortaktır ve “edquouta –t “ komutu ile editlenir.değerler seconds, minutes, hours, days, weeks, months cinsinden olabilir,sayı ile birimler bitişik gösterilmelidir. 7 gün grace periyodu “7days” şeklinde olmalıdır.
[root@artemis myfs]# 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/sdb1 7days 7days
~
~
~
Kotaların aktif ve pasif hale getirilmesi; quoutaon ve quoutaoff komutları sırasıyla sistem üstündeki belirlenen FS’teki kotaları aktif ve pasif hale getirmek için kullanılır.
Sistemdeki bütün kota uygulanan FS’lerdeki(a) kullanıcı(u) ve grup(g) kotalarını PASIF hale çekmek için;
quotaoff –vaug
Sistemdeki bütün kota uygulanan FS’lerdeki(a) kullanıcı(u) ve grup(g) kotalarını AKTIF hale çekmek için;
quotaon –vaug
Sistemdeki sadece /home FS’ine uygulana kullanıcı(u) ve grup(g) kotalarını pasif hale çekmek için;
quotaon -vug /home
[root@artemis ~]# quotaon -avug
/dev/sdb1 [/myfs]: group quotas turned on
/dev/sdb1 [/myfs]: user quotas turned on
[root@artemis ~]#
[root@artemis ~]#
[root@artemis ~]# quotaoff -avug
/dev/sdb1 [/myfs]: group quotas turned off
/dev/sdb1 [/myfs]: user quotas turned off
Kota durumunu görmek; Genel olarak sistemde var olan kotaları ve kotaların son durumlarını görmek istiyorsak repquouta komutunu kullanacağız.
Kota uygulanan bütün FS’leri görmek için repquouta –a ,sadece belirli bir FS’i görmek için repquouta FS_ismi
[root@artemis ~]# repquota -a
*** Report for user quotas on device /dev/sdb1
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 17696 0 0 5 0 0
bilgipark +- 148 100 150 6days 1 0 0
Bu çıktıda isimden sonra iki – işaretini göreceksiniz,bu çizgiler eğer + ise soft limitin aşıldığını gösterir. İlk çizgi blocks için olan soft limiti,ikinci çizgi ise inode için olan soft limitin aşıldığını gösterir.
Bir makalenin daha sonuna geldik, umarım faydalı bir makale olmuştur. Bir sonraki makalemizde görüşmek üzere