Synology DiskStationのSSHで公開鍵認証にハマる


 ちょっと更新しにくい状況なんだけど、これは書いとこうと思ったんで。
 つってももう検索もヒットすんのか怪しいけどな。まいっか。俺用だ俺用。

 知ってる人が状況を見たら「パーミッションと所有者の問題じゃね?」だし、まあ実際そうなんだけど。分かってて何でハマったの俺?

 まあいいや。本題。

 SynologyのNASって本当に俺のやりたいことにマッチしてて、スムーズに細かいとこまで手が届くんだけど、SSHだけ公開鍵認証できない。
 パーミッションでハマるのは知ってるのに、悪戦苦闘した挙げ句ようやく動きましたわ。

 で、実際動いた今がどんな環境かというと。

  • ~hoge/755
  • ~hoge/.ssh/755
  • ~hoge/.ssh/authorized_keys700
  • 以上のディレクトリとファイルの所有者はhoge:users

 もっと厳しいパーミッションならそれでもおけー。

 多分一番ハマる原因となりそうなのが拡張属性。~hoge/のパーミッションに拡張属性が付いてたら剥がさないと駄目かもしんない。分からんけど。ls -alすると+が付く奴。ls -aleでドバドバ出る奴。chmod755なり711なりに強制上書きで済ました。GUIとの整合性とか大丈夫なのかは知らない。
 実際、sshd側がどう判定してるのかも分からんし、今のsshdのコードだとたまたま動いてるだけかもしれない。仕様上は.ssh/700じゃないと駄目とか見たような…。authorized_keys600とか言ってなかったかな。分からん。

 まあ、分からんばっか言ってるクソ記事ですが。ハマってた時の俺自身が見たら助かるような内容にはしときました。


openmediavaultのソフトウェア更新通知が来ない問題を直す


 openmediavault(以下OMV)の通知機能で、ソフトウェアアップデートの通知だけが届かない問題が出てたんだけど、直ったよ、という話。

 結論から言うと、/etc/cron-apt/action.d/3-downloadが存在していない環境ならそれが原因なので、

# cp /usr/share/doc/cron-apt/examples/3-download /etc/cron-apt/action.d/

で解決。
 バグの詳細は、Update notifications not sent – Issue #905 – openmediavault/openmediavaultにあるけど、flashmemory pluginがcron-aptを何故か壊してたらしい。たぶん修正済みだけど、既に壊れてる人は自力で直さないと駄目っぽい?

 問題に気付いたのは、SDカード無しRaspberry Piからソフトウェアアップデート通知が届くのに、SDカードから普通にブートしてるRPiからは届いてなかった為。
 SDカード無しの方は、OMVのインストールをflashmemory plugin抜きでやる為に、installScript-fを付けて走らせてたんだけど、それが幸運にもバグ回避に繋がっていたという。
 比較してみたけど、確かにflashmemory pluginが入ってる方は3-downloadだけ消えてた。

 つーことで、コピーしたら直った。めでたし。


