RTRRでQNAP NAS間同期を行う。

# はじめに
先日、自宅で使用しているNASのHDDが故障してしまいました。

RAID1で組んでいたのでデータの損失は防げましたが、1本だけで運用するのは心もとないのと、以前からDockerコンテナを色々と動かしたいと思っていたこともあり、新しいNASも一緒に購入したため、古いQNAPのNASから新しいQNAPのNASにデータ移行した手順を残しておきます。

- 【次】[使えなくなったHDDを認識させてフォーマットする。](https://qiita.com/sakai00kou/items/4cf12aa1253a529b9116)

# 今回購入したNAS
元々`QNAP`の`TS-231`というNASを運用しており、`Docker`も実行できる`Container Station`が利用できたため、`Gogs`という軽量Gitサーバのみ`Docker`で動作させていましたが、`TS-231`はARM系の32ビットCPUであるため、`Docker`を実行する際の選択肢がかなり少なく、NASのメモリも1GBしか積んでいないのであくまでもおまけ的な機能でした。

NASは常時起動させているため、せっかく常時起動するのであれば、もう少し重い`Docker`を動かしたり、`Docker`でいくつかサービスを起動させたいと思い、今回はCPU4コア（Intel）、メモリ8GBの`TS-264`を選択しました。

# 今回の構成と作業の流れ
今回、古いNASも新しいNASもLANポートが２つあるので、以下のようにポート１をスイッチングハブに接続し、ポート２同士を直接繋いで少しでも遅延が少ない構成とします。

```plantuml
@startuml
top to bottom direction
title ネットワーク構成

database "QNAP TS-231\n旧NAS" as old_nas #LightSkyBlue;line:DodgerBlue;line.bold;text:Blue {
  rectangle Port2 as old_nas_port2 #DimGrey;line:Black;line.bold;text:White
  rectangle Port1 as old_nas_port1 #DimGrey;line:Black;line.bold;text:White
}

database "QNAP TS-264\n新NAS" as new_nas #LightSkyBlue;line:DodgerBlue;line.bold;text:Blue {
  rectangle Port2 as new_nas_port2 #DimGrey;line:Black;line.bold;text:White
  rectangle Port1 as new_nas_port1 #DimGrey;line:Black;line.bold;text:White
}

node "Switch" as switch #LightGreen;line:LightSeaGreen;line.bold;text:DarkGreen {
  rectangle Port1 as switch_port1 #DimGrey;line:Black;line.bold;text:White
  rectangle Port2 as switch_port2 #DimGrey;line:Black;line.bold;text:White
}

old_nas_port2-[hidden]d-old_nas_port1
new_nas_port2-[hidden]d-new_nas_port1
old_nas_port2-[#Blue,plain,thickness=16]r-new_nas_port2

old_nas_port1-[#Blue,plain,thickness=16]d-switch_port1
new_nas_port1-[#Blue,plain,thickness=16]d-switch_port2

@enduml
```

また、以下より旧NASから新NASへ同期を行うための設定を行っていきます。

- [新NASの初期設定](#新nasの初期設定)
- [旧NASの事前設定](#旧nasの事前設定)
- [ネットワークの設定](#ネットワークの設定)
- [新NASのRTRRの有効化](#新nasのrtrrの有効化)
- [旧NASからのデータ同期](#旧nasからのデータ同期)

## 新NASの初期設定
旧NASのデータを移行する方法としてはいくつかあり、互換性に問題がなければ新NASに旧NASのHDDを１本と新NASのHDDを１本繋げて旧HDDから新HDDに対してRAIDのリビルドを行うのが、おそらく一番速いかと思いますが、その場合、新旧HDDと新HDD同士で計２回リビルドしないとならないのと、古いデータには不要なデータもあることから整理しながら同期したいので、今回は`QNAP`独自のプロトコルとなる`RTRR`でデータ同期を行おうと思います。

`RTRR`は`QNAP`のバックアップアプリケーションの１つである`HBS3 HybridBackupSync`（以降`HBS3`）を使うことで利用できるので、初期設定と合わせてインストールを行います。

なお、`QNAP`で使用できるアプリケーションは管理画面の「**App Center**」からインストールできるため、そちらからインストールを行います。

- ユーザ設定
- IPアドレス設定
- ボリューム設定
- コピー先のディレクトリ作成
- HBS3 HybridBackupSyncインストール

## 旧NASの事前設定
`RTRR`による同期を行うためには、旧NAS側にもインストールする必要があるため、旧NASにも同様の手順でインストールを行います。

## ネットワークの設定
新・旧どちらのNASもジャンボフレームに対応しているため、直結したポート２に対してどちらも`MTU9000`として一度に転送できるデータを増やします。

|設定|新NAS|旧NAS|
|:--|:--|:--|
|IPアドレス|10.1.0.1/24|10.1.0.2/24|
|MTU|9000|9000|

## 新NASのRTRRの有効化
新しいNASの`HBS3`を起動し、「**RTRRサーバーを有効にする**」よりRTRRサーバを有効にしておきます。

![Monosnap_20230728_074445.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/569912/7e3811c3-f68f-547d-d4aa-891887034194.png)

## 旧NASからのデータ同期
古いNASの`HBS3`を起動し、「**同期**」から「**一方向同期ジョブ**」を選択します。

![Monosnap_20230728_063802.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/569912/f61e874f-1652-5793-2eab-581efcd657d2.png)

今回は新しいNASに同期を行うため「**リモートNAS**」を選択。

![Monosnap_20230728_063858.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/569912/ba566154-b656-18b7-52c3-aee962e7ed9d.png)

古いNASから見て転送先となる新しいNASのIPアドレスとユーザ名、パスワードを入力し、一方向同期ジョブの作成を行います。

また、「**スピードテスト**」を選択すると、どの程度の速度が出るかが表示されるため、完了までの目安として確認しておくと良いでしょう。

![Monosnap_20230728_074916.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/569912/d33cbd36-0ad1-e638-a3ee-5682f1b4d668.png)

次に同期するディレクトリを指定する必要があるため、同期元となる旧NASのディレクトリと同期先となる新NASのディレクトリを指定します。

受け口となる新NAS側のディレクトリは予め作成しておく必要があるため、未作成の場合は「**コントロールパネル**」→「**共有フォルダー**」の「**作成**」から「**共有フォルダー**」を選択し、ディレクトリを作成しておきます。

![Monosnap_20230730_144254.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/569912/90d20680-2cbe-b1c8-e046-4540b5f172c3.png)

同期ディレクトリの指定後、ジョブスケジュールの設定を行いますが、今回はスケジュール化は行わず、一回だけの同期となるため、「**スケジュールなし**」と「**今すぐ同期**」を選択し、「**次へ**」に進みます。

![Monosnap_20230730_145104.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/569912/fcd9a6a7-efd7-a0fe-408b-b52332311b4e.png)

ルール設定は方法、ポリシー、オプション、ネットワークから色々と設定できるので、ジョブに合わせて任意に設定します。

![Monosnap_20230730_145141.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/569912/4936dade-fa23-1796-b922-063ca1f4bb79.png)

最後に要約を確認して「**作成**」を選択すれば旧NASから新NASへの一方向同期ジョブが実行されます。

# おわりに
正確な時間は計れていませんが、おそらく10時間程度で同期が完了していたかと思われます。

NAS間を直接接続＆ジャンボフレーム設定を行ったからか、スピードテストでも116MB/s程度出ていたため、旧NASのNIC速度が1Gbpsだったことを考えるとかなりの伝送効率で転送できたようです。

`HBS3`も直感的に操作でき、設定も簡単なので使いやすかったです。