PCの冷却

簡易水冷CPUクーラーの平均寿命は3年ほどらしい。その間はメンテナンスはほぼフリーだが、どうしても内部の冷却水が減っていって、最終的に冷却水不足で機能しなくなるようだ。しかもその構造上、冷却水の補充ができない。そのため、ほぼ使い捨てらしい。

空冷CPUクーラーは製品にもよるが、一番壊れるであろうファン自体は取り換え可能であり、ほかに経年劣化というとヒートパイプ内の冷媒が考えられるがこれが漏れる等はあまり聞かない。この感覚でいたから、CPUクーラーの寿命で全然冷えていないことに気づけていなかった。

現在のPC*1は5年ほど使っているのだが、例にもれずCPUクーラーは寿命を迎え、アイドル時でもパッケージ温度が60℃を下回らず、サーマルリミットに常時ぶち当たりつつ、シャットダウンだけは回避しているような状態になっていた。気づけたのはいくら重い処理を走らせても負荷が100%に行かないどころか、50%にも届かなくなっていたからである。購入当初からついているCPUクーラーは120mm角のラジエータを備えた簡易水冷であり、購入当初は十分な冷却性能を発揮しておりCPU負荷100%の状態で24時間以上放置にも耐えていた。清掃はしていたのでラジエータ能力が落ちているとは考えにくく、調べたら冒頭に書いたようなことが分かった。

とりあえず、代わりのCPUクーラーを用意しようとしたが、使用しているCPUがAMD Threadripperであるので選択肢はかなり狭まる。また、Threadripperに対応する空冷クーラーは軒並みでかくて、現状のケースに入らないかグラボと干渉する。水冷にしようとしても、前面に5インチベイが4つも並ぶような古めのケースのためラジエータの置き場は背面か天面しかない。現状背面となっているが、ここは120mm角専用であり、天面は120mm角のファンと140mm角のファンを並べるようにできているため120x240のラジエータなら搭載可能であった。240クラスの簡易水冷で値段も安く評判もそこそこだったのでCorsair iCUE H100i ELITE CAPELLIX*2を購入した。ケースに窓はないので光っても全く見えないのだが、このクラスだと大抵光るし、光らないタイプがあったとしても価格差はないというか、光るやつのほうが安いのはどういうわけなんだか。

つけて、それほど時間はたっていないが感想としては、冷却性のがそれほど上がった様には感じられないが、確実に以前のものよりうるさい。静音ファンに交換すべきだろうか。といっても、100%負荷まで当t辣できるようになったので必要最低限の冷却性は備えている。

当面はこれでしのぐが将来的にはラジエータを外に設置するために本格水冷に移行したい。外に設置するのであればケースサイズに縛られず420mmクラスもしくはそれ以上の大きさにできる。

CentOS Streamインストール

CentOSがポリシーを変更して、RHELのクローンではなくてRHELFedoraの中間になるそうなので、そろそろFedoraの更新を追いかけるのがつらくなってきたやつを入れ替えてみた。

とりあえず必要なものだけrsyncで別のマシンにバックアップ。

公式からインストールイメージを落としてきてインストール。
何も考えずネットインストール用のイメージを選択したんだが、失敗だったかもしれない。
インストールソースの設定で躓いた。
何故か選択肢にあるRedhatCDNは当然ながらRedhatとの契約が必要で使えない。
あとはURLの手入力するしかないようで、Mirrorリストを見ながら種別を"http"にして"ftp.jaist.ac.jp/pub/Linux/CentOS/8-stream/"とか入れてみても何故かエラー。
最終的にはBugTrackerの情報を頼りに種別を"mirrorlist"にしたうえで"mirrorlist.centos.org/?release=8-stream&arch=x86_64&repo=BaseOS"を入れたらうまくいった。

Fedoraはbtrfs押しだけど、CentOSはXFS押しのようなので、パーティションからやり直した。
RedhatはXFSの上にかぶせるStraitsとかいうのをZFS対抗で推進していたはずなんだが、CentOSのドキュメントには影も形もない。
代わりにVDOとかいうのがあって、これはブロックデバイスのレイヤーでシンプロヴィジョニング/重複排除/オンライン圧縮を担当するみたい。
ただ、インストール時には設定できないみたいなので、とりあえず領域だけ開けておく。

再起動後、Dockerをインストール。
公式のドキュメントだとCentOSならyumを使えとなっているが、CentOSも8はDNFへ移行済みなので、Fedora向けの記述を頼りにインストール。

$ sudo dnf -y install dnf-plugins-core
$ sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
$ sudo dnf install docker-ce docker-ce-cli containerd.io

ここでDocker RootとしてVDOで重複排除の有効になった領域を使用すべく設定。

$ sudo vdo create --name=vdovolume --device=/dev/sda5 --vdoLogicalSize=1TB
$ sudo mkfs.xfs /dev/mapper/vdovolume

