FreeBSD Tips: Difference between revisions

Jump to navigation Jump to search
4,915 bytes added ,  27 January 2023
no edit summary
No edit summary
No edit summary
(45 intermediate revisions by the same user not shown)
Line 1: Line 1:
*FreeBSD リハビリwメモ
*FreeBSD リハビリwメモ
journaled soft-updates も課題を抱えているらしい。昨今のテラバイト級のストレージでショートファイルが多い場合に、ジャーナルを食い潰すして不具合を起こすらしい。
あら dig はデフォで無くなったのか drill が相当品 (unbound の tool なのね)
 
<syntaxhighlight lang="bash" enclose="div">
alias dig drill
</syntaxhighlight>
したw
 
なぜ今更な感じ何だが、avahi で IPv6 を resolve したときに link-local しか出ないのでいろいろあさった。(mDNS の仕様っぽいし、無理矢理 Global IPv6 にする方法もみつからなかった)
 
*FreeBSD リハビリwメモ
11.x 以降からいろいろ思想を変えてきてるっぽい。高速の外部記憶(SSD)とかが普通になってるんだったら、昔のようにswapを嫌わずに、主記憶を有効に使う方向に振りましょうとの感じか...
 
*FreeBSD リハビリwメモ
FreeBSD でも Linux みたいな過保護な実装するようになったんだなぁといろいろ調べた
rc.conf にこんなのが書けるっぽい
 
<syntaxhighlight lang="text" enclose="div">
elasticsearch_oomprotect="ALL"
</syntaxhighlight>
これ書いてたら、DB飛ばさなかったかもw
 
あら protect flag (P_PROTECTED) 立たないな。調査する...
 
*FreeBSD リハビリwメモ
ほーーーー FreeBSD で "OOM" とい文字列が...昔はこの言葉なかったよなぁ
 
<syntaxhighlight lang="text" enclose="div">
vm.pageout_oom_seq
vm.pfault_oom_attempts
</syntaxhighlight>
 
*FreeBSD リハビリwメモ
sambaが古いのが入ってしまってセキュリティ警告が出て install 出来ないのでデフォルトバージョンを変えた。
<syntaxhighlight lang="text" enclose="div">
DEFAULT_VERSIONS+=samba=4.16
</syntaxhighlight>
 
あとはおまじない
<syntaxhighlight lang="bash" enclose="div">
portmaster -o net/samba416 samba412
</syntaxhighlight>
 
 
*FreeBSD リハビリwメモ
rctl とかよさげかなぁと遊んでみたが、pcpu で deny すると、意識が飛び飛び状態で、これは駄目だ。throttle は使えないので、devctl で script 呼び出しかなぁ...まだ遊び中...
 
一秒に一回イベントがくる。条件が閾値超えだけなので使いづらい。
 
*FreeBSD リハビリwメモ
FreeBSD流 cpu microcode のアップデート
https://www.thomas-krenn.com/en/wiki/Update_Intel_Microcode_on_FreeBSD
一度やればそれでCPUにフラッシュされるのかと思ったらそうでは無いっぽい。 cpu_microcode_load="YES" はそのままにしないといけない。
 
*FreeBSD リハビリwメモ
あーこんなのやってたなぁ
<syntaxhighlight lang="text" enclose="div">
login.conf:# cap_mkdb /etc/login.conf
termcap:#  cap_mkdb -f /usr/share/misc/termcap /etc/termcap
</syntaxhighlight>
limit 解除するときにこれを忘れてハマった記憶がw
 
*FreeBSD リハビリwメモ
blacklistd なるものがあるらしい。(fail2ban 設定中に見つけたw) ports の postfix には blacklistd patch もあるので使えそう。遊んでみる。
 
やはり pf つかうのがナウいwのかねぇ (fail2ban も pf で頑張り中...)
 
*FreeBSD リハビリwメモ
今も要るみたいね... /etc/make.conf に
<syntaxhighlight lang="text" enclose="div">
CFLAGS+=-DFD_SETSIZE=8192 -DSOMAXCONN=4096
</syntaxhighlight>
20年前よりは賢くやろうw
 
