I'm trying to set up quotas on our server so that the user's homes will not exceed a certain size. My idea was to assign a unique group to each user and then set a quota on each of these groups, as described in the BeeGFS documentation.
I am using BeeGFS 7.4.0p1 and it seems to be configured correctly for quotas.
To test it, I wrote a little bash script to check if it is working as expected. Unfortunately, it does not. The test script looks something like this:
#!/bin/bash
# set up group and user
USER="my_user"
GROUP_NAME="${USER}_home_quota"
groupadd "$GROUP_NAME"
echo "Created group $GROUP_NAME"
usermod -a -G "$GROUP_NAME" "$USER"
echo "Added user $USER to group $GROUP_NAME"
USER_ID=$(id -u "$USER")
echo "User ID: $USER_ID"
GROUP_ID=$(getent group "$GROUP_NAME" | cut -d: -f3)
echo "Group ID: $GROUP_ID"
# set up quota on group
sudo beegfs-ctl --setquota --gid $GROUP_ID --sizelimit=10M --inodelimit=unlimited
# create and configure test dir
DIR="/home/my_user/quota_test"
rm -rf $DIR
mkdir $DIR
chmod g+s $DIR
sudo chown $USER:$GROUP_NAME $DIR
# create test folder and files
mkdir $DIR/dir1
for i in $(seq 1 15); do
head -c 1M /dev/urandom >$DIR/file$i
done
# test if quota on group works
echo "test dir:"
ls -lah $DIR
beegfs-ctl --getquota --gid $GROUP_ID
# test if quota on user works
sudo beegfs-ctl --setquota --uid $USER_ID --sizelimit=100T --inodelimit=unlimited
beegfs-ctl --getquota --uid $USER_ID
If I run this script, I get the following output:
groupadd: group 'my_user_home_quota' already exists
Created group my_user_home_quota
Added user my_user to group my_user_home_quota
User ID: 1173670758
Group ID: 1000
Using default storage pool (1)
test dir:
total 16M
drwxr-sr-x 2 my_user my_user_home_quota 0 Dec 5 11:46 .
drwx------ 26 my_user users 43 Dec 5 11:46 ..
drwxr-sr-x 2 root my_user_home_quota 0 Dec 5 11:46 dir1
-rw-r--r-- 1 root my_user_home_quota 1.0M Dec 5 11:46 file1
-rw-r--r-- 1 root my_user_home_quota 1.0M Dec 5 11:46 file10
-rw-r--r-- 1 root my_user_home_quota 1.0M Dec 5 11:46 file11
-rw-r--r-- 1 root my_user_home_quota 1.0M Dec 5 11:46 file12
-rw-r--r-- 1 root my_user_home_quota 1.0M Dec 5 11:46 file13
-rw-r--r-- 1 root my_user_home_quota 1.0M Dec 5 11:46 file14
-rw-r--r-- 1 root my_user_home_quota 1.0M Dec 5 11:46 file15
-rw-r--r-- 1 root my_user_home_quota 1.0M Dec 5 11:46 file2
-rw-r--r-- 1 root my_user_home_quota 1.0M Dec 5 11:46 file3
-rw-r--r-- 1 root my_user_home_quota 1.0M Dec 5 11:46 file4
-rw-r--r-- 1 root my_user_home_quota 1.0M Dec 5 11:46 file5
-rw-r--r-- 1 root my_user_home_quota 1.0M Dec 5 11:46 file6
-rw-r--r-- 1 root my_user_home_quota 1.0M Dec 5 11:46 file7
-rw-r--r-- 1 root my_user_home_quota 1.0M Dec 5 11:46 file8
-rw-r--r-- 1 root my_user_home_quota 1.0M Dec 5 11:46 file9
Quota information for storage pool Default (ID: 1):
user/group || size || chunk files
name | id || used | hard || used | hard
------------------|------||------------|------------||---------|---------
my_user_home_quota| 1000|| 0 Byte| 10.00 MiB|| 0|unlimited
Using default storage pool (1)
Quota information for storage pool Default (ID: 1):
user/group || size || chunk files
name | id || used | hard || used | hard
--------------|------||------------|------------||---------|---------
my_user |1173670758|| 37.04 TiB| 100.00 TiB|| 1777308|unlimited
Now my question:
The quota seems to be working as expected on the user (second output), but not for the group quota. Why is the size used still zero, even though I just created a bunch of files with that group?