既存のDockerRootの内容を移動したうえで、fstabに以下を追加。
x-systemdで始まるのはsystemd用のオプションだが、これがないとvdoサービスが立ち上がる前にマウントしようとしてエラーを吐くっぽい。

/dev/mapper/vdovolume   /var/lib/docker xfs     defaults,_netdev,x-systemd.device-timeout=0,x-systemd.requires=vdo.service      0    0

後はバックアップを戻せば完了。

ラズパイ用の電源#5

とりあえず前回は回路図を出してみたが、懸念点は以下の通り。

  • ダイオードでの電圧降下を考えると12Vではバッテリーの充電ができないのではないか、IRM-20-12からIRM-20-15に変えるべきか
  • 入力側への突入電流に対する保護を忘れていた、このままだと20Aが流れて、もれなくブレーカを落とす
  • それぞれ抵抗に何を使うのか決めないといけない
  • もしかしてD3は不要?
  • これ部品代だけで1万行くんでは


バッテリの充電には13.7-14.7Vが推奨されてるんだけど、これバッテリ側で測ったとき10V以下に落ちてるよね。
D3を抜いたとしても、電源側への逆流防止ダイオードD1と電流制限のためのR3とF2は残る。
D1で0.5Vぐらい、充電時は0.3A流れる予定だからR3で1.5V、F2はこの仕様だとトリップ前が4Ωぐらいらしいので1.2Vの計3.2V。
まあ定格電流で放電時のバッテリー側終端電圧が8Vより下なので、何とかそれよりも上だけど低い。


突入電流に対する保護ってNTCサーミスタでもかませばいいんかな。
定常時は0.6Aなんだけどデータシートを見る限り突入時最大20Aとなっている。
これを保護するにはどういった特性のNTCサーミスタが必要なんだろ。
室温での抵抗値ってどう選べばいいんだろ。
小さいと意味ないだろうし大きすぎると定常時のロスになるというか発熱が大変なことになるよね。

ラズパイ用の電源#4

だいぶ間が空いてしまったが、一応やめてはいない。
実物を作るかどうかはともかくプリント基板を発注できるくらいの完成度までは持っていくつもり。

とりあえず、回路図第一弾はできた。

f:id:MasaHero:20201124213735p:plain
回路図

ダイオードはよさげなの(VS-50WQ03FN-M3)があったのでそれにを使う前提だが、抵抗に関して全く決めてないので回路図上も適当。R3とか10W流せる抵抗はないだろうから組み合わせるしかないだろうし、R1も都合よく望みの抵抗値のものがあるとも思えないのでこれも適当に組み合わせるしかないだろう。

目視での検査では問題ないと思うのだがKiCAD付属のERCにかけると電源入力にあたるJ1のピン2とピン3周りでエラーが出る。何か設定を間違っているのだろうか。

構成としてはJ1が入力で、ACのライブとニュートラル、さらにアースの3極。そのままPS1であるIRM-20-12へ内蔵の保護回路を信じて直接つなげる。

PS1でAC/DC変換してDC12Vとした後、+12Vを電源入力監視としてN-MOSFETのゲートにつなぐ。適当に直結してるけど手に入りやすいN-MOSFETのゲートの耐圧に合わせて分圧する必要があるかも。このN-MOSFETでオープンコレクタではなくオープンドレイン出力を行う。GPIO側でプルアップしてやればラズパイへの出力として使えるはず。

+12Vは逆流防止のダイオード(D1)を挟んで、バッテリ(J3)とDC/DCコンバータ(IC1)へ。バッテリの充電側つまりD3側は抵抗(R3)で電流制限したつもりだけど、リセッタブルヒューズ(F2)も入れて0.4A以上流れないようにしている。バッテリの放電側(D4側)は特に制御してない。過放電対策とかやっぱり必要だろうか。

DC/DCコンバータ(IC1)の直前には一応6Aのヒューズ(F1)を挿入して過負荷対策。IC1には、無効化スイッチ入力と出力電圧調整ピンがあるのでそれぞれに適切そうなのを接続。
DIP SW(SW1)をONにするとIC1は機能停止する。可変抵抗(R2)で最終出力の5Vを調整。+VOUTには逆流防止のダイオード(D2)をかまして出力へ。

初めての電気回路設計なのでいろいろ不安だが、各素子のスペックシートを眺める限りこれで一応動作するはず。

ルータ乗り換え

YAMAHA NVR510からYAHAMA RTX1210へ乗り換えた。
オールインワンVoIPルータから中小規模拠点向けVPNルータへの乗り換えとなったわけだが、乗り換えた理由はネット回線を実は2回線契約しているから。2つの回線を有効利用するためにはWAN側のポートが2ポート以上必要で、そういった製品となるともう家庭用ではなく、小規模拠点向けも通り越して、中規模拠点向けとなってしまう。

ちょうどヤフオクであったのでRTX1210を購入した。定価だと2倍以上するが、発売されてもう6年も経っているせいか、中古価格的には新品のNVR510とどっこい。

