Skip to main content

Disk Quotas (W.I.P.)

Enabling Disk Quotas

==Update /etc/fstab==
<pre>Update the fstab - adding ,usrquota,grpquota
/dev/VolGroup00/LogVol01 /                       ext3    noatime,usrquota,grpquota         1 1
/dev/mapper/ORAAPPVG-LV_U01 /u01 ext4 defaults,usrquota,grpquota 1 2
/dev/mapper/ORAAPPVG-LV_U02 /u02 ext4 defaults,usrquota,grpquota 1 2
/dev/mapper/ORAAPPVG-LV_U03 /u03 ext4 defaults,usrquota,grpquota 1 2
</pre>

==Create aquota file for each FS==
<pre>for FS in `grep usrquota /etc/fstab | awk '{ print $2 }'`; do touch ${FS}/aquota.user && chmod 0600 ${FS}/aquota.user; done
for FS in `grep grpquota /etc/fstab | awk '{ print $2 }'`; do touch ${FS}/aquota.group && chmod 0600 ${FS}/aquota.group; done
</pre>

==Remount Filesystem or reboot==
<pre>It is likely best to reboot at this point.
  Otherwise, run # mount -oremount /
</pre>==Turn on quotas / create template user==
  for FS in `grep grpquota /etc/fstab | awk '{ print $2 }'`; do quotacheck ${FS}; done
  quotaon -av <br />
  edquota -u bob
  Disk quotas for user bob (uid 1384):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/mapper/ORAAPPVG-LV_U01          0    2048000    2560000          0        0        0
  /dev/mapper/ORAAPPVG-LV_U02          0    2048000   25600000          0        0        0

This does not work as we use netgroups (follow the next example instead)

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

I create a file with all the users, then run...
  for USER in `cat u0X-quotas.users `; do edquota -p bob $USER; done

== Review quotas ==

  repquota -a (or repquota -av -- tons of data with v)
You can review quotas on a per user basis

<pre>
[root@dvgllpsmsapp11 ~]# quota
Disk quotas for user root (uid 0): none
[root@dvgllpsmsapp11 ~]# quota oracle
Disk quotas for user oracle (uid 1038): none
[root@dvgllpsmsapp11 ~]# quota bob
Disk quotas for user bob (uid 1384):
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
      /dev/root 2304996* 768000 1024000   6days      48       0       0       
/dev/mapper/ORAAPPVG-LV_U01
                  20628  2048000 2560000             107       0       0       
/dev/mapper/ORAAPPVG-LV_U02
                 330444  2560000 3072000           12952       0       0       
/dev/mapper/ORAAPPVG-LV_U03
                  34800  4608000 5120000              24       0       0       
</pre>

==Update Quotas==
I ran into an issue where I grew a quota'd filesystem

The following is a rather abrasive method to just clear it all up...
  quotaoff /u02
  rm -f /u02/aquota.*
  quotacheck -vgum /u02 && quotaon /u02<br /><br />
Disable an individual quota
  setquota -u oracle 0 0 0 0 -a


A bit of code to create quotas based on a particular user
edquota pchernik
  #!/bin/bash
# WORKAROUND TO UPDATE/ADD QUOTAS TO HOSTS USING NETGROUPS

# TODO: Need to create an exclude_list [DONE]
EXCLUDEUSERS=(oracle srm)
QUOTAPROTOUSER=myuser1

echo "# Number of Excluded Users: ${#EXCLUDEUSERS[*]} "

NETGROUPS=`grep ^+ /etc/passwd | sed 's/+@//g' | grep -v sysadmin`
for NETGROUP in $NETGROUPS
do
  echo "# NOTE: processing $NETGROUP"
  USERS=`getent netgroup $NETGROUP | sed 's/${NETGROUP}//g' | sed 's/)/\n/g' | awk 'BEGIN {FS=","}{print $2}' | grep -v ^$ | sed 's/\ //g'`
  for USER in $USERS
  do
    SKIP=0
    for i in "${EXCLUDEUSERS[@]}"
    do
      if [ "$i" == "${USER}" ]
      then
        SKIP=1
      fi
    done
    case $SKIP in
      0)
        echo "edquota -p ${QUOTAPROTOUSER} ${USER}"
        edquota -p ${QUOTAPROTOUSER} ${USER}
      ;;
      *)
        echo "# WARNING: Ignoring ${USER}"
      ;;
    esac
    SKIP=0
  done
  echo
done

Comments

Popular posts from this blog

PXE boot a LiveCD image

Summary: I have wanted to build a kickstart environment which hosted a "rescue CD" or LiveCD to allow you to boot over the network after you blew your stuff up and needed to repair a few things.  Today I have worked through a method of doing so, with the help of the people who published a succinct script with the Red Hat Enterprise Virtualization Hypervisor.  (the script will be at the bottom of this post - if I have somehow not followed the GPL, please let me know and I will correct whatever is necessary) NOTE/Warning: The boot will fail due the initrd being too large (645mb).  I'm not sure how to proceed.  This procedure worked for RHEVh, because it is quite a bit smaller.  Hopefully I can report back with progress on this? :-$ Procedure: download your LiveCD image to /export/isos/RESCUE/Fedora-16-i686-Live-Desktop.iso # cd /var/tmp # vi livecd-iso-to-pxeboot (populate the file with the script shown below) # chmod 754 ./livecd-iso-to-pxeb...

"Error getting authority: Error initializing authority: Could not connect: No such file or directory (g-io-error-quark, 1)"

"Error getting authority: Error initializing authority: Could not connect: No such file or directory (g-io-error-quark, 1)" One issue that may cause this to arise is if you managed to break your /etc/fstab We had an engineer add a line with the intended options of "nfsvers=3" but instead added "-onfsvers=3" and it broke the system fairly catastrophically.

MOTD with colors! (also applies to shell profiles)

I'm not sure why I had never looked into this before, but this evening I became obsessed with discovering how to present different colored text in the /etc/motd. A person had suggested creating a shell script (rather than using special editing modes in vi, or something) and I agree that is the simplest way of getting this accomplished quickly. This most noteworthy portion of this script is the following: RESET="\033[0m" that puts the users shell back to the original color. I typically like a green text on black background. Also - a great reference for the different colors and font-type (underscore, etc...) https://wiki.archlinux.org/index.php/Color_Bash_Prompt I found this example on the web and I wish I could recall where so that I could provide credit to that person. #!/bin/bash #define the filename to use as output motd="/etc/motd" # Collect useful information about your system # $USER is automatically defined HOSTNAME=`uname -n` KERNEL=`un...