通读 btrfs (sub) 命令文档,它可以“仅平衡具有给定复制配置文件的块组”,以及“将选定的块转换为给定的配置文件”,显然它允许不同的块(从卷管理分配的主要单元)特征集)具有不同的特征。但我无法确切地弄清楚如何利用它并告诉它做什么。
这就是我的想法:
HDD 被格式化为三个分区,并创建一个 btrfs 来使用这三个分区,其中元数据为 raid5,纯数据为单个分区。
将几 TB 的文件复制到驱动器。
✪ 更改“数据”块配置文件以将其跨分区条带化。
创造帕档案恢复文件,为这些冷存档文件提供 20% 的冗余。添加这些文件时,复制策略将生效,每个文件将分布在三个分区上。我将确保将一组恢复记录分布在各个分区上,而不是像正常高效的文件系统管理所追求的那样紧密分组。
验证一切
✪ 将数据复制配置文件更改为 RAID5。
当驱动器驻留在“dock”中时,可以添加新文件,并且它们具有由文件系统自动提供的 2of3 冗余。
驱动器被移除并存储在异地。驱动器每月轮换一次,上个月添加的材料现在是步骤 2 的一部分。交换双月一次现场驱动器,我希望将策略切换回单一和条带化以更新步骤 4用新鲜的材料。
简而言之,我想为不同的子卷分配不同的策略或更改随后将应用于新写入的策略,但是不是重新应用于现有块。
标有“✪”的部分该怎么做?
答案1
简短的回答是,现在您无法将不同的策略分配给不同的子卷。 BTRFS 邮件列表上一直有关于添加此内容的讨论,但没有任何进展。内核侧确实有技术支持阅读具有多个不同的数据或元数据配置文件的文件系统,但实际上不可能执行这样的配置。
此外,在处理重建条带时,BTRFS(raid5 和 raid6)中的奇偶校验 RAID 配置文件存在一些严重问题,这实际上意味着您正在用数据玩俄罗斯轮盘赌。自从将奇偶校验 RAID 集成到 BTRFS 中以来,这些问题就一直存在,并且可能至少在 Linux 4.14 中才会得到修复(尽管考虑到当前的进展,我想说 4.16 是一个更现实的最早估计)。
现在,对于转换配置文件,您可以使用btrfs balance
命令来执行此操作。将元数据和数据转换为给定配置文件的基本形式是:
btrfs balance start -dconvert=<profile> -dsoft -mconvert=<profile> -msoft /path/to/filesystem
和选项告诉它分别转换数据和元数据配置文件,并且和-dconvert
选项告诉它只对不是所需配置文件的块进行操作。请记住,由于其工作原理,平衡操作可能需要很长时间(它本质上是将过滤器选择的所有内容通过顶级分配器发送回)。-mconvert
-dsoft
-msoft