起動用zpoolでzpool removeしてはいけない

死ぬので。(@FreeBSD 13.0-RELEASE, 2021/07/13時点) そもそも何故zpool removeしたのか まずディスクを交換したかった。 大体の場合は、mirrorを作って古いディスクを外せばいい。(zpool attach + zpool remove) ただ今回はboot領域にうっかりでっかいディスクを使ってしまっていて、SSDに交換しようとしたら容量が足りなかった。 調べたところ、最近のzpoolはzpool addしたあとremoveできて、これを使うと、poolのshrinkができる。 てきとーにやってみたら、簡単にできてしまった。(ぎりぎりに縮小することはできなくて、ものすごく余裕を持たせる必要はあったが) 感心&安心していた。数日後にrebootするまでは。 panicする 停電etc.でrebootすることもあるが、そのときに(今回みたいな)障害に遭いたくない。というわけで時間があるときにやる。 rebootしたら、こんなpanicが出てrebootループに入ってしまった。 余談1: その前にbootcodeの書き替え忘れもあった。 余談2: rebootが早すぎて読めなかったので、iPhoneで動画撮影して見る羽目になった。 Root mount waiting for: usbus0 uhub2: 4 ports with 4 removable, self powered panic: VERIFY(nvlist_lookup_uint64(configs[i], ZPOOL_CONFIG_POOL_TXG, &txg) == 0) failed 困る ZFS絡みなのが分かったので、すぐに別のマシンに繋いでテストしたりしたが、まったく問題が見つからない。 zpool importは正常だし、zpool scrubしても何も出ない。 解決 実は大分前に、ZIL(log)を取り外したときに同じ現象だったことを(奇跡的に)思い出した。 このときにどうしたかは思い出せなかったが、つまりpoolが悪い。 どうするかは簡単で、zfs sendしてzfs receiveすればいい。 boot用なので5GB程度しかなく、すぐに復旧できた。 […]

Raspberry PI 4 Model B + FreeBSD 13 BETA3 + ZFS

試してうまくいったのでメモとして残しておく。 後から手順にしているので、余計な手順や、抜けている手順があるかもしれない。(が、参考くらいにはなるはずと思っている) なお、初期設定ほかではこちらを参考にさせてもらった。 本稿執筆時点(2021/02/23)では、シリアルコンソールなしで、USB+HDMIディスプレイというごく普通の装備だけで動かせている。 FreeBSD on RaspberryPi 4 Model B 発動篇 必要なもの Raspberry PI 4 Model B+ (以下、RPI。なお、2Gモデルで実験している。) FreeBSD-13.0-BETA3-arm64-aarch64-RPI.img microSDカード (4GB以上) USBメモリ (4GB以上、ZFSを認識させるために使用) 適当な作業用FreeBSDマシン + USB-SDカードアダプタ 手順 適当な方法でイメージをSDカードに焼く。 # dd if=/tmp/FreeBSD-13.0-BETA3-arm64-aarch64-RPI.img of=/dev/da0 bs=65536 念の為、この時点でRPIが起動することを確かめておく。 SDカードを作業用PCに接続する。(以下、SDカードはda0になっているとする) 現在のUFS内データをバックアップする。 # mkdir /mnt/raspi # mount -t ufs /dev/da0s2a /mnt/raspi # cd /mnt/raspi # tar -cf /tmp/raspi-rootfs.tar . # cd […]

FreeBSDのバージョンを取得する

そんなものはfreebsd-versionコマンドで取れるのは分かってる。 でも、どうしてもコマンドを叩けない、叩きたくない、というときのためのメモ。 主にjailの管理用で、User Land側のバージョン取得が目的。

matrix(の実装であるsynapse)をFreeBSDで動かす

気がつけば2週間。 decentralizedなコミュニケーションツール “matrix” の実装である “synapse” をFreeBSDで動かした。 メモを見ながら書くので抜けている可能性大。

Pandora FMSで遊ぶ(1)

Zabbixもいい加減古い。 UIも古臭いから、なにか試そうと思って見つけたPandora FMSをFreeBSD環境に入れてみた。 今回はインストールの話だけ。

WITNESSとdouble fault

昨日散々悩まされた件、もしやと思ってWITNESSを切ったら起きなくなった。 これはWITNESSによる負荷やタイミングのずれが原因と見るべきか、それともWITNESSがバグっているのか……。 検証してみたいけど、今その元気は無い。

RedZone/memguardでカーネルデバッグ

モジュールをいじってたらkernel: Fatal double faultでpanicするようになってしまったので調査。 とはいってもdouble faultの原因リストなんて知らないので、ここはメモリ破壊系バグによる誤動作に賭けて調査開始。

バグレポート初め

正月という儀式を無視して年末からずっとunionfsを改造してたら、kern側のバグっぽいものを見つけたのでレポートした。 215705 – VOP_REMOVE call with invalid cn_nameptr 個人的にはバグだと確信してるけど、実はVOP_REMOVEのときはcn_nameptrは壊れててもいいとかあるのかな……ないよね……。

panic: ufs_direnter: compact2

この前から続けてunionfsをいじってたらpanicにやられた。 panicの中身からは分かりづらかったけど、VOP_CREATEに先んじてVOP_LOOKUPを呼んでいなかったことが問題らしい。 1ヶ月以上はまっていたので記録を残しておくことにした。 きっと誰の役にも立たないけど。