TrueNAS SCALE 数据备份教程
坑边闲话:存储是数字资产的基石,没有可靠的存储,就没有可靠的服务。基于 ZFS 文件系统的 TrueNAS SCALE 具有强大的数据复制能力。本文详细介绍 TrueNAS SCALE 的备份功能。
1. TrueNAS Replication 功能介绍·
Replication 指的是「复制」,在 TrueNAS 语境里指的是 zfs send
和 zfs recv
过程,即直接复制 ZFS 数据集。这里的复制并非是 rsync
的文件级别复制,而是 LUN 级别的复制。
TrueNAS SCALE 的 Data Protection 面板集成了所有可用的备份服务,以 24.04 为例:
- Scrub Tasks
- Cloud Sync Tasks
- Periodic Snapshot Tasks
- Rsync Tasks
- Replication Tasks
- Periodic S.M.A.R.T. Tests
2. 创建 SSH 机密和 SSH 连接·
TrueNAS 或者其他的系统,实时远程备份均依赖网络。既然有了网络,就需要考虑认证问题。本节介绍 TrueNAS Replication 所依赖的 SSH 认证。
2.1 创建连接使用的 SSH 机密·
在创建密钥时要注意,SSH-Keypairs:这里指的是一套 SSH 私钥、公钥密码,该密钥对存储在 NAS 上。注意,尽管仅填写公钥也可以保存,但是后续步骤将出现问题。务必至少将私钥均填写完整,毕竟公钥可以通过私钥计算出来。
2.2 创建 SSH 连接信息·
SSH-Connections 指的是建立 SSH 连接所需要的配置,其中包括选择要使用的
- 用户名、密钥对;
- 远程主机的 IP 地址和 SSH 服务端口等。
最后,单击 Discover Remote Host Key
即可自动获得远端机器指纹。
3. 创建 Replication 任务·
3.1 选择合适的传输模型·
如图 3 所示,创建 Replication 任务时需要调用此前创建的 SSH 连接配置文件。随后,需要指定 Transport 模式。为了更高的性能,笔者选择使用 SSH+NETCAT
.
在创建 Replication 任务时,需要选择 ZFS 数据集的传输模式,目前 TrueNAS SCALE 24.04 支持以下四种模式:
SSH
连接:大多数系统都支持 SSH。它需要在「Credentials > Backup Credentials”中预先创建连接。SSH+NETCAT
连接:使用 SSH 建立与目的地系统的连接,然后使用 Netcat 开一个隧道传输未加密的数据流,以实现更高的传输速度。这种方式仅在复制到安装了py-libzfs
的 TrueNAS 或其他 Linux 系统时有效。LOCAL
模式高效地将快照复制到同一系统上的另一个数据集,无需使用网络。LEGACY
使用 FreeNAS 11.2 及更早版本的传统复制引擎。
用户在选择传输模型时,要考虑以下事项:
- 系统版本:老旧的版本可选择
LEGACY
模式; - 是否需要加密:由于
SSH+NETCAT
可以实现更高性能,因此更适合内网备份,但在不可信环境里,最好使用加密的SSH
模式。
其他参数可参考以下内容设置:
Number of retries for failed replications
指的是任务执行失败时的重试次数,建议保持默认;Netcat active side
指的是 Netcat 主动方。建立连接要求连接的两端中的一个必须拥有开放的 TCP 端口。该选项指定选择哪个系统(本地或远程)开放端口。一般来说两边都可以,但是在严格的网络环境中,或许需要咨询安全运维工程师才可以。笔者选择 Remote 远端开启端口。- 其他信息可参考笔者的截图进行配置。
3.2 选择数据集的备份路径·
通过 WebUI 的路径选取器可方便地选择源数据集和目标数据集。原则上 TrueNAS 可以直接对存储池进行备份,但笔者的备份设备存储空间比较小,于是选择了非递归模式的数据集备份。
如图 4 所示,建议勾选 Include Dataset Properties
,保证数据集属性也复制过去。
最后,由于 zfs send
基于快照,因此要对 Replication 任务指定对应的周期性快照计划,毕竟 zfs send
的时候所需要的快照名参数要符合快照计划的命名规则。不过这也告诉我们,手动创建的快照可能不被复制,因为这种快照的名字一般不符合自动快照计划的命名规则。如果需要更进一步对指定快照名格式的快照进行复制,需要在 Also Include Naming Schema
列表里写入命名规则,此处不做进一步展开。
3.3 创建 Replication 计划·
只需要勾选 Run Automatically
,即可将复制计划设置为在关联的定期快照任务完成后立即启动。
此外,如果不希望快照执行完立即传输,则可另行设计 Schedule
周期任务。
4. Replication 性能分析·
经过实测,在 EPYC 7302 TrueNAS SCALE 系统上,使用 NVIDIA ConnectX-6 100G 网卡非 RDMA 模式时,SSH+NETCAT
模式的性能是 SSH
模式的四倍左右,接收方阵列写入速率最高可以达到 1.25GB/s. 此数据仅作参考,因为 SSH 模式时笔者启用了流压缩,所以传输性能损耗更高一些。
总结·
本文简要介绍了 TrueNAS SCALE 的 Replication 功能,至此存储篇章的基本脉络已经讲完,其中包括了
- 卷管理和数据集设置;
- 读写性能优化;
- 异地备份与灾后重建;
通过更改 Replication 的方向,即在 Pull 和 Push 之间切换,即可实现双向同步。