HDDは壊れる
長年利用していたSynologyのHDDで障害が発生しはじめたのが数ヶ月前。RAID 5構成だし、一本入れ替えれば対応可能な大した問題じゃないだろうと解決を先送りしていたら複数のディスクで問題が発生。もしかしたらデータも一部アウトかもしれない。
HDD を入れ替えて修復、という方法も考えたが10年選手の古い Synology DS411 のため QNAP TS-233 を新規に立ててデータを QNAP に移行し、Synology はまた新しい用途で使い直すことにした。4ベイも不要なので2ベイモデルを準備。
目次
ハードウェア
- QNAP TS-233 (アフィリエイト Amazon.com)
- Seagate IronWolf 8TB NAS 3.5″ HDD x 2 (アフィリエイト Amazon.com)
データ移行準備と実行
データを移行するにはまずは QNAP の設定から開始。ストレージプールを作成し、Thick ボリュームを設定。その中に移行用の共有フォルダを準備。
SMBとAFPを有効にして最低限の環境準備完了。
MacのFinder上でファイルの移動処理
一番単純な方法でSynologyの共有フォルダとQNAPの共有フォルダを開き、データをMac上でコピー。一番わかりやすい処理。だけど、Mac経由での処理になるから転送速度がとても遅いし永遠に終わらない。
QNAPとSynology間で直接ファイルコピー処理ができないか?
QNAP に ssh 接続してターミナル処理
QNAP は ssh をサポートしているので、ssh で直接入り、そこでコマンドを実行すれば Synology 間で直接ファイルのコピーや同期ができることが判明。ssh 上で処理をすることで確実にスピードをあげられそうだ。
scpにてリモートファイルコピー
ssh で入った QNAP 上で scp を実行することができた。
接続先の Synology の ssh も有効にする。Control Panel > Terminal & SNMP から SSH サービスを有効にすることができる。
Synology 上に photo という共有フォルダがあり、そこに 2023 というディレクトリファイルがあるとする。この Synology のディレクトリを丸ごと QNAP に scp でコピーしたい場合は、SSH で入ったターミナル上で 2023 をコピーしたいディレクトリに cd した上で以下のコマンドを実行する。
scp -O -p -r Taka@diskstation.local:/var/services/photo/2023 .
Taka は実際に Synology に接続するためのユーザー名、diskstation.local の部分は多くの場合 IP アドレスを直接指定した方が良い。コピー先は現在のディレクトリなのでピリオド . を忘れないように。
また共有フォルダは /var/services の下に展開されるのでそれをパスにしたコピー元に指定する。
MacのFinderでファイルをコピーするよりもはるかに早く処理ができる。
注意点としては -O オプションを指定しないと以下のエラーが出るという点。このエラーにはまって最初 scp は使えないのかと思ってしまった。
subsystem request failed on channel 0
scp: Connection closed
ただ一点問題が。@eaDir という Synology 上に作成されるフォルダもコピーしてきてしまうため、scp をした後にそのフォルダを削除する必要がある。
rsyncにてディレクトリを同期
scp 以外にも rsync コマンドは QNAP 上で実行できることも確認。
Synology で rsync を有効にすることで rsync による同期も可能となる。
そして rsync の場合 –exclude オプションがあるので @eaDir フォルダを対象外にして同期することができる。
rsync -atP --exclude '*@eaDir' Taka@diskstation.local:/volume1/photo/2023 .
注意点は scp と違い、同期元のパスは /volume1 のようにボリューム指定となる点。/var/services で指定すると以下のエラーが出るので必ず Synology に割り当てられている /volumeN を指定すること。
receiving incremental file list
ERROR: module is write only
rsync error: syntax or usage error (code 1) at main.c(782) [sender=3.0.9]
rsync: connection unexpectedly closed (9 bytes received so far) [Receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(601) [Receiver=3.0.7]
まとめ
scp もしくは rsync による Synology リモートファイルのコピーもしくは同期方法が HDD 故障中の Synology からのリカバリーには向いてることがわかった。
まだまだファイルをリカバリーする必要があるので Synology の個別共有フォルダごとにファイルの移行を進めていきたい。
ファイルの紛失や破損が最低限であることを願うばかり。
参考: Synology 搭載 HDD の障害状況
参考までに HDD のエラー状況。Synology の Storage Manager 上にエラーが表示されていて Drive 1 が System Partition にエラー、Drive 3 はハードディスクの状態に障害発生との表示。
しかし、なぜ4ドライブすべて使わずに3つだけで構成してしまっているのか正直不明。自分で設定したんだけど、なんでこんな状態なのか正直思い出せない (笑)。
参考資料
- subsystem request failed on channel 0 scp: Connection closed [Stackoverflow]
- SCP and delete a files from source [Stack Exchange]
- Rsyncでローカルとリモートのディレクトリを同期する方法 [Digital Ocean]