Raspberry Pi 4 Model Bにopenmediavault入れてNASにした


 やー、久しぶりの更新だ。

 ここは公開の覚書として運用してたけど、最近はTwitterで済ませてたからなー。
 ただ、Twitterは非公開にしてしまったので、やはり公開の覚書はこっちでやるか、と。

 で、Raspberry Pi 4 Model B(以下RPi4)にopenmediavault 5(以下OMV)を入れてNASにする話、である。

 NASは色々なとこに導入支援をしてたから、15台くらい触った気がする。
 最初はBuffalo TeraStationで、次にBuffalo LinkStationがしばらく続いて、QNAP TurboNASが少し続いて、Synology DiskStationが今はお勧めかなーと思ってるけど。

 この度、二台をリプレースすることになったのだが、一台は自宅、一台は事務所。どちらも俺の管理で、NAS半分、Linux鯖半分、な運用形態。
 Synologyでもそれなりに何とかなりはするのだが、安い奴は本当に非力で、Samba以外に仕事させると死にそうにフラッフラになるし、色々仕込む時も注意しないと再起動やファームウェア更新の時に真人間に更生しそうな気がするし(QNAPの時はそうだった)、いい加減もうMicroATXか何かでPC組むか、とまで思っていたのだ。
 で、Linux Boxとかベアボーンとかしばらく探してから、ようやくRPiを思い出した訳ですよ。スペック見たら、最新のRPi4はNASにちょうどいい具合。英国面万歳。

 よって、自宅から試験的にRPi4を導入することにした。
 メモリ2GB版で十分だろう、と思ったのでそうする。重複排除FSとか使いたくなると大量にメモリ欲しくなるケースもありそうだけど。
 なお、後日「やっぱDesktop環境で色々やりたくなってきたから8GBにしといても良かったかもなー」と思ったので、色々やりたくなりそう系の人は8GBがいいかも。

 ケースは簡単に手に入ってそこそこ冷えるらしいSliverStoneのSST-PI02。
 HDDは、Western DigitalのWD60EZAZ-RT。6TBのSMR。本当にSMRについては迷ったが、WDがRedで黙ってSMRを採用(そして炎上)したくらいだから、実はそれほど致命的でもないんじゃね、と。
 HDDケースは、玄人志向のGW3.5AM-SU3P。ドスパラで送料無料1980円の圧倒的安さ。でも、かなりいい作り。
 充電器は、OwltechのAO-ACTC2PD。PD18Wの二系統同時出力で1980円。RPi4も行けた。ちなみにPixel 4aの充電器でも行けた。
 充電ケーブルは、MOTTERUのairy510。Owltechの新ブランドで、凄く微妙な名前から普通の微妙な名前に変わった。製品のデザインは良くなったかな。airy510は同社の超タフケーブルより細くてフニャッとしてるが、屈曲試験では昔の超タフよりは強い。繋ぎっぱなしなら余裕すぎ。
 SDカードは適当に風見鶏辺りで買ったSanDiskの余ってる奴。

 これで一式揃うんだから安い。「好きなパーツをバラバラに揃えてケーブルで繋いだ」感も凄くいい。
 Synologyの安い1ベイよりは高いが、スペックは段違いだし、増やしたい時にどんどんHDD増やせて、壊れたとこだけいつでも入れ替え可能で、導入に凝って色々調べながらドタバタして。
 メリットもデメリットも大昔の自作PCみたいだな。

 なお、MicroHDMIとか無いんで完全ヘッドレス運用。ブート失敗するとなんも分からん。起動画面の虹色?とか見たこと無いぜ。モニター付きケースとか数千円らしいけどな。まーいいや。
 ダイソーでMicroHDMI変換アダプターが110円らしいから、本気で必要なら余裕だし。

 ということで、導入開始。

 まずは普通の方法で。
 Raspberry Pi ImagerでLite版をSDカードに焼いて、OMV5のWikiの手順を同等になぞる。
 で、大体問題無く動いた。

 ファイルシステムはext4かbtrfsか迷ったけど、QNAPの意見NETGEARの意見が面白い。
 QNAPは公式フォーラム英語版で運営にストレス溜まったし、Synologyはbtrfs導入を拡大してるし、NETGEARの意見の最後の方の、

両者を使用している環境で強制的な電源遮断を1000回以上行いましたが、Btrfsは一度も問題が発生しませんでした。それに対してEXT4は、inode(アイノード。ファイルシステム上のファイルやディレクトリなどの情報を保存しているデータ)の破損が32,000も発生し、最終的にはディスクフル状態となってしまいました。

