読者です 読者をやめる 読者になる 読者になる

NASの引っ越しをrsyncでやってみる

長らくPCのお世話をしている地元の工事会社にNASを導入したのはかれこれ8年前。

当時中学2年だった私は何万円もの機器たちがカード一枚でスパスパ購入されていくのを見て緊張したことをよく覚えている。購入を指示したのは自分だったとはいえど、これから自らの手でいち企業のPC環境を構築するのだとドキドキしたものだ。慎重な運用もあってか、念のためとRAID1にした2台のHDDは今の今まで壊れることなく動いてくれた。

さて、そんな思い出深いNASもそろそろ見切りをつける頃になってきた。転送速度がだんだん下がってきたのである。同じハードウェアながら少しずつ転送速度が下がってくるのだからコンピュータは不思議だ。やはりデジタル回路と言えども、マクロに見ればアナログの世界に生きていることが伝わってくる。

で、何をしたの

思い出ポエムは置いておいて…

今回は古い Buffalo LS-WHGL/R1 からASUSTOR AS1002T への移行をrsyncで行った。以下にいきさつと手順を書く。

rsyncに至った経緯

LS-WHGL/R1はセキュリティホールを突くことでrootでSSHできるようになる。最初はこれでUSB接続のHDDにrsyncするとかEthernet経由でscpするとかしていたのだが、スピードが遅すぎて現実的ではなかった。

簡潔に言うと、LS-WHGL/R1はCPUが遅いようだ。正確なスピードは測り忘れてしまったのだが、転送先・転送方法ごとのおおまかなスピードは以下の通りだった。転送元はすべてLS-WHGL/R1の内部HDDである。

  • USB-HDD (rsync) = 1[MB/s]
  • USB-HDD (rsync -z) = 0.2[MB/s]
  • AS1002T (rsync) = 5〜10[MB/s]
  • AS1002T (scp) = 1[MB/s]
  • AS1002T (scp -c arcfour) = 3[MB/s]

不思議なことに、USB接続のHDDにrsyncするよりもEthernet経由でNASにrsyncするほうがよっぽど速い。確証はないがバスが遅いのだろうか。zlibもスループットを上げるどころか大きく下げたことから、単にCPUの計算能力が低いことも拍車をかけているようだ。もちろんEthernetは1000BASE-TXでリンクしている。

内部HDDを取り出してコピーすることも考えたが、業務のデータを扱っているためリスクは取らずrsyncで辛抱強く待つことにした。

手順

AS1002TはRAIDアレイなど初期設定を終えているものとする。

1. rsyncのパスを確認する

LS-WHGL/R1はNAS間バックアップ機能としてrsyncdが動いている。

f:id:puhitaku:20170103012008p:plain

これはLS-WHGL/R1の設定画面で、右上にある「バックアップ」にチェックを入れると該当のディレクトリがrsyncdに登録され外から見えるようになる。

AS1002Tでrsyncによるコピーを行うには「バックアップと復旧」からバックアップジョブを設定するか、SSH接続して自分でrsyncすることで行える。今回は手でrsyncしたが、rsyncの正確なディレクトリパスがよくわからなかったため一部Web UIを使った。

f:id:puhitaku:20170103012344p:plain

rsyncdへの接続が確立するとどのディレクトリをコピーするか聞かれる。この array で始まるパスは後で使うため控えておこう。もしディレクトリ名がマルチバイト文字だった場合は%でエスケープされるがこれもエスケープされたまま控えておく。

2. AS1002TでSSHを使えるようにする

Web UIの「サービス」→「端末」でONにできる。ログインはadminとrootどちらでもできる。

f:id:puhitaku:20170103013623p:plain

3. (任意) tmuxを使えるようにする

コピーの途中でセッションが切れるとアレなので、パッケージマネージャ経由でtmuxを導入した。Web UIの「App Central」でentware-ngと検索しインストールすれば、OpenWrtを彷彿とさせる opkg が利用可能になる。

あとはSSHで opkg update からの opkg install tmux と実行するだけであっという間にtmuxが入る。ここで 「/opt の空きが0kbで入らない」旨のエラーに遭遇するかもしれないが、 opkg install --force-space tmux とすると容量チェックを飛ばして入れることができる。原因は調査しておらず不明だが、普通に入るので良しとしよう。

4. rsyncする

AS1002Tで共有設定されたディレクトリは /volume1 以下に位置しているはずなので、その中に入りrsyncを実行する。 rsyncd接続時のパスワードはLS-WHGL/R1のWeb UIにログインする時と同じものだ。先程メモしたディレクトリパスは array1_hogehoge の部分に該当する。

cd /volume1/hogehoge
rsync -av --progress --exclude 'trashbox' rsync://admin@ip.address.of.nas/array1_hogehoge/* ./

--progress--exclude 'trashbox' はそれぞれ途中経過表示オプションとごみ箱フォルダを避けるオプションであり、両方付けることをおすすめする。

5. 待つ!!!

あとは辛抱強くrsyncの完了を待つのみ。