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と同じバージョンじゃないとダメ。

ラズパイ用の電源#2

以下の続き。
masahero.hatenablog.jp


要求仕様を満たすために考えるべきことは、まずどうやって入力消失後30秒間出力を維持するか。
とりあえずぱっと思いつくのは以下の2つ。

それぞれのメリット/デメリットは以下の通り。

  • コンデンサ
    • メリット
      • 充電は特に制御が必要ない
      • 5年程度では劣化を特に気にする必要がない程度には長寿命
    • デメリット
      • 放電時は残容量に従い線形に電圧が低下するので電圧を一定に保つには何らかの制御が必要
      • 容量が少ない
  • 二次電池
    • メリット
      • 放電時の電圧変動が少ない
      • 比較的容量確保が楽
    • デメリット
      • どのタイプの二次電池かにもよるが大抵充電制御が必要
      • 寿命を気にする必要あり


どちらにするか決めるためにも、求めるものを整理していく。

ラズパイシャットダウンの時間確保用なので最終の出力電圧は5V、ラズパイの最新モデル4Bが資料によると最低2.5Aを必要としているようなので最低でも5 \times 2.5 = 13で13Wを30秒間出力できるもの。
13Wを30秒なので、13 \times (30 / 60 / 60) = 0.1083...でだいたい110mWh、ないし13 \times 30=390で390J。

容量だけを考えると二次電池ならかなり小さいものでも余裕で確保できるが、小さいものだと出力2.5Aを確保できない。
二次電池から選択する場合は、容量よりも電流量がネックになる。
ちょっと調べてみた限りではリチウムイオンだとかニッケル水素は2.5Aを確保しようと思ったら2.5Ah以上が必要みたい。
電池のデータシートにやたらとCが出てきて、最初電荷の単位クーロンだと思ってて意味不明すぎたんだが、どうも全然別の単位で全容量を1時間で放出しきる電流量が1Cらしい。紛らわしすぎる。
リチウムイオンだとかニッケル水素の電池が1C以上取り出しちゃいけないようなので、30秒間だけのはずが1時間以上持つものが出来上がってしまう。
期待していなかった鉛蓄電池が重いけどこの用途には向いてるみたい*1

コンデンサの場合、大容量を確保しようと思うと電気二重層タイプになる。
しかし電気二重層タイプは耐圧が著しく低いので仮に2Vで充電するとして、かつ出力電圧維持の都合上容量の7割までしか使えないとすると必要な静電容量はQ=\frac{1}{2}CV^2だから\frac{390}{0.3} \times 2 \times \frac{1}{2^2}=650で650F。
650Fを1つで確保はできないので6つぐらいを束ねることを考える*2
となると、束ねたコンデンサ間の電圧に偏りが生じないよう制御する必要が出てくる。
需要はあるみたいで専用にICが出てる*3
ただ、なんといってもでかい。
2.5V/150Fという製品があるが直径35mmの高さ50mmと中々でかいものが6個とバランス制御用ICでかなり実装面積が必要となるし、お値段が1個2000円ぐらいするからラズパイ本体よりも高くなること必須。

*1:BP3-6-T1 www.digikey.jp

*2:6つなのは充電電圧2Vだと直列にしたとき12Vとなって扱いやすいから

*3:www.rohm.co.jp