BTRFS 是否会检查子卷或子卷所在的设备?

cer*_*cem 5 btrfs

Btrfsscrub将挂载点作为其目标。我们可以通过以下方式识别可能的 btrfs 目标:

while read d m t x
do
  [[ $t != "btrfs" ]] && continue
  echo "To be scrubbed: $m"
done < /proc/mounts
Run Code Online (Sandbox Code Playgroud)

但是,我们可以像普通设备一样挂载 btrfs 子卷。由于我们可以在同一设备上有许多子卷,因此使用 btrfs 文件系统类型清理所有挂载点可能会导致许多重复检查。

如果btrfs scrub在给定挂载点时检查底层设备,我们可以过滤/proc/mounts设备路径唯一的输出:

<(cat /proc/mounts | sort -u -k1,1)
Run Code Online (Sandbox Code Playgroud)

擦洗是按设备还是按子卷运行?

foo*_*oot 1

正如文档所指出的 scrub 命令在整个文件系统上运行。这是指使用 mkfs 创建的整个文件系统。尽管子卷可以单独挂载,但它们仍然是主文件系统的一部分,一些选项和操作(例如清理)仅对整个文件系统有效,而不仅仅是特定的子卷:

子卷属于单个文件系统,并且现在实现的所有子卷都共享相同的特定安装选项