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

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

这是我认为我知道的:

  • 设置一个配额: btrfs qgroup limit 21G /path
  • 检查使用的空间: btrfs qgroup show /path

但如何检查已设定的限制?

使用选项-r-e

 btrfs qgroup show -pcre /path 

就我们所说,在这方面,Btrfs是由devise打破的。

目前在btrfs-progs中没有函数来显示哪个子卷具有哪个配额。 您必须编写一个脚本(以及许多为btrfs所做的决策)来parsing输出的抽象配额组编号,并在其下面的配额组中列出子卷。 它可以被添加,但btrfs开发人员虔诚地拒绝这样做。

更糟糕的是,不仅没有办法显示一个子卷目前用掉的配额有多less。 这就是为什么df只显示总空闲空间。 由于btrfs是如何devise的,所以根本不可能做到这一点。 这是因为子卷工作像快照。 意思是,要找出子卷中有多less数据,就必须扫描整个文件系统,并find链接到该子卷/快照的所有文件,并将其添加。 就像du命令一样。 这需要很多时间。 我不知道btrfs是如何知道一个配额是满的… IRC频道不能给我任何答案。 (他们忙于捍卫自己脆弱的过度膨胀的自我。)明智的做法是,每次添加或删除数据时都要更改子容量计数器。 哪一个必须是btrfs知道它是充分的。 至less我不知道任何其他的方式。 但为什么他们会select保留这个可用的信息基本上是一个保守的国家机密,我不知道…

如果zfs不会有这样的疯狂的RAM要求(每TB 1GB,而不是单板ARM计算机上的选项),并且由于没有提前写入数据而导致数据丢失, 我会build议倾销btrfs