GetNAS Logo

多台FreeNAS数据冗余:配置Rsync同步

2015-3-14 1:13 Herald 系统设置 3,877

采用ZFS文件系统使得FreeNAS拥有了很强的数据保护能力,但安全总是相对的。对于存储了大量重要文件的NAS服务器来说,再多的安全手段也不为过,再多的备份副本也不嫌多。

多台FreeNAS服务器之间冗余备份方案的采用者大多是企业,数据冗余可以更大程度保证企业数字资产安全,而对于家庭用户,ZFS所提供的软磁盘阵列已经足够安全了,额外购置一台NAS设备用于数据冗余,的确有些“冗余”了。

好了,请出本文主角——Rsync

Rsync 是一款开源免费的数据复制工具,主要用于数据备份、多设备间数据镜像。借助网络,它可以自动将指定的文件从一台设备同步到另一台设备。更重要的是,当数据在两台设备间同步完成,下次同步的时候,Rsync 将只同步发生变化的文件(增量同步),这大大降低了网络资源的浪费。FreeNAS 默认集成了 Rsync 并提供非常友好的 WebGUI 管理界面,方便我们快速的创建数据同步任务。

Rsync 服务端与客户端

说到数据同步,那么一定是至少在两台设备之间发生的事情。对Rsync而言,这两台设备,一台被视为服务端,另一台则被视为客户端。

  • Rsync Server(服务端):这台设备用来拉取(接收)文件。
  • Rsync Client(客户端):这台设备用来推送(发送)文件。

FreeNAS 既可以被配置成Rsync的服务端,也可以配置成客户端。相对 FreeNAS 系统的另一端,既可以是FreeNAS系统,也可以是任何可以运行Rsync的操作系统。注意:如果要在两台 FreeNAS 系统之间配置 Rsync 同步,则应该在客户端(即要发送文件的设备)上创建 Rsync 任务。

FreeNAS 支持的 Rsync 的同步模式

FreeNAS 支持两种 Rsync 同步模式,第一种是“模块”模式,另一种是“SSH”模式。

  • Rsync “模块”模式:通过一个未加密的连接同步文件。该模式需要至少在服务端(即接收文件的设备)上配置一个模块。其他操作系统应该在 rsyncd.conf 文件中配置模块。
  • Rsync “SSH”模式:通过一个加密的连接同步文件,需要配置 SSH 用户和主机 public keys(公钥)。
提示:如果需要同步数据的两台设备之间存在防火墙,请设置开放 TCP 873 端口。

实验设备信息

为了更好的介绍Rsync同步,我们准备了两台安装了FreeNAS 9.3的主机,以下为两台机器的相关信息:

主机A

  • IP:192.168.1.102
  • 主机名:FreeNAS
  • 数据集:storA

主机B

  • IP:192.168.1.104
  • 主机名:nasB
  • 数据集:storB

两台 FreeNAS 通过 Rsync “模块”模式同步数据

本例将主机A视为客户端(发送数据),主机B视为服务端用来接收主机A发来的数据。

重点提示:

  1. 在两台FreeNAS主机之间配置Rsync同步,应该在客户端创建Rsync任务
  2. 使用Rsync“模块”模式同步,应该在服务端创建 Rsync 模块

首先我们在服务端(主机B)创建Rsync模块。如下图所示,WebGUI 左侧系统菜单依次展开 服务 → Rsync同步 → 增加Rsync备份模块。

20150313222853

创建Rsync模块主要设置如下几项:

  • 模块名称:必须设置,但名称随意,这个名称在客户端(主机A)上面要用。
  • 路径:主机B准备的数据集是 storB,请根据你自己创建的数据集进行选择。
  • 访问模式:读写;
  • 用户:root (主要是确保对数据集的操作权限);
  • 允许的主机:设置主机A的IP地址;

20150313225708

Rsync模块创建完成,接下来在客户端(主机A)上创建Rsync任务。在主机A上的WebGUI上方主菜单,点击“任务”,在任务管理器中切换到“Rsync任务”标签,随后点击下方的“Add Rsync 任务”。

20150313232116

创建Rsync任务主要设置如下几项:

  • 路径:我们在主机A上准备的数据集为 storA,你要根据自己的实际数据集填写;
  • 用户:root (为了确保对数据集有绝对的操作权限);
  • 远程主机:填写服务端(主机B)的IP地址;
  • Rsync mode:选择Rsync模块;
  • 远程模块名:填写服务端(主机B)上创建的模块名称,我们前面创建的模块名称为 getnas;
  • 方向:推送(从本机发送数据到服务端);
  • 分钟:本例设置每5分钟同步一次;
  • 保留权限:选中(为了保证同步的文件权限不会被root用户权限覆盖);
  • 其他选项保持默认,也可以根据你的需求进行调整;

20150313231946

服务端和客户端都配置好了,接下来启用Rsync服务。注意喽,这里只需要启动服务端(主机B)上的Rsync服务即可

20150313233338

