NDMP转储和还原阶段问题描述
不可不使用
适用场景
- Data ONTAP 7 模式
- 集群模式 Data ONTAP 8
- ONTAP 9
问题解答
术语
转储阶段的问题描述 中使用的一些关键术语如下:
- 索引节点:
- 文件系统上的每个文件都有一个关联的标识符。
- 此 ID 称为索引节点。
- 文件系统通常会预先分配索引节点。
df -i
ONTAP 中的输出显示了卷的已用索引节点总数和可用索引节点总数。- 在本文档中,我们将使用术语 inode 和 file 可互换使用。
- 文件系统上的每个文件都有一个关联的标识符。
- 索引节点文件:
- 这是文件系统上的一个特殊文件,其中包含卷中所有索引节点及其详细信息的列表。
- 索引节点映射:
- 一个元素数与卷上的索引节点数相同的阵列。
- 索引节点编号用作其在阵列中对应条目的索引。
- 任何条目中的值为 1 表示相应的文件将出现在给定备份中。
- 偏移映射:
- 一个元素数与卷上的索引节点数相同的阵列。
- 索引节点编号用作其在阵列中对应条目的索引。
- 如果备份中存在索引节点,则其对应条目包含磁带上的物理地址,用于标记备份映像中文件数据的开头。
转储阶段
- 对于由 NDMP 启动并启用了文件历史记录的备份,转储必须在第 III 和第 IV 阶段生成文件历史记录,并在第 IIIB 阶段生成偏移映射。
- 生成文件历史记录和偏移映射会在这些阶段为 NDMP 备份增加一些成本,但允许 NDMP 提供宝贵的功能,例如备份索引编制, DAR 和增强的 DAR 。
- 有关文件历史记录的详细信息,请参见 常见问题解答: NDMP 文件历史记录。
第一阶段
- 转储会生成需要备份的文件列表。
- 此阶段的输出称为节点映射。
- 索引节点映射包含卷上每个索引节点的条目。
- 要备份的索引节点的相应条目设置为1、而不要备份的索引节点的条目设置为0。
注意: 其中的Inode越多、完成Phase I所需的时间就越长。 例如、一个具有10亿个Inode的卷所用时间明显长于一个具有1000万个Inode的卷所用时间。
第二阶段
- 转储会将阶段I中生成的节点映射写入磁带。
第三阶段
- 转储会将备份数据集的整个目录结构写入磁带。
- 如果启用、则会在此阶段生成目录的文件历史记录并将其传递给备份应用程序。
- 阶段三:
- ACL阶段:在此阶段、转储会将数据集的ACL备份到磁带。
- 如果数据集中的许多文件都具有ACL、则此步骤可能需要更长时间。
- 阶段IIIB:
- 只有打开了文件历史记录的NDMP备份才会执行此阶段。
- 此阶段的输出为偏移映射。
- 对于任何给定备份上的每个文件、偏移映射都包含磁带上标记备份映像中文件开头的物理地址。
- 阶段三:
注意: 目录索引代码越多、完成阶段III所需时间就越长。 此外、由于转储会遍历整个目录树、因此、与更简单的目录结构相比、读取更深、更宽或同时读取这两种目录结构可能需要更长时间。
第四阶段
- 此阶段会将实际文件数据转储到磁带上。
- 此阶段按索引节点顺序运行。
- 因此、可以保证在较大的Inode数之前找到较小的Inode数。
- 如果启用、则在此阶段会生成文件的文件历史记录并将其传输给备份应用程序。
第五阶段
- 这与第4阶段A的重复。
- 这是NetApp本机转储中的传统方法。
- 由于向后兼容性的原因、此阶段会保留下来、但在现代版本的ONTAP中、此阶段不可用。
还原 阶段
- 第一阶段:
- 整个备份映像的目录结构将读取到索引中,文件信息将读取到索引中。
- 第二阶段:
- 根据在第 I 阶段创建的索引和索引,在文件系统上创建为还原选择的所有文件和目录
- 由于还原操作的性质、在 浏览或列出文件系统时、在第二阶段创建的文件和目录将显示为零字节
- 零字节文件和目录条目将更改为非零值、在恢复进入阶段III后、可能会观察到大小增加
- 第三阶段:
- 系统将从备份映像中读取各个文件的内容、并 使用数据填充在阶段II中创建的树结构。
qtree/Volume dump 与非 qtree 子目录转储
- 根据用户是启动卷 /qtree 的备份还是非 qtree 子目录 / 子树的备份,转储的第一阶段的行为会有所不同。
- 对于子目录转储,必须检查指定备份根目录下的每个目录和文件,以确定是否应将其包含在备份中。
- 此操作非常耗时,尤其是当子目录包含数百万个索引节点(文件)时。
- 对于基于卷和 qtree 的备份,无需通过整个目录树来确定需要备份的内容。
- 相反, ONTAP 可以通过备份快照的索引节点文件。
- 只需查看索引节点文件,即可确定该索引节点是否存在以及它是否属于给定 qtree/volume 。
- 与目录遍历相比,使用索引节点文件的过程更快,更高效。
- 索引节点文件中的信息不足,无法对非 qtree 子目录转储执行相同的操作,因此建议尽可能备份 qtree 和卷,而不是备份非 qtree 子目录。
- 请注意,使用排除 NDMP 环境变量也会导致 qtree 和卷转储执行速度较慢的目录遍历方法。
- 如果要考虑备份速度,请避免在 NDMP 启动的转储备份中使用排除项。