<syntaxhighlight lang="text" enclose="div">
/usr/src/sys/sys/socket.h:427:9: error: 'SOMAXCONN' macro redefined [-Werror,-Wmacro-redefined]
#define SOMAXCONN      128
</syntaxhighlight>
ってなるソースもあるのでもう少し工夫がいるか。 "-Wno-macro-redefined" はやりすぎかなぁ?
 
*FreeBSD リハビリwメモ
↓の検証をしていて
<syntaxhighlight lang="text" enclose="div">
vfs.ufs.dirhash_lowmemcount
</syntaxhighlight>
がカタカタ増えるのを見て、懐かしいなぁとw
 
find を sleep 入れて回し続けるというバッドハックをやってたw
 
<syntaxhighlight lang="bash" enclose="div">
#!/bin/sh
 
while true
do
    /usr/bin/nice -n 20 find / -ls -exec sleep 1 \;  >/dev/null 2>&1
done
</syntaxhighlight>
 
*FreeBSD リハビリwメモ
journaled soft-updates も課題を抱えているらしい。昨今のテラバイト級のストレージでショートファイルが多い場合に(単位時間内での処理過多で)、ジャーナルを食い潰して不具合を起こすらしい。


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=255799
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=255799
Line 36: Line 134:
The easiest way to test this theory would be to bump up SUJ_MAX to 350Mb in sys/ufs/ffs/fs.h and then recompile tunefs. Using the recompiled tunefs, disable journaled soft updates, remove the old .sujournal, then reenable journaled soft updates to get a bigger journal.
The easiest way to test this theory would be to bump up SUJ_MAX to 350Mb in sys/ufs/ffs/fs.h and then recompile tunefs. Using the recompiled tunefs, disable journaled soft updates, remove the old .sujournal, then reenable journaled soft updates to get a bigger journal.
</syntaxhighlight>
</syntaxhighlight>
SUJ_MAX 増やして tunefs をビルドし直して、一旦 "-j disable" してからマウントして .sujournal を消し、再度 "-j enable" して .sujournal を作り直す。.sujournal のサイズが増えていることを確認。念のため full fsck はしておくのがよいかも。
SUJ_MAX 増やして tunefs をビルドし直して、一旦 "-j disable" してからマウントして .sujournal を消し、再度 "-j enable" して .sujournal を作り直す。.sujournal のサイズが増えていることを確認。念のため full fsck はしておくのがよいかも。← fsck は不要。(Journal timestamp does not match fs mount time っていわれる)
 
あら tunefs に -S オプションがある。こんな感じかな
<syntaxhighlight lang="bash" enclose="div">
tunefs -j enable -S 536870912 /dev/ada0p2
</syntaxhighlight>
 
<syntaxhighlight lang="bash" enclose="div">
-r--------  1 root  wheel    33554432 Jul 25 17:15 .sujournal
*
-r--------  1 root  wheel    536870912 Jul 25 17:19 .sujournal
</syntaxhighlight>


D30041 の適用は有効。しかしジャーナル不足の場合は、わかるぐらいオーバヘッドあり(unlink)。ジャーナルサイズを増やす事によりこの事象は解消できる。


*FreeBSD リハビリwメモ
*FreeBSD リハビリwメモ
Line 160: Line 270:
tunefs -j disable /{デバイス}
tunefs -j disable /{デバイス}
mount -o rw  {デバイス} {マウントポイント}
mount -o rw  {デバイス} {マウントポイント}
chflags noschg,nosunlnk {マウントポイント}/.sujournal
# chflags noschg,nosunlnk {マウントポイント}/.sujournal
rm {マウントポイント}/.sujournal
rm {マウントポイント}/.sujournal
umount {デバイス}
umount {デバイス}
Line 166: Line 276:
mount -o rw {デバイス} {マウントポイント}
mount -o rw {デバイス} {マウントポイント}
</syntaxhighlight>
</syntaxhighlight>
★訂正↑のオペレーション(chflags noschg,nosunlnk)はちゃんと -j disable にしていたら不要のはず。保護されている場合は disable 出来ていない事だ。


journaled soft-updates は background fsck は動かないので、それにともなう諸問題も無し。
journaled soft-updates は background fsck は動かないので、それにともなう諸問題も無し。

Navigation menu