接下来,为了观察数据同步是否成功,把在两个主机上把用于 Rsync 同步的数据集(storA和storB)都配置CIFS共享。随便存些文件到 storA 数据集,如下图。

20150313234425

再查看一下 storB 数据集的共享目录,如下图,可以看到里面多了一个名为 storA 的目录,没错了,这个就是 Rsync 第一次同步过来的目录,就在服务端(主机B)启动Rsync服务的那一刻,Rsync立即进行了第一次同步。

20150313234516

等待5分钟(因为我们在Rsync任务里面设置了每5分钟同步一次),在来查看 storB 数据集的共享目录,如下图,新添加到 storA 的那些文件也同步过来了,是不是有一种很过瘾的感觉。接下来,如果有需要,你可以按照自己的意愿,去修改客户端上的Rsync同步任务了。

20150313234819

两台 FreeNAS 通过 Rsync “SSH”模式同步数据

本例将主机A视为客户端(发送数据),主机B视为服务端用来接收主机A发来的数据。

相比前面介绍的“模块”同步模式,Rsync SSH 同步模式的配置要复杂一些,另外,使用SSH同步模式不需要服务端启动Rsync服务。

创建 Rsync 任务之前,我们必须先对 SSH 进行一些必要的配置:

  • 在客户端(推送数据的设备)上为 Rsync 用户(通常为root用户)创建一个 public/private key pair(公/私密钥对),并将公钥复制到服务端(接收数据的设备)的同名用户账户上;
  • 为了避免”中间人”攻击风险,服务端(接收数据的设备)的 host key(主机秘钥)也必须复制到客户端;
  • 服务端(接收数据的设备)必须开启SSH服务;

首先,在客户端(主机A)为root用户创建公/私秘钥对,这项操作需要在命令行(Shell)中进行。如果你尚不了解如何通过SSH访问FreeNAS主机,请先查阅《FreeNAS 启用 SSH 服务》。

FreeNAS 支持创建 DSA 和 RSA 两种类型的 SSH 秘钥,本例我们将创建一个RSA类型的SSH密钥对。如下图,在主机A的终端中输入生成秘钥对的命令:ssh-keygen -t rsa  (执行此命令会有一系列的交互提示,一路回车即可。)

20150314001501

提示:上面演示的是为root用户创建SSH密钥对,通过SSH访问FreeNAS主机默认就是以root用户身份登录的,如果你希望给系统中其他用户创建SSH秘钥对,应该使用 su – 命令先将终端身份切换到该用户,然后在执行生成秘钥对的命令。例如,要为用户 jack 创建SSH秘钥对,则应该先执行 su – jack,然后在执行 ssh-keygen -t rsa

SSH 密钥对生成以后,我们查看并复制生成的公钥,使用命令 more ~/.ssh/id_rsa.pub 。复制显示的秘钥。

20150314002529

注意喽,现在切换到服务端(主机B)的WebGUI,依次点击 账户→所有用户→root,编辑root用户,如下图,将复制的秘钥粘贴到 SSH Public Key 这一项的文本框中(如果秘钥最后有空格或换行,尽量删掉),保存。

20150314003014

返回客户端(主机A)的SSH终端界面,将服务端(主机B)的主机秘钥复制到客户端。使用命令:ssh-keyscan -t rsa 192.168.1.104 >> ~/.ssh/known_hosts

20150314004252

提示:如果客户端是Linux操作系统,则应该使用:cat ~/.ssh/id_rsa.pub | ssh user@192.168.1.104 ‘cat >> .ssh/authorized_keys’  命令。

现在,可以在客户端(主机A)创建Rsync任务了,和使用“模块”模式创建同步任务类似,主要设置以下几项:

  • 路径:选择主机A上的数据集 storA;
  • 用户:root
  • 远程主机:即服务端IP地址;
  • Rsync mode:选择“使用 SSH 的 Rsync”;
  • 远程 SSH 端口:22 默认不要修改;
  • 远程路径:输入服务端数据集 storB 的绝对路径,参考下图;
  • 方向:推送;
  • 时间相关:根据需求选择,本例设置为每3分钟同步一次;
  • 保留权限:选中(为了保证同步的文件权限不会被root用户权限覆盖);

20150314005837

Rsync任务创建完毕,如果你想立即执行同步。可以在客户端的Rsync任务列表中点选创建的同步任务,点击下方“立即运行”按钮,系统会立即执行一次同步任务。同步的效果与“模块”模式完全相同,因此不再重复演示。

20150314010507

结语

至此,FreeNAS Rsync同步方面的内容就全部介绍完了,可以看到,采用“模块”模式在两台FreeNAS主机之间同步数据是最方便的。虽然没有展开介绍SSH同步模式,但是相信大家已经看到了,SSH同步模式更适合一台FreeNAS与其他类型系统之间进行数据同步。可以说同步模式没有最好,只有最适合,至于如何应用到实际当中,就看你的了!

本文为GetNAS.com原创,版权归上海炬树信息科技有限公司所有,未经书面授权禁止转载。

授权转载请注明来源:https://www.getnas.com/2015/03/250.html

分享按钮