FreeBSDのMariaDB 10.4から設定ファイルがserver.cnfに変わった
FreeBSDのMariaDB 10.3を10.5に更新し起動しようとしたら、以下のメッセージが出て起動できなかった。
$ sudo service mysql-server start Please merge existing /usr/local/etc/my.cnf file with /usr/local/etc/mysql/conf.d/server.cnf /usr/local/etc/rc.d/mysql-server: WARNING: failed precmd routine for mysql
my.cnfとserver.cnfをマージしろとな。
/usr/ports/UPDATINGを探ると以下の文言を発見。
20200526: AFFECTS: users of databases/mariadb104-client, databases/mariadb104-server AUTHOR: brnrd@FreeBSD.org The ports now add sample configuration files to /usr/local/etc/mysql. You must merge your client configuration with the conf.d/client.cnf and your server configuration with conf.d/server.cnf.
MariaDB 10.4から設定ファイル置き場が/usr/local/etc/mysqlになったっぽい。今までmy.cnfに一緒くたで書いていたサーバ、クライアントの設定は、それぞれconf.d/server.cnfとconf.d/client.cnfに分ける流儀になった模様。一応、my.cnfも存在するので、そこに書いても問題はないだろうけど…
とりあえず目マージで対応し、/usr/local/etc/my.cnfを消したところ、無事起動することを確認。
飛ばしたFreeBSDをbsdinstallで復旧
最初に謝っておこう。復旧と言ってるけど、実態としては殆ど新規インストールなんだ、すまない。
誤って家鯖のFreeBSDを飛ばしたわけだけども、13.0-RELEASEの完全クリーンインストールはやめ、既存環境を上書きする形で12.2-RELEASEを起動できる状態にいったん戻すことにした。FreeBSD標準の自動インストールでは、ストレージの現在のパーティションを生かす方法がなく、結局手動でアレコレする羽目になる。だったら、手っ取り早く上書きインストールした方が簡単かなと。
上書きインストール、というかFreeBSDのインストール自体は/usr/freebsd-distにあるアーカイブをファイルシステムに展開するだけ(と少々の起動設定)なんだけど、せっかくなのでbsdinstallを使ってみた。
必要な環境変数を設定し、bsdinstall distextractを実行するとアーカイブを展開してくれる。
まずはFreeBSDのインストーラでマシンを起動し、Shellに落ちて、破損したシステムをマウントする。うちはRoot on ZFS環境なので↓のような感じ。
# mkdir /tmp/zroot # zpool import -f -R /tmp/zroot zroot
続いて環境変数の設定。
# export BSDINSTALL_DISTDIR=/usr/freebsd-dist # export DISTRIBUTIONS="base.txz kernel.txz lib32.txz" # export BSDINSTALL_CHROOT=/tmp/zroot/
| 環境変数名 | 意味 |
|---|---|
BSDINSTALL_DISTDIR | インストールアーカイブのパス。デフォルト値は/usr/freebsd-distで、インストーラから起動した場合は特に指定する必要はない。 |
DISTRIBUTIONS | インストールするアーカイブの指定。BSDINSTALL_DISTDIRにあるファイル名を列挙する。base.txz, kernel.txzの2つがあればOSとして動く。 |
BSDINSTALL_CHROOT | アーカイブの展開先のパス。冒頭で/tmp/zrootにZFSの'/'をマウントしているので、その値を指定。デフォルト値は/mnt。 |
でもってbsdinstallを実行。
# bsdinstall distextract
すると見慣れたFreeBSD Installer画面になって展開が進む。終わるとシェルに戻ってくる。
ZFS起動に必要な設定を書き込む。
# echo 'zfs_load="YES"' >> /tmp/boot/loader.conf # echo 'zfs_enable="YES"' >> /tmp/etc/rc.conf
念のためプールをエクスポート&再起動
# zpool export zroot # reboot
これで、新規12.2-RELEASEが立ち上がった。以前のデータの残り具合次第では、ある程度、設定済みの環境も戻ってくるだろう。自分の場合、/usrと/etcが完全に消えたので、殆どクリーンインストールと一緒だけどな!気持ち的には、秘伝の家鯖の血脈は保たれた。まっさらな環境だけどな!
ベニクラゲのように若返ったとでも思っておこう。
(2021/04/26 追記)
環境構築を進めてみると/usr/local/etcがほぼほぼ残っていることが判明。これは名実ともに血脈が保たれたと言ってもいいのでは…!?しかしあれだ、ちゃんとバックアップは取っておきましょうね。
参考サイト
ミスって家鯖のFreeBSD環境を飛ばしてしまった
家鯖のFreeBSDをミスってrm -rf /してしまった。ぼくも流石にそこまでアホではないので、rm -rf /を直接実行したわけではなく、結果としてそうなったという感じ。いにしえのRoot on ZFS環境からBoot EnvironmentなZFS構成に変更していた際の出来事である。
幸い/usr/homeは別プールでマウントもしていなかったので最悪の事態は免れた。しかし、FreeBSD 9-BETA3の頃から連綿と続いてきた環境が飛んでしまった。途中で気づいたので全損ではないが、何がどこまで残ってるのかも分からないし調べるのも面倒。ここは素直に出たばかりの13.0-RELEASEで構築し直しですかね…。
システムの安らかな成仏を願いつ、本システムにまつわる昔話をしてみる。
本システムを組んだのは2011年10月頃。実際には夏頃から作り始めてた気がする。
当時動かしていた家鯖はポリカMac miniにUSB-SATA変換でHDDを繋いだものだった。HDDが足りなくなってきたこと、もう少し自由な環境にしたかったこと(BSDベースとはいえMacは何だかんだクセがあって大変だった)が理由で、移行先の調査をしていたところにFreeBSDとZFSを使う方法を見つけた。このころのHDDは容量の増加が伸び悩んでて、3TBのモデルが出回り始めた時世である。容量を稼ぐにはRAIDが必然だった。信頼性を取るとH/W RAIDになるが値段も消費電力も敷居も高く、一方チプセRAIDは身近でいい話を聞かなかったし、汎用性に欠けるので使いたくなかった。
こんな状況でZFSに出会ったものだから、まさに渡りに船状態、その衝撃たるや半端なかった。FreeBSDには多少の覚えがあったし、ちょうど放出品のMicroServerでNASを作るのが流行ってたこともあって、すぐさまFreeBSDとZFSな家鯖作りを始めたという具合。Root on ZFSな環境を作るのに、何回もFreeBSDをインストールし直し、幾度となくzpool, zfsコマンドを叩いた。めげずによくやったもんだわ。
それから10年、大きく5回のハードウェア構成変更、システムプールのHDD→SSD化、データプールの構成変更(RAID-Z [HDDx4]→RAID-Z+0 [HDDx3x2]→RAID-Z [HDDx4]→RAID-Z2 [HDDx5])や物理と仮想を行ったり来たり、時にはカーネル更新に失敗してbuildworldする羽目になりながらも、途中での環境作り直しもなくやってきた。
- ProLiant MicroServer (AMD Turion II NEO N36L)
- H77 Pro4/MVP (Xeon E3-1240L)
- ESXiでP2V
- Z77A-GD65 (Xeon E3-1260L)
- 物理に戻した
- C2750D4I (Atom C2750)
- X10DRi (Xeon Xeon E5-2648Lv3 → E5-2673v3)
- 当初物理、2021年2月からPVEでP2V
そんな秘伝のシステムを不注意でポアしてしまって本当に悲しい…。
Legacy ZFSブートからUEFIブートへの変更を乗り越え、今度はBoot Environment化を目論んでいたのに……そのための手順と記事をチマチマ書いてたのに………。ZFSなんだから、破壊的操作の前にスナップショット取っておけって話である。実際、取ろうかどうか迷った挙句、取らなかったんだよね…………。後悔先に立たず。
REALFORCE R2に交換用Caps Lock/Ctrlキーキャップが付属しない件
今北産業用。
- REALFORCE R2ではCaps Lock, Ctrl入れ替え時の交換用キーキャップはAPCモデルにしか付属しない。
- モデルによってはカラーリングを含めた完全互換の交換用キートップの個別入手は不可能。
- Aキーの左側だけならHHKB用キーキャップが使える。
- ちなみにCaps Lock/Ctrlの入れ替え方は次のとおり:
- R1 → キーボード裏面のDIPスイッチの1番をON(ファンクションキーがある方向にスライド)
- R2 → Fn+F11押下後、Fn+F9で設定を保存
以下、チラ裏。
超PayPay祭のポイント還元に釣られてREALFORCE R2を買った。初代を2台(自宅用にアイボリー、会社用に黒)を持ってたりするんですけど、やっぱりR2気になるじゃないですか。だってオタクだもの。
自分は英語配列/テンキーレス/変荷重/A横Ctrl派閥に属している。R2から通常ラインナップ入りした静音モデルが気になるので、機種は自ずとR2TLS-USV-IVかR2TLS-USV-BKに定まった。アイボリーと黒、悩ましいところだが、経験的にアイボリーを選んだ。初代の両色をそれなりに使ってきて、黒には以下の難点があることが分かったからだ。
- キートップの印字が見づらい
- テカリが目立つ
- ホコリが目立つ
印字が見づらいのは、完璧にタッチタイピングできる人なら問題にならないだろう。でも僕ちゃんは無理なの。特に最上段の数字キーらへん。おおむね大丈夫ではあるが、列ずれして意図しない文字が入力された時に手元を見て補正するクセがあり、その時に文字が見えないと厳しい場合がある。
テカリは「アイボリー比で」という注釈が付くくらいに些細な問題ではある。REALFORCE自体、安物キーボードと比べると全くと言っていいほどテカらないが、それでもアイボリーと比べると、よく使うキーで黒はテカりが目立つ傾向にある。
ホコリ目立つのは掃除の目安になって、ある意味いいこととも言えるし、逆にアイボリーは手垢が目立ったりするので一長一短だったりはする。自分的には、手垢は気になりだすのに数か月かかるのに対し、ホコリは掃除したそばから気になりだす。
そんなわけでR2TLS-USV-IVを購入。昔ながらのツートーンの配色も割と好きだったりする。
R2到着後、さっそくCaps Lockと右Ctrlのキー設定を入れ替え、キートップも交換しようとしたら、あれれー交換用のキートップがないぞ?箱の中をひっくり返しも見当たらず。よくよくメーカーサイトで各モデルの仕様を比較すると、交換用キートップはAPCモデルにしか付属しないっぽい?。初代では(たぶん)全モデルに付属してたのに、そりゃないぜ東プレさんよお。
単品販売はしてないし、交換用の色付きキーキャップ全セット(青/赤/緑/橙/黄/紫)は用意されているものの、本体の半値という高額設定なうえ、通常カラーのアイボリーと黒がないので完全に詰んだ。
APCで変荷重なモデルって日本語配列しかないし、APC付きの英語配列は固定荷重のPFU Limited Editionしかないし、APCなし変荷重英語配列モデルをチョイスした時点で詰んでた。そりゃないぜ東プレさんよお!
Aキー左のCtrl用(元の配列ではCaps Lock)だけならHHKB用の交換用キートップ、すなわち初代REALFORCEのものが使えるらしい。
こっちもかわいくした pic.twitter.com/xpOeRnRgQk
— yuki (@_yuki1217_) February 3, 2021
左下CapsLock(元の配列ではCtrl)はR2からの新サイズっぽいので、現状互換品は見当たらず。色(と価格)に我慢して交換用正規のキートップ全セットを買うか、APCモデルを買ってニコイチするしかなさそう…。
こうした細部への拘りもREALFORCEの売りの一つだと思ってたので、正直ガッカリですわ。割高でもいいから単品販売してくれないかなー。
メインPCとサーバをP2VしてRyzenおじさんからHaswellおじさんになった
住環境が変わって、メインPCと自宅サーバを同じ部屋に置くことになった。
自宅サーバは無駄に高スペックだったが(といっても逸般の誤家庭の人からは鼻で笑われる程度)、ほぼ自分専用のFreeBSDなNASやNextcloudサーバ程度にしか使ってなかった。まさに性能と電気代の無駄遣い状態。それでもPCと鯖を分けていたのは、煩い鯖を居住空間内に置いときたくなかったから(っていうのと自宅鯖という物理体に憧れがあったから。)
その制約がなくなった今──ある意味、自室にサーバを置かざるを得ない最大の制約が課されたとも言えるが、マシンを分ける意義がなくなったので、統合することにしたのが2020年10月。付けっぱなしの鯖と、寝てるとき以外はほぼ付けてるメインPCを1台にまとめれば、PCがいつでも使えるようになって電気代も節約できて一石二鳥という皮算用もあった。
その後、数々の検証と困難を乗り越え、ようやくProxmox VE基盤でメインPCと家鯖の仮想化による統合が完了した。このところ、PVEや仮想化関連の更新をしまくってたのはこのせい。旧メインPCは解体の後、パーツ類はヤフオクにドナドナされ、名実ともにRyzenおじさんからHaswell-EPおじさんにダウングレードだ😇
統合にあたっては、家鯖マシンをPVE基盤に流用した。本当はEPYCに変えたかったけどお金がないのさ…。そうは言っても、メインマシンとして使うにはCPUが心許なかったのでヤフオクお安く調達。ストレージまわりも整理した。
| 変更前 | 変更後 | |
|---|---|---|
| CPU | Xeon E5-2648Lv3 (1.8GHz/12C/24T) ×2 | Xeon E5-2673v3 (2.4GHz/12C/24T) ×2 |
| SSD | PM983 960GB ×2 | PM963 1.92TB ×2 |
| HDD | WD80EMAZ ×2 (ミラー) 色々8TB ×4 (RAID-Z) | ST10000NM0086 ×5 (RAID-Z2) |
旧メインマシンの構成は下表のとおり。
| CPU | Ryzen 7 1700 |
|---|---|
| M/B | X370 SLI Plus |
| RAM | DDR4-3200 16GB×4 = 64GB |
| GPU | GeForce RTX 2070 SUPER |
| SSD | WD Black SN750 500GB (NVMe) |
| SSD | 東芝 THNSNJ960PCSZ 960GB (SATA) |
| NIC | ConnectX-3 Pro EN |
仮想化後のマシン構造は下図のとおり。
仮想化という割には、パススルーやらRDMやらで物理とがっつり密結合してる。今後収容予定のルータは、正しく仮想マシンになる予定(SR-IOVのVFを除く)。
2ヵ月ほど使った感想としては、物理環境と遜色なく使えている。ハード的な性能は旧メイン機から間違いなく下がっており、当初こそブラウザの若干のもたつきを感じこそすれど気のせいないし慣れの範疇で、今は何の不満もない。3Dのゲームも動くし、USB DAC経由でiTunes再生、NVEncも問題なし。
改めて第10世代Coreと2070 SUPERなマシンを触ってみたら、ブラウザの表示がチョッパヤで驚いた…。P2V後のもたつきは気のせいではなかった。リンクをクリックした際、前者はまさにパッと表示が切り替わるのに対し、後者はわずかな空白期間があってからパッと出る感じ。
GPUはGeForce RTX 2070 SUPERからGTX 1650へと大幅ダウングレードしているが、これは3060への乗り換えを見越しての措置。折からのGPU不足による中古価格上昇で、2070の売却代でオトクに3060へ乗り換えるつもりだった。が、いざ蓋を開けてみると3060は微妙な感じだし、今なお2070Sの中古価格は上昇傾向だしで、正直売らなきゃよかった……。
仮想メイン環境をPVEで自動起動設定すれば、ホストマシン電源オンでゲストのWindowsも起動する。また、ゲストエージェントを入れとけば、ホストのシャットダウンも何てことはない。ゲストのブラウザからPVE管理画面を開き、ホストをシャットダウンすれば自動でWindowsのシャットダウン処理が走り、その後ホストの電源が切れる。再起動も同様だ。こうした使い勝手の面でも、物理環境と大差なくて素晴らしい。
メインマシンを仮想化する上での最大の障壁はGPUだが、Proxmox VE (KVM)を使えば難なくGPUパススルーできる。仮想BIOSの画面が物理モニタに映し出された時は妙な感動を覚えた。
USBまわりはPCIパススルーでコントローラをVMに割り当てると、普通の物理マシンの感覚で使えてよい。
今回はネットワークまわりも、SR-IOVでもって物理デバイスのように扱っている。対向のL3スイッチからはVMが直接接続されているように見え、構成的に綺麗な気がする。何よりソフトウェアブリッジを使わずに済むので、パフォーマンス的にも負荷的にも有利である。
仮想化技術さまさまですわ。
電気代削減効果はちょっと微妙かなぁ。VM起動したアイドル状態で140W程度。理想は100W切ってほしいけど、CPU 2個に32GBのRDIMM 6本、GPU/NIC/USB/U.2×2 PCIeを差してるし、むべなるかな。
| 状態 | 消費電力 | メイン機 アイドル | 合計 | |
|---|---|---|---|---|
| 旧サーバ | 待機(HDDスピンダウン) | 100W | 40W | 140W |
| 待機(HDD×6スピンアップ) | 130W | 170W | ||
| 新サーバ | 待機(HDDスピンダウン) | 120W | - | 120W |
| 待機(HDD×6スピンアップ) | 140W | 140W | ||
※新サーバのHDDが5台ではなく6台なのは間違いではない。
一応、トータル30W程度の節電だけど、旧サーバのデータは不正確なので怪しいところ。1ヵ月で21kWh節電の計算となるが、現状目に見えて電気代が安くなったとかはない。在宅勤務でおうち時間が長くなってる影響が大きいのかも。今更ながら、140Wで1ヵ月だと100kWhか…馬鹿にならんな……。
その他、メイン機を仮想化した際に気になったこと、運用上の注意点は以下に箇条書きで。
- GPUパススルー
- ネットに転がってる解説記事に従って難なく可能
- 一部記述が古かったり、曖昧だったりする箇所があるのは要注意
- プライマリディスプレイが4kモニタだと、EFIからOSに制御が移った時にコケる。WUXGAモニタだと問題なし。
- (2022-01-12 追記) PVE 7にしたらROM-Barオンでも仮想BIOS→Windowsログイン画面の遷移も問題なくなった、
- 仮想マシンの仮想BIOS表示→Windowsの起動ロゴまでは映るが、ログイン画面に切り替わるあたりで無信号状態になる。
- それでもWindows自体は正常に起動している。
- ROM-Bar (GPUのBIOS)を切ると、仮想BIOS→Windowsの起動ロゴは出なくなる代わりに、ログイン画面が出るようになる。
- 仮想BIOSを弄ることは早々ないので、ROM-Barオフで運用。ログイン画面が出るまで真っ暗なのでちょっと不安ではあるけど。
- GeForce RTX 2070 SUPER、GTX 1650で確認。ラデは知らん。
- ネットワーク
- ConnectX-3のSR-IOVをパススルーで利用
- WindowsからNICとして認識されリンクアップしているものの、パケットが流れないことがある。
- 何度か仮想マシンを再起動すると直る。一度直ればVMを落とすまで大丈夫。
- 多少不便だけどログイン画面で判断できるので許容内。
- なぜかiTunesのネットワークまわりの挙動が怪しい。
- Gracenoteに繋がらない(そもそもネットワークが繋がってない判定を食らう)
- 別マシンからホームシェアリングで繋ぎ、切断後再接続すると接続が打ち切られ、ライブラリから表示が消える。
- iTunesを再起動すると繋がるようになる。
- virtio-netだと問題なし。
- ネットワークの状態ダイアログの送受信パケット数カウンターが動いてないのが原因?
- これ自体はドライバのバグっぽい:PVEとConnectX-3とWindowsでSR-IOVが使えないのはMLNX_OFEDが古いせい
- VFとLinux Bridge (vmbr0)にぶら下がっている仮想NICの間で疎通できないかも?
- vmbr0のFDB1)にVFのMACアドレスが載らないのが原因らしい?
- USBパススルー
- マザボのUSBコントローラをPCIパススルーでも行けるが、後付けしたUSBカードをパススルーする方が無難。
- (IPMIの)KVMの入力がパススルー先のVMに持っていかれ、KVMが用を成さなくなるから。
- 仮想マウスと仮想キーボードは内部的にUSB接続されているのだ。
- いざという時に困る(PVEのWeb UIが応答しなくなって、物理ターミナル経由でrebootしなきゃいけないときとか)
- マザボのUSBはPCIデバイス的にはUSB 2.0/3.0が別々に認識され、片方のみパススルー設定できるが、結局両方ともパススルーされる模様。
- USBのパケットが途切れることがあるっぽい
- キー入力、マウスカーソルがプチフリすることがある。地味にイラつくが致命的ではない。
- USBサウンドがたまにプチプチ切れる。地味に(ry
- スリープ、ダメ、ゼッタイ
- VM(のWindows)をスリープさせたが最後、復帰できなくなるのでスリープさせてはいけない。
- 少なくともパススルーしてるUSBマウス・キーボードをガチャガチャでは復帰せず
- PVEの管理画面から何か叩けば行けるかも?
- (2022-01-12 追記) 管理画面からスリープ解除するとVM自体は起き上がるようだが、やはり画面が出ない。
- モニタのスリープは大丈夫。