というのが面白いので、btrfsにした。

 試験運用は二週間ほぼ安定してて、導入当初の二日で数百万ファイルを転送して三回くらいSMBがWindows側でERROR_UNEXP_NET_ERRを出したけど、わざとDHCP任せで動かす実験をしてたせいかも。
 一週間くらい運用してから素直に固定アドレスにしたけど、それ以前からエラーは出なくなってたし、よく分からん。
 なお、rsyncやrobocopyもどきが欲しくてBunBackupを使っていたが、この謎エラーが怖いので、リトライ処理のあるオープンソースのFreeFileSyncに乗り換えた。

 HDDがSMRな件は、影響の出そうな局面が作れなかった。NAS運用だとそもそも遅いんだ。最初に2TBくらい一気に書き込んだけど、ソースがNASのrsyncじゃ何事も無く。
 他にSMRで起きそうな実害は「RAID1がトラブルを起こすことがあるらしい」しか知らないけど、「動作速度が揃わない程度で障害の起きる冗長構成」とか笑う。冗長化は何の為にあるのか。

 まあ、RPi一台目は安定運用出来そうなので、事務所にも二台目を入れることに。
 事務所のデータは2TBでも余るので、HDDはWD40EZRZ-RT2。4TBのCMR。RPi4はメモリ4GBに。

 そこで思ったが、SDカードの寿命はどうなのか。
 調べてみると「数ヶ月で死にました」とか良くあった雰囲気。でもそれ、/var/logのせいだけじゃないよな…。利用形態が分からんなあ。
 また、OMV5のインストールスクリプトは、openmediavault-flashmemoryって奴を入れてくれて、folder2ramでログをRAMに逃がしてくれるから大幅な長寿命化が期待出来るらしい。なお、入れたくないなら-fを付ければ入れないっぽい。
 でも、そもそもSDカード無しで運用出来るんじゃねーの、と思ったので、長期放置運用になりそうな二台目はそっちを試すことに。

 で、色々試した。

 結論としては、普通のGPTドライブに全部入れてSDカード無し、の運用は出来た。「RPi USBブート」とか検索すれば日本語で詳しく解説されてるから、情報を探してる方はそちらで。
 ただ、正直あんまりやりたくない。Raspberry Pi Imagerで書くとMBRになるし、ならばGPTで切ってから書き込むのか、MBRで書き込んでからGPTに変換するのか。最後にcmdline.txtとfstab弄って終わり。さほどの手間でもないけどさ。何かOMVの挙動が微妙に不審になるんだよな。ファイルシステム作成がWebから出来なかったり。

 俺的に理想っぽくて試したいのは、bootがSDカード、rootがGPTパーティション、かな…。やりたいんすけどね。今から移行するとか面倒で。
 手軽でほとんど問題無いのは、一台目の素直な運用だと思う。SDカードにbootとroot。
 SDカードの容量も大きめにしておけば、寿命の問題も実質無かろう。書き込み量が変わらんなら、容量と書き込み寿命は比例するのだから。folder2ramでも併用すればさらに安心だ。

 まー、総じて、いい環境です。RPi4のNAS。
 ゴリゴリ弄るの大好きマン以外はSynologyでいいんじゃね、とも思うけど。


