そろそろサーバとして使っていたMac mini (Late 2014)がOSのアップデート対象から外れそうなのと、単に共有フォルダとして使っているだけなのにアップデートとかの保守作業とmacOSのバグと買い替えるコスパの悪さにつらくなってSynology DS220jに買い替えてしまった。
以前懸念していたHFS+じゃない点は別に問題ないみたいだし、NASにもアプリケーションがあってDLNAとかPythonとかできるらしいことも背中を押した。
とりあえずセットアップした結果として、転送速度が30-40 MB/s (Mac mini + USB HDD)から80-100 MB/s(DS220j、暗号化)に大幅に上がったから大満足した。
買ったもの
スタンダードにDS220jにした。DS222(3)jが出そうで心配だったけど。
Btrfsがやばそうなので、使わないなら上位機種にする意味なくね?と思ったことも理由。
QNAPも検討した。ハードウェアとしてはメモリが多いなどQNAPの方が優れていると思う。ソフトウェアでの優位性と、外部アクセスのセキュリティに関して某所での評判の悪さからSynologyにした。
互換性リストに載ってないけど8 TBのWD Blueを1基にした。
もちろんWD RedやSeagate IronWolfも検討したが、どうせNAS自体もバックアップするなら+1万円する意味なくね?と思ったからである。SMRのSeagate BarraCudaではなくCMRのこちらにした。
結構カタカタうるさい。
2基買わなかったのは単に初期費用の問題だが、どうせバックアップいるんだから個人でRAID組む意味あるのかな?と買ってから思い始めた。RAIDだと2基以上買わないと容量増えないから。将来は、チクタクと大容量に換装していくかRAID組まないで2ストレージプールにするかかな?
ntt-xで合わせて4万弱。
セットアップ
組み立ては簡単だった。
仮にIPアドレスわからなくてもfind.synology.comにアクセスするだけでLAN内のDiskStationを見つけてくれるから便利。
Synologyアカウント(管理者アカウントとは別)とQuickConnect IDは作っていないが実用上、特に問題ない。
セットアップはすぐに終わるがドライブチェックにかなり時間かかった。
Time Machineの設定
データの移行は後回しにして、まずはTime Machineの設定を行った。
Time Machineバックアップ用の共有フォルダを作成する(ごみ箱、暗号化なし)。
Time Machine用のユーザを作成する。たぶん作成しなくてもいいが、Time Machineフォルダの容量制限に必要となる。今までも4 TBだったので、半分の4000*(1000/1024)^4 = 3637 GBに設定した。データ壊れていたら怖いので今回は引き継ぎはしなかった。十分時間が経つまで以前のHDDは保存しておこうと思う。
SMBを有効にする。もはやAFPは必要ない。
「SMB からの Bonjour Time Machine ブロードキャストを有効化する」とかも設定。
あとはMac側からバックアップ先に指定する。なんの問題もなく認識された。暗号化はここで設定。(以前のバックアップ先も含め)両方のバックアップを使用するか訊かれて迷ったが両方使うことにした。Apple サポートを見ると“交互”にバックアップが行われるらしい。交互の意味が判然としなかった。片方のディスクが接続されていなかったらバックアップが止まってしまうのだろうか。結果としては、以前のバックアップディスクは接続していないがバックアップはちゃんと継続して行われている。ただ、2時間毎に行われるようになったようだ。そういう意味での交互なのである。
その他の設定
順番が前後したが、以下の設定をした(うろ覚え)。
- ルーター側でIP アドレスの固定
- セキュリティセンターで定期スキャンの設定
- ntpの設定
- タイムゾーンの設定
- Wake on LANの有効化
- LED輝度を点灯する中で最低に
- メール通知の設定
メール通知の設定は詰まってしまった。なぜか何度やってもGmailにログインできなかった。手動でドコモメールのSMTPサーバを設定した。
保存データの移行
買ってから気づいたのだが、フォルダを暗号化すると日本語のファイル名は47文字制限があるらしい。これはきつい。
- 非暗号化した共有フォルダ内のファイル/フォルダ名は最大 255 文字(ラテン系言語以外は最大 80 文字)とし、ファイルパスは最大 4,096 文字としてください。
- 暗号化した共有フォルダ内のファイル/フォルダ名は最大 143 文字(ラテン系言語以外は最大 47 文字)とし、ファイルパスは最大2,048 文字としてください。
暗号化にeCryptfsというものを使っており、それの仕様が最大143バイト。日本語はUTF-8で大抵3バイトなので47文字が限界らしい。非暗号化時の最大80文字はたぶん間違い。255/3 = 85文字までいける。
ところで、MacなのでNFC or NFD(の変形)問題も調べていろいろ試してみたが深入りするのはやめた(後述)。
以上のことから日本語ファイル名は文字数というよりバイト数で考えた方がいい。さらに、eCryptfsのメンテナーによると余裕を持って最大140文字にした方がいいそうだ。
というわけで140バイトを超えるファイル名を列挙するコマンドで(APFS上の)手持ちのファイルを調べてみた。
% find . -exec basename {} \; | while read l; do c=$(echo -n "$l" | wc -c); [[ $c -gt 140 ]] && echo "$c" "$l"; done
幸い、141バイト以上のファイル名を持つファイルはそんなになかったため、手作業で直していった。といってもすべて手作業はキツいので、手抜きだがコマンドラインを書いた。
% old=loooooooong_filename; new=short_filename; echo "${old}" >"${new%.*}_orig.txt" && mv "${old}" "${new}"
上を実行すると、loooooooong_filenameをshort_filenameにリネームしつつ元のファイル名をshort_filename_orig.txtに保存してくれる。
念のため、パス長制限も調べてみた。(余裕を持って2000バイトまで。)
% find . | sed -E 's/^\.\///' | while read l; do c=$(echo -n "$l" | wc -c); [[ $c -gt 2000 ]] && echo "$c" "$l"; done
2001バイト以上のパス名は存在しなかった。
暗号化してもハードウェア暗号化エンジンのおかげか、まったくと言っていいほど速度低下を感じない。Blu-ray ISOもローカルと変わらなく再生できた。
UTF-8-MACの話
正しいことはよくわからないが。
まず、シェルにTabで補完させたりワイルドカードなどを展開させると常にNFCになるようだ。echo *
やls *
で見ると常にNFCで、ls
やfind
でないとNFDかどうか区別できないようだ。od -tc
にパイプすると判別しやすい。
DS220j上では実際、パピプペポバビブベボパピプペポバビブベボパピプペポバビブベボパピプペポバビブベボパピプペポバビab
(NFCで143バイト)という名前のファイルは保存でき、1文字でも足すと保存できないが、SMBでマウントしwc -c
では284 (= 6*47 + 2)バイトと表示される。(iconv -f utf-8-mac -t utf-8
をかませば143と表示される。)SSHで入ってwc -c
すると143バイトだったなのでMacからはそう見えるだけのようだ。
一方、APFS上ではどうか。APFSだと濁点、半濁点付きでも3バイトになったと聞いたが、NFCとUTF-8-MACは共存しうるようだ。mv
でリネームするとNFC、FinderでリネームするとNFDになった。(mv
でもコピペなどしてNFDを入力すればNFDファイル名は作れる。)
つまり、上で141バイト以上のファイル名を調べたが、それは濁点、半濁点付き文字を6バイトで数えているので実際よりも厳しいカウントになっていたのだ。
つづく
次回はNAS自体のバックアップ、SSH、HTTPSアクセスなどについて書くつもりだ(わかればUTF-8-MAC問題の続報も)。