如何在 btrfs 子卷上显示配额限制?

lic*_*gon 6 quota btrfs

我无法确定如何获得当前在 btrfs 子卷上设置的配额限制。 关于配额的 btrfs wiki似乎没有显示这一点。

这就是我认为我知道的:

  • 设置配额: btrfs qgroup limit 21G /path
  • 检查已用空间: btrfs qgroup show /path

但是如何检查已经设置的限制?

小智 5

使用选项-r-e

btrfs qgroup show -pcre /path
Run Code Online (Sandbox Code Playgroud)

  • 这是没有用的,因为它只列出抽象数字(“配额组”),而没有任何有关哪个配额组链接到哪个子卷的信息。此外,如果不启用配额,它就无法工作,但是当配额对于当前数据量来说太小时,启用配额将导致写入失败。 (2认同)

pri*_*too 5

我创建了一个简单的脚本,它将显示指定路径中每个子卷的配额限制以及已用空间。语法非常简单:

./quota.sh path
Run Code Online (Sandbox Code Playgroud)

要打印所有子卷的已用空间,请使用 -a 标志:

./quota.sh path -a
Run Code Online (Sandbox Code Playgroud)

不要忘记为脚本添加执行权限。

脚本:


#! /bin/sh
volumes=$(btrfs subvolume list  $1 | cut -d " " -f 9 )
snapshots=$(btrfs subvolume list -s  $1 | cut -d " " -f 14 )
regsnap=$(echo $snapshots | sed 's/ /,/g')
normalv=$(echo $volumes | sed "s/\($regsnap\)//g" )

if [ ! -z "$snapshots" ] ; then
    echo SNAPSHOTS
for p in $snapshots; do 
    quot=$(btrfs qgroup show -rF $1/$p | tail -1)
    if [ -z $2 ]; then
        (echo $quot | grep -q none) || echo $p $quot
    else
     [ "$2" == "-a" ] && echo $p $quot
    fi
done
fi

if [ ! -z "$normalv" ] ; then
    echo SUBVOLUMES
for p in $normalv; do 
    quot=$(btrfs qgroup show -rF $1/$p | tail -1)
    if [ -z $2 ]; then
        (echo $quot | grep -q none) || echo $p $quot
    else
     [ "$2" == "-a" ] && echo $p $quot
    fi
done

fi
Run Code Online (Sandbox Code Playgroud)

它将首先打印传统子卷和快照卷下方。示例输出:

SNAPSHOTS
apple 0/258 1.32MiB 16.00KiB 20.00MiB
SUBVOLUMES
citrus/orange 0/256 1.32MiB 16.00KiB 20.00MiB
Run Code Online (Sandbox Code Playgroud)