What is disk quota?
Ans :
Disk quota is nothing but restricting the disk-space usage to the users. We have to remember one thing when we are dealing with disk quota i.e Disk Quota can be applied only on disks/partitions not on files and folders.

So how we can implement disk quota?
Disk quota can be implemented in two ways

a. On INODE
b.
On
BLOCK

What is an INODE?
Ans :
In Linux every object is consider as file, every file will be having an inode number associated and this is very much easy for computer to recognise where the file is located.

Inode stands for Index Node, and is the focus of all file activities in the UNIX file-system.
Each file has one inode that defines the file’s type (regular, directory, device etc),The location on disk, The size of the file, Access permissions, Access times.

Note that the file’s name is not stored in the inode.

So how to know what is your file Inode number?

Ans : Its just simple execute ls -i on your file.

ls -i xmls.txt

13662 xmls.txt

I think now you got what is INODE? Lets move on to BLOCK.

A block usually represents one least size on a disk, usually one block equal to 1kb. Some terms in Disk quota.

Soft limit : This is the disk limit where the user gets just a warning message saying that your disk quota is going to expire. This is just a warning, no restriction on data creation will occur at this point.

Hard limit : This is the disk limit where user gets error message, I repeat user gets error message stating that unable to create data.

Implementing QUOTA :
Step1 : Select/prepare the partition for quota, most of the time disk quota is implemented for restricting users not to create unwanted data on servers, so we will implement disk quota on /home mount point.

#vi /etc/fstab

Edit the /home mount point as follows
Before editing

/dev/hda2 /home ext3 defaults 0 0


after editing

/dev/hda2 /home ext3 defaults,usrquota 0 0


Step2 : Remounting the partition(this is done because the mount table should be updated to kernel). Other wise you can reboot the system too for updating of mount table, which is not preferred for live servers.

#mount -o remount,rw /home

Here -o specifies options, with remounting /home partition with read and write options.

Step3 : Creating quota database

#quotacheck -cu /home

The option -c for creating disk quota DB and u for user
Check for user database is created or not when you give ls /home you have to see auota.user file in /home directory,which contains user database.

Step4 : Switching on quota

#quotaon /home

Now get the report for default quota values for user surendra

#repquoata -a | grep surendra
surendra_anne --       4       0       0              1     0     0
surendra_a --             4       0       0              1     0     0
surendra_test --       16       0       0              4     0     0

Step5 : Now implementing disk quota for user phani on /home mount point(/dev/hda2)

#setquota -u surendra_anne 100 110 0 0 /dev/hda2

Step6 : Checking quota is implemented or not login to user surendra_anne and execute this command

#repquota -a 

or

#quota

Step7 : Keep creating data, once 100MB is reached user will get an warning message saying, and when he reaches 110MB he can not create any more data.

Hint : To create a data file you can use seq command as below

#seq 1 10000 > test.txt

this command will create a file with 10000 lines with numbers in it.

Removing quota :
To do this one, all the users should log out from the system so better do it in runlevel one.

Step8 : Stop the disk quota

#quotaoff /home

Step9 : Removing quota database which is located /home

#rm /home/aquota.user

Step10 : Edit fstab file and remove usrdata from /home line

#vi /etc/fstab

Before editing

/dev/hda2 /home ext3 defaults,usrquota 0 0

After editing

/dev/hda2 /home ext3 defaults 0 0

Step11 : Remount the /home partition

#mount -o remount,rw /home

That’s it you are done with Disk Quota Implementation in Linux. Now test your self in creating Linux user disk quota on your own.

The following two tabs change content below.
Mr Surendra Anne is from Vijayawada, Andhra Pradesh, India. He is a Linux/Open source supporter who believes in Hard work, A down to earth person, Likes to share knowledge with others, Loves dogs, Likes photography. He works as Devops Engineer with Taggle systems, an IOT automatic water metering company, Sydney . You can contact him at surendra (@) linuxnix dot com.