移行自体は、同じメーカなので楽だった。NVR510側でUSBフラッシュに設定ファイルを書き出して、ちょっと編集してRTX1210側に刺して起動すれば、ほぼほぼ前の設定を受け継いでくれる。あとは、2機種間の差異部分を詰めていけば設定完了。

移行して思ったのだが、純粋なパケット処理能力的には後発のNVR510のほうが上かもしれない。2回線で負荷分散すること自体は重い処理とは到底思えないのだが、CPU能力が明らかにRTX1210側のほうが劣っているためか、NVR510では行かなかったCPU使用率70%突破が発生した。RTX1210自体の後継機の発売が望まれる。

RTX1210自体が2014年発売開始なので、もうそろそろ後継機のアナウンスがあってもおかしくない。後継機の型番は、順当にいけばRTX1220だろうか。ISDN系の機能はもう必要ないので消えるとして、その分筐体自体をもう少し小さくしてくれると嬉しい。CPUは、現状のPower系のシングルコアから、RTX830のようなArm系のマルチコアへ変更だろうか。

ラズパイ用の電源#3

スローペースだがまだまだ続くよ。
以下の続き。
masahero.hatenablog.jp

検討の結果、鉛蓄電池(VRLA)を電源入力喪失時のバックアップとして利用する。

回路の構成としては、以下の通り。

  • 商用電源(単相AC 100~200V)からDC 12Vへ降圧及び整流する部分
  • 電流制限回路を挟んでDC 12Vでバッテリーを充電する部分
  • バッテリー
  • DC 12VからDC 5V(+10%, -0%)へ降圧する部分

ぞれぞれ基本的には既製品で構成していく。
具体的には以下を利用する。

  • AC/DCコンバータとしてMEAN WELL のIRM-20-12
  • バッテリーとしてB B BatteryのBP1.2-12-T1
  • DC/DCコンバータとして村田製作所のOKR-T/3-W12-C

電流制限回路はさすがに既製品がなかったのでディスクリートで組むとして、あとは安全回路として入力側に異常電流防止のヒューズ、出力側に逆流防止用のダイオードかな。
これでやっと基板設計に取り掛かることが出来る。

Zabbix Proxy導入で躓いたとこ

振り返れば当たり前なんだが気づくのに3時間ぐらいかかったので戒めに書いておく。

なんやかんやあって、30台以上のラズパイを管理しているので監視用にZabbixを導入している。
システム部門でもなく生産技術の人間なので、サーバを新たにたてるわけにもいかず、部門NASとして導入しているSynologyのDS718+でZabbix ServerとZabbix FrontendをDockerで起動させ、DBはIoT用としてシステム部門に用意してもらっているものに間借りさせている。

今までは、用途的に必要があり社内LANに直接つながるものばかりだったので特に問題なかったが、社内LANとはつながらない設備内固有のLAN内に設置するもの(以降Aと呼称)が出てきた。
幸い同一の設備内LANには別用途ですでに社内LANにもつながっている個体(以降Bと呼称)がいるので、そいつにZabbix Proxyを導入することで対処しようとした。

で、単純にBで"sudo apt install zabbix-proxy-sqlite3"としてインストールして"/etc/zabbix/zabbix-proxy.conf"いじって、AのZabbix Agnetの向き先をBとしてリロードしたら以下のエラーメッセージ。

No active checks on server: host [****] not found

Zabbix Proxy側には以下のようなメッセージ。

cannot send list of active checks to [***]: host [***] not found

Zabbix Server側の設定を見直したり、Agent側の設定を変えたりしたけど状況変わらず。
そもデフォルトの設定ではServerとProxy間の設定情報の更新は1時間ごとなので、Sever側の設定を変更しても最長1時間Proxyには影響を与えない。
それにしてもおかしいと思いログを見直したらProxy側に以下のようなメッセージもあるのに気づく。

failed to update local proxy configuration copy: invalid table name "interface_snmp"

ググったら以下が引っかかる。
www.zabbix.com

そういえば、数カ月前にServer側を4.4から5.0LTSにバージョンアップしたなあと思いだすも、以前調べたときはAgentとバージョンが異なってもServer側のほうが上なら問題ないとなっていたから気にしていなかったし、ラズパイ自体もその間にStretchからBusterに上げていたからバージョン不一致は解消されたんではと思っていた。
しかしながらDebian側のリポジトリはBusterでも4.0なのね。
普段使ってるのFedoraだからディストリのバージョンを最新にしたらパッケージ自体もアップストリームのほぼ最新を追随してると無意識に思っちゃったけど、そういえばDebianはそんなことないわ、むしろStable=OLDな世界だったわ。

upstreamからパッケージ持ってきてProxyのバージョンも5.0LTSに上げたら、何の問題もなくServer上でProxyの先のAgentを認識できた。
まあ、設定自体は正しかったし当然ではある。

結論として、Agent自体はServerより古いバージョンでも問題ないけどProxyはServerと同じバージョンじゃないとダメ。