1ベイのQNAPのディスク交換

我が家では1ベイのQNAP(TS-121)を 2TB HDD で使ってるんだけど空きがなくなってきたんで、4TB HDD に交換することにした。

ダメだったやつ

Linux PC に新旧両方の HDD を繋いで dd if=/dev/sdb of=/dev/sdc で丸ごとコピーすればいいかと思ってやってみた。関係ないけど dd コマンドに status=progress をつけると進捗がわかることを知った。

4時間くらいで dd が終わって、gparted でパーティションを拡張しようとしたがエラー…。

テキトーにググったところ、どうも MBR パーティションテーブルでは 2TB 以上のディスクを扱えなくて GPT に変更しないといけないらしい。 Linux では gdisk コマンドでディスクを開いて書き込むと GPT に変換できる。 その後 gparted でパーティションを拡張したら成功。

MBR から GPT に変換しないといけないとなったところで嫌な予感はしてたんだけど、QNAP に新HDD を挿してもエラーで起動しなかった。 まあ GPT 変換のせいじゃないかもしれないけど、とりあえずこの方法は諦めた。

まっとうな方法

QNAP TS-121 自体は仕様上 4TB HDD をサポートしていることはわかってるんで、普通に QNAP で HDD を初期化すればできるんだろうけど、イチから設定とかをやりなおすのは面倒だなー。

…と思ってたけど、QNAP で設定のバックアップと復元ができることを知った。

「コントロールパネル」→「バックアップ/復元」

f:id:tmtms:20210523120015p:plain

というわけでまずバックアップ。PC にバックアップファイル(NAS名_settings_YYYY-MM-DD.bin)を保存する。

QNAP の電源を落として、旧HDDを抜いて、QNAP を起動。

PC に Qfinder Pro をインストールして、QNAP を見つけてブラウザからセットアップ。

新HDD を挿してフォーマット。

フォーマットが終わったら「バックアップ/復元」で PC に保存しておいたバックアップファイルを指定して復元。

これで設定が戻ったので、あとはファイルをもとに戻せばいい。

元々 QNAP に USB で外付けHDD を繋いで自動でバックアップを取っていたので、それから戻した。 やらなかったけど 旧HDD を繋いで戻すこともできると思う。

admin@QNAPのIPアドレス に ssh でログイン。

cron の設定も戻っていたので、自動バックアップをにコメントアウト。 外付けHDDは /share/external/sdq1 で認識されてるんで、

rsync -au /share/external/sdq1/YYYY/MM/DD/{Multimedia,Public,homes} /share/HDA_DATA/ &

って感じで復元。これには何日か掛かった。どれくらい掛かったかはわからないけど、気がついたら終わってた。 rsync じゃなくて dd でパーティション内データコピーでやってもできたのかもしれないけど、まあいいや。

ちなみに、自動バックアップは crontab にこんな感じに設定して、YYYY/MM/DD のディレクトリに毎日保存している。 rsync の --link-dest を使ってるので、中身が変わってないファイルはハードリンクになるのでディスク容量は食わないはず。

50 23 * * * prev=$(cd /share/external/sdq1; ls -d [0-9][0-9][0-9][0-9]/[0-9][0-9]/[0-9][0-9] | tail -1) && today=$(date +%Y/%m/%d) && mkdir -p /share/external/sdq1/${today}_ && cd /share/HDA_DATA && rsync -a --exclude=@\* --exclude=.@__thumb/ --link-dest=../../../$prev/ Multimedia Public homes /share/external/sdq1/${today}_/ && mv /share/external/sdq1/${today}_ /share/external/sdq1/$today && mv /share/external/sdq1/${today}_ /share/external/sdq1/${today}

Entware (opkg コマンド) のインストール

QNAP 内で bash とか less とか使いたいんで、Entware-std を入れて opkg コマンドを使えるようにしていたのでそれも復元。

まずは QNAP Club リポジトリの追加…なんだけど、これもバックアップから復元されてたので特にやらなくてもよかった。 手順は Qnapclub Store にインストール方法が画像つきで載ってる。

問題はそこからで、QNAP CLub から Entware-std をインストールしようとしても失敗する。

イベント通知には、

[App Center] Failed to download Entware-std from https://www.qnapclub.eu/en/qpkg/model/download/471841/Entware_1.03std.qpkg.

というエラーが出てる。

よくわからなかったので、ssh でログインしてから、wget でダウンロードしようとすると、

# wget https://www.qnapclub.eu/en/qpkg/model/download/471841/Entware_1.03std.qpkg
--2021-05-22 19:23:01--  https://www.qnapclub.eu/en/qpkg/model/download/471841/Entware_1.03std.qpkg
Resolving www.qnapclub.eu... 37.187.75.121
Connecting to www.qnapclub.eu|37.187.75.121|:443... connected.
ERROR: cannot verify www.qnapclub.eu's certificate, issued by ‘/C=FR/ST=Paris/L=Paris/O=Gandi/CN=Gandi Standard SSL CA 2’:
  Unable to locally verify the issuer's authority.
To connect to www.qnapclub.eu insecurely, use `--no-check-certificate'.

というエラーが…。

どうも証明書の検証ができないっぽい。PC からは普通に Entware qpkg のダウンロードはできる。

TS-121 はサポートが終了してるんで、それで QNAP 内のCA証明書が古いせいで証明書の検証ができないのかもしれない。わからんけど。

しかたないので「App Center」から手動でインストール。 f:id:tmtms:20210523120037p:plain

これはうまくいった。

ssh で QNAP にログインして、

opkg install bash

とかでいろいろインストールできるようになった。

換装を完走した感想

やっぱり1ベイはめんどくさい。サポートも切れてるし、新しく2ベイの QNAP 買おうかな…。