SynologyとQNAPとバなんとかローなNASの話


 SynologyのNASも触ってみたので、今までそこそこ触ってきたNASの話をてきとーに書いてみる。

 最初はBuffaloを良く使ってたなー。
 触ったのは確か十数台くらい。まー、何となく良く壊れる印象が強くなってきたし(主観)、安いですよーって感じの振動音もするし(実際安いんだからいいという考えも)、ハックしないとシェル使えないし(一般的にはどうでもいいこと)、かといってWebUIで出来ることも少ないし(一般的にはどうでもいいこと)、中身のHDD選べないし何か良く壊れるし(これが正直きつい)、って感じで、ちょっと前からQNAPに移行してた。
 ソフト面はハックすれば何とでもなるっちゃなるんだけど、そこまで手間掛けるなら他社の方が普通にいいと思う。振動や故障率はハックじゃ低下しないし。
 いやまー、壊れた奴をバラして適当なHDD入れてハックするのも一回だけなら楽しかったけど。数年でまた壊れたけどな。HDDじゃなくて本体(?)の方が。

 次に俺的な定番として使ってたのがQNAP TurboNAS。確か三台。
 全く問題無く使えると思うし、クラウド系ストレージとの連携機能はSynologyより出来がはっきり良いので、一台はあってもいいかも。具体的にはGoogle Cloud Storage NearlineとかAmazon Glacierとかとの併用の具合がいい。まーでも、クラウド系は課金アラートとか付けないと怖いけど。間違ってTB単位でデータ出し入れしたりした日には、八桁価格の請求とか来かねないからな…。
 QNAPのはシェルも当たり前のように使えるし、WebUIだけでもちょっとしたSOHO向け業務くらいなら困らないくらい色々出来るけど、Linux boxの香りを期待し過ぎると組み込みの香りの強さにやられることも。公式が「あくまでもNASだからそういうの求めないで」って言っちゃってるし。今もそうなのかは知らんが。

 で、Synology DiskStationがQNAPより人気らしいので、一台入れてみた。いや、趣味とかじゃなくて、必要で仕方なく。
 HDDのマウントに防振ゴムが仕込まれてて好感度上昇。実際、高周波のノイズはほとんど分からない。低周波はかなり残ってるから、静かかと言われると悩むが、共振が減れば故障も減るのかもなーとは思う。
 ソフト面はQNAPと似たような感じだけど、WebUIのタスクスケジューラーに多分bashのシェルスクリプトが直接書けるんで、他社NASにrsyncで無理矢理連携したい時なんかに「うわーもうこれはスクリプト書くしかねーなー、でもファーム更新で吹っ飛ばないようにしつつ自動起動させるには、えーとー」みたいなことにならずに済む。で、タスクもcron的なのだけでなく、ブート時に起動とか色々なトリガーが使える。
 QNAPと比べて弱いと感じたのは、日本語の翻訳。ちょっと一般的でない設定になると、地味に意味分からん表記がちょくちょく出てくる。たまに英語設定に変えたくなるレベル。
 あと、普通のバックアップの設定の自由度も低いなー。ソースが単一フォルダだったり、転送先のパスに制限があったり。他社クラウド連携も正直使いづらいんで使ってない。

 んで、結論としては、まーBuffaloは無しとしても、どれが個人的なお勧めかっつーと。
 うーん。クラウドのニアラインストレージとか使わないなら、Synologyかな。業務用ならメインに2ベイを一台でRAID1(SHRでも別にいいし)、バックアップに1ベイを二台、とかやれば低予算でもそれなりに安心感はありそう。不良セクタが一つ出ただけでもメール通知させる、って設定があるんで、メインはそんな感じにしとけばさらに安心感が。
 それでもメインが死んだら、バックアップをそのままメインに昇格させればとりあえず業務は出来る、みたいな感じで。
 虎の子のデータだけはクラウドに暗号化して逃がす、なんてのもいいし。でもそれやるならQNAPの方が使い勝手は若干良いけど。


フォルダ作成や名前の変更がクソ遅い問題に引っ掛かった


 Windows10で起きたけど、多分これWindows7とかでも起きる気がする。

 いつ頃からか忘れたが、Explorerでフォルダ作って名前入力してEnter押したとこで何十秒か固まる、という現象が多発していたのだ。リネームなどでも毎回固まるし。極端に重い、って感じの固まり方。
 んで、Explorerに何か変なのが取り憑いたんかなー、とか思ってたんだけど、コマンドプロンプトからrenしても全く同じ固まり方なんで、FSの方がヤバかったりしないかな、とさすがに不安になって、似た症状の報告が無いか真面目に探してみた。

 結論から言えば、多分Windows Searchのインデックスが巨大になると起きる、っぽい。言い換えれば、特定フォルダ以下にファイルが大量にあると起きる、と。
 コントロールパネルの「インデックスのオプション」を開いたら、インデックスが百万個以上作られてたんで、問題が起きてるフォルダを「含まれる場所」の一覧から外してみて、念の為「詳細設定→再構築」をやってみた。2000個以下までインデックスが減ったので、フォルダ操作をしてみる。軽い。めでたい。

 まあ、バカみたいに大量のファイルを生成するお仕事とかの人じゃなきゃ引っ掛からないのかもしれないけどさ。
 ファイルが大量にありすぎてバックアップソフトが固まったこともあったし、まー色々起きるもんだなーと。でもOS標準機能はちゃんとスケールして欲しいです正直。

追記(2020/1/5):
 ファイルの移動や削除などが99%で終わらなくなる奴は、適当にエクスプローラー開いて、表示→オプション→プライバシー/エクスプローラーの履歴を消去する/消去、で直った。何だかなー。