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

P2V using dd for KVM-QEMU guest

Preface: I have certainly not exhaustively tested this process.  I had a specific need and found a specific solution that worked. Situation:  I was issued a shiny new laptop running Red Hat Enterprise Linux 7 (with Corp VPN, certs, Authentication configuration, etc...)  The image was great, but I needed more flexibility on my bare metal.  So, my goal was to P2V the corporate image so I could just run it as a VM. * Remove corporate drive and install new SSD * install corp drive in external USB-3 case * Install RHEL 7 on new SSD * dd old drive to a disk-image file in a temp location which will be an image which is the same size as your actual drive (unless you have enough space in your destination to contain a temp and converted image) * convert the raw disk-image to a qcow file while pushing it to the final location - this step should reduce the disk size - however, I believe it will only reduce/collapse zero-byte blocks (not just free space - i.e. if you de...

Extending SNMP to run arbitrary shell script

Why are we here... This is not likely something I would have pursued under normal circumstances.  I happen to be working for a customer/client who is not afforded a lot of flexibility to accomplish their goals.  In this case, the rigor is justified.  They have to sometimes be fairly creative with how they solve problems. In this case they would like to utilize an existing snmp implementation to execute a command (or shell script) on a remote system.  They came to me with the idea of using Net-SNMP extend. https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/sect-System_Monitoring_Tools-Net-SNMP-Extending.html NOTE:  This is NOT a good implementation strategy in the "real world"  it will simply allow you to test the functionality.  There are a TON of security implications which would need to be taken in to consideration. Implementation Steps: [root@rh7tst01 ~]# yum -y install net-snmp net-snmp-utils ...

RHN Satellite Server (spacewalk) repomd.xml not found

"repomd.xml not found" If you add a channel, or if your RHN cache gets corrupted, and one of your guests complains that it cannot find repomd.xml for jb-ews-2-x86_64-server-5-rpm (for example) - you need to rebuild your repodata cache. Normally this is an automated job - which is exemplified by the fact that you have obviously built out your entire Satellite environment and never had to do any of the steps you are about to do. So - some prep work: Open 3 terminals to your Satellite Server and run: # Term 1 cd /var/cache/rhn watch "ls -l | wc -l" # Term 2 pwd cd /var/log/rhn tail -f rhn_taskomatic_daemon.log # Term 3 satellite-sync --channel=jb-ews-2-x86_64-server-5-rpm Once the satellite-sync has completed, you >should< see the count increment by one.  If you are unlucky (like me) you will not. You then need to login to the Satellite WebUI as the satellite admin user. Click on the Admin tab (at the top) Task Schedules (on the left) fin...