7,166
edits
No edit summary |
No edit summary |
||
(255 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
*ethernetのmedia typeを明示的に設定 | |||
何故だか flow control が off になっていたので調べた | |||
https://gihyo.jp/admin/clip/01/fdt/201104/08 | |||
http://www.jp.freebsd.org/QandA/HTML/2460.html | |||
*ntpdで警告 | |||
<syntaxhighlight lang="text" enclose="div"> | |||
leapsecond file ('/var/db/ntpd.leap-seconds.list'): expired 19 days ago | |||
</syntaxhighlight> | |||
<syntaxhighlight lang="bash" enclose="div"> | |||
service ntpd fetch | |||
fetch: https://www.ietf.org/timezones/data/leap-seconds.list: Not Found | |||
</syntaxhighlight> | |||
あらら... | |||
/etc/rc.conf に | |||
<syntaxhighlight lang="text" enclose="div"> | |||
ntp_leapfile_sources="https://data.iana.org/time-zones/data/leap-seconds.list" | |||
</syntaxhighlight> | |||
追加して、オッケー | |||
*FreeBSD リハビリwメモ | |||
やってみたらやっぱりそうだったw | |||
<syntaxhighlight lang="bash" enclose="div"> | |||
protect -dip 1 | |||
</syntaxhighlight> | |||
*FreeBSD リハビリwメモ | |||
FreeBSD-EN-23:19.pkgbase | |||
をソースからやると make packages でこける。KERNCONF=foo を指定している場合は、make packages KERNCONF=foo | |||
あと ports からいれた モジュールはこけるので、make.conf から PORTS_MODULES を外しておく。 | |||
あぁそうか素カーネルでないと意味ないな。とりあえず作っておくか... | |||
*MacBook6,1 (13-Inch, Late 2009) unibody polycarbonate white 再生計画 その8 | |||
14.0-p1 が安定して稼働してるので、このハードウェアにあった設定を見直していたら、以前放置していた iSight がサックリ稼働した。 | |||
<syntaxhighlight lang="bash" enclose="div"> | |||
portmaster multimedia/libuvc multimedia/webcamd | |||
</syntaxhighlight> | |||
<syntaxhighlight lang="conf" enclose="div"> | |||
webcamd_enable="YES" | |||
webcamd_0_flags="-d ugen1.2" | |||
</syntaxhighlight> | |||
後は、/dev/video0 /dev/usb/1.2.* 等のパーミッションを devfs.conf でごにょごにょ か operator webcamd の group に所属。 | |||
よい機会なので Autoloading module は loader.conf で明示的に _load="YES" にした。 | |||
*FreeBSD リハビリwメモ | |||
FreeBSD 14.0 が出たので 13.2-p5 から、古式ゆかしくソースから upgrade した。いろいろハマり所があったのでメモ。 | |||
'''この作業をする前に、あらゆる ports で入れたものを rc.conf で OFF にする。(ここ重要。base system が提供しているライブラリとの不整合等があるので upgrade して make delete-old-libs 後に確認する事)''' | |||
'''(network系 daemon で crash (kernel panic) する。avahi-daemon は駄目っぽい。gdb がライブラリ不整合にハマっているので解析は後でする)''' | |||
make buildworld, make kernel した後 reboot していったん single user mode で起動。ここで あらゆる filesystem に対して full-fsck する事。 | |||
(結構壊れている場合があり、それが問題を起こすパターンもあるらしい) | |||
その single user で etcupdate -p して make installworld した後 reboot してまた single user mode で起動。もう一度 make kernel する。 | |||
(13.2 の libc のバージョンが古くて、最初の kernel をビルドする時に __cxa_thread_call_dtors: dtr 0xXXXXXX from unloaded dso, skipping のワーニングが出ていて気持ち悪いので、installworld 後に、改めて make kernel する)('''実際のところ、この場合も __cxa_thread_call_dtors が出た。(下にも書いたが)delete-old の後に、もう一度 make world して解消。''') | |||
etcupdate -B で「コンフリクトしてるから駄目よ」と言われたら、とりあえず h -> mf で古いのを生かす。(/etc/group と /etc/master.passwd)(先頭のコメント行が不要になるので、あとで手修正する)('''root の shell が (t)csh から sh に変更されたのに注意。スパルタンな仕様に戻ったw これも大きな仕様変更かも''')、これがおわったらいよいよ reboot して multi user mode に突入。(root の login shell を /bin/sh にしてからいろんな作業をすべきなのかもね) | |||
無事 マルチユーザーモードで上がってきたら check-old delete-old check-old-libs delete-old-libs (最後に check-old-dirs delete-old-dirs) | |||
('''delete-old して、root の login shell を /bin/sh にした後 stage1, stage2 みたいに、2回目の天地創造wしたら __cxa_thread_call_dtors のワーニングが消えた。これからが本当の地獄^h^h世界だw''') | |||
新しい世界wで、あらゆる ports の update する。(最初に pkg bootstrap -r) | |||
kernel driver 関連でこの修正に対応できていないのは自分でなんとかするw ('''__cxa_thread_call_dtors のワーニングが消えた状態では、互換機能が動くのでなにもしないでヨシ''') | |||
https://reviews.freebsd.org/rG2a99dd30dfaac98fea79f084b3a13c45199e1348 | |||
'''portsnap が削除された。'''git 使えてか... | |||
<syntaxhighlight lang="bash" enclose="div"> | |||
git clone https://git.FreeBSD.org/ports.git /usr/ports | |||
</syntaxhighlight> | |||
やたらとバイナリーパッケージ推しになってるが、無視して老人会モードで逝くw (油断してたら、せっせと手インストールした ports かなりの数が消されてしまったw) | |||
git pull のあと make index がいるのかね。fetchindex はまだ動作するね | |||
<syntaxhighlight lang="bash" enclose="div"> | |||
cd /usr/ports | |||
make fetchindex | |||
</syntaxhighlight> | |||
('''__cxa_thread_call_dtors のワーニングが消えた状態になったら''')過去にインストールした ports すべての再インストールが必須。 (portmaster の man page から) | |||
('''最低限 /usr/local/etc のバックアップしておくこと。/usr/ports/distfiles 以下のソースもとっておく方がトラフィック削減でベター''') | |||
<syntaxhighlight lang="bash" enclose="div"> | |||
cd /usr/ports/ports-mgmt/portmaster | |||
make install clean | |||
portmaster --list-origins > ~/installed-port-list | |||
cd /usr/ports | |||
git pull | |||
portmaster -ty --clean-distfiles | |||
portmaster -Faf | |||
pkg delete -afy | |||
rm -rf /usr/local/lib/compat/pkg | |||
# Back up any files in /usr/local you wish to save, | |||
# such as configuration files in /usr/local/etc | |||
# Manually check /usr/local and /var/db/pkg | |||
# to make sure that they are really empty | |||
# Install ports-mgmt/pkg and then ports-mgmt/portmaster. | |||
cd /usr/ports/ports-mgmt/pkg | |||
make install clean | |||
cd /usr/ports/ports-mgmt/portmaster | |||
make install clean | |||
# Remove both from ~/installed-port-list. | |||
# もし独自のパッチがある場合はそれも確認。 | |||
portmaster --no-confirm `cat ~/installed-port-list` | |||
</syntaxhighlight> | |||
(ports-mgmt/portmaster devel/git devel/ccache devel/gdb sysutils/screen security/sudo sysutils/htop sysutils/topless devel/dbus sysutils/powerdxx sysutils/smartmontools) | |||
これだけは先にインストールする。(今、(ccacheはいれたが)これを忘れて長時間の再ビルド中...最低でも screen は再インストールしておくべきだったと。何かあったときに attach できないおそれがw) | |||
'''kernel panic は ieee80211 あたりだとわかった。(avahi を疑っていたのだが、deny-interfaces=wlan0 したらサックリ動く)(ieee80211_crypto_ccmp.c 辺り) MacBook用wの bwn は 13.x では超安定してたのだが 14.0 では不安定。何でだろ〜^3 いろいろ調べたら、いろんな ieee 802.11 系で同じ症状らしい。まぁ昔から FreeBSD は Wi-Fi(NFSもw) には冷淡だし...''' | |||
(自分の環境は wlan に依存した構成になっているので、もう少し頑張る...)(修正がはいらないと駄目っぽいので、手持ちのOpenWrt機器のWi-Fi bridge経由でアクセスするか...) | |||
(手持ちの Ralink MT7601U で試してみるが、ieee80211_crypto_ccmp 辺りで落ちているのなら同じかもね->ドライバーが無かった。実験中のドライバーはあるが...) | |||
(まだブラックフライデー対応してたので、動きそうな古めのUSB Wi-Fiアダプターをいくつか買った。届いてからテストする) | |||
tp-link TL-WN725N (Realtek RTL8188EU) が届いて、サックリ安定して動きました!!!! (if_rtwn_usb_load="YES" rtwn-rtl8188eufw_load="YES") | |||
(country=JP してるのだが、変わってない希ガス)(ports の security/wpa_supplicant 使えば JP を認識した。これいろいろヤバいかもね。) | |||
最低限のカスタマイズ .shrc | |||
<syntaxhighlight lang="sh" enclose="div"> | |||
set -I | |||
set -E | |||
</syntaxhighlight> | |||
X11関連の設定も少し挙動が変わってた。fcitx が自動で起動しないので、~/.config/autostart/fcitx.desktop を作って Exec=/usr/local/bin/fcitx -r -d してオッケー | |||
14.0 関連のリンク Errata 系 | |||
https://www.daemonology.net/blog/2023-11-21-late-breaking-FreeBSD-14-breakage.html | |||
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=260841 | |||
*FreeBSD リハビリwメモ | |||
あーーーーーー kibana7 が削除されたが kibana8 が動かない! オワタ | |||
openjdk は 17 に統一して、node は 18 に固定して kibana8 に手を加えた。 | |||
/usr/ports/textproc/kibana8/Makefile.local を作成 | |||
<syntaxhighlight lang="make" enclose="div"> | |||
BUILD_DEPENDS= npm-node18>=9.7.2:www/npm-node18 | |||
RUN_DEPENDS= ${LOCALBASE}/bin/node:www/node18 | |||
USES= compiler:c++17-lang cpe nodejs:18,build,run python:build | |||
</syntaxhighlight> | |||
elastic stack version 8 にあげていろいろホゲった。混乱の極みw いろいろ認証を必須にした結果ぐちゃぐちゃ&細かなバグいっぱい。 | |||
https://discuss.elastic.co/t/curl-against-an-encrypted-elasticsearch-instance-with-certificate-verification/251503 | |||
https://discuss.elastic.co/t/import-ca-cert-as-privatekeyentry-to-http-keystore-solve-unable-to-create-enrollment-token-error/313780 | |||
僕の知っている君じゃないw | |||
最終的に filebeat の FreeBSD特有の不具合に阻まれたw | |||
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=272701 | |||
go の FreeBSD 対応漏れ...もう少し遊ぶw | |||
結局 filebeat は beats7 にはバージョンチェックがなさそうなので beats8 をやめて beats7 で逃げた。 | |||
*FreeBSD リハビリwメモ | |||
いろいろ忙しかったので一月ぐらい ports の更新をサボってたら、まぁ大変。FreeBSD の ports も地獄ですなぁw | |||
mozc 系での python3.10 の場合 AttributeError: module 'collections' has no attribute 'MutableSet' は、無理矢理FIX | |||
/usr/ports/devel/py-gyp/files/patch-pylib_gyp_common.py を作成 | |||
<syntaxhighlight lang="diff" enclose="div"> | |||
--- pylib/gyp/common.py.oig | |||
+++ pylib/gyp/common.py | |||
@@ -494,7 +494,7 @@ def uniquer(seq, idfun=None): | |||
# Based on http://code.activestate.com/recipes/576694/. | |||
-class OrderedSet(collections.MutableSet): | |||
+class OrderedSet(collections.abc.MutableSet): | |||
def __init__(self, iterable=None): | |||
self.end = end = [] | |||
end += [None, end, end] # sentinel node for doubly linked list | |||
</syntaxhighlight> | |||
'''./scripts/post-patch''' でうんぬんというやり方わすれた... | |||
*Upgrade ミスってったようだ | |||
13.2-RELEASE-p2 が出てので freebsd-update したが、そのあと ports でエラーが出た。ALLOW_UNSUPPORTED_SYSTEM を使えということで調べると、どうもシステム領域がちゃんと更新されていないようだ。(/usr/include/sys/param.h が古いのを発見)(おそらく 13.1 から 13.2 の更新のときミスったようだ) 仕方がないので、古式ゆかしいw make world をやってみた。(システムの cc が gcc から llvm clang に置き換わってるので、gcc よりもビルド時間がかかるかかる...) | |||
昔々 mergemaster してたのが、 etcupdate に変わって、そこのところぐらいであとは同じだな。 | |||
メモ的に... etcupdate は結構よしなにやってくれるようなので、念のために | |||
<syntaxhighlight lang="bash" enclose="div"> | |||
etcupdate diff > foo.diff | |||
</syntaxhighlight> | |||
しておいて、あとは引数なしで etcupdate 実行。そのあとはいつも通り check-old delete-old check-old-libs delete-old-libs | |||
*MacBook6,1 (13-Inch, Late 2009) unibody polycarbonate white 再生計画 その7 | |||
ports build するときのかなり熱を持つ。古いCPUなら powerd++ が良いということで導入したが想定通りの動きでもう手放せないw | |||
温度の閾値でCPUを clock down 出来る。 | |||
<syntaxhighlight lang="text" enclose="div"> | |||
powerdxx_enable="YES" | |||
powerdxx_flags="-n min -a hiadaptive -b adaptive -H 80C:100C" | |||
powerdxx_oomprotect="ALL" | |||
</syntaxhighlight> | |||
あと、おまじない的にこれもいるかも... | |||
<syntaxhighlight lang="text" enclose="div"> | |||
debug.acpi.suspend_bounce=1 | |||
</syntaxhighlight> | |||
年代物なので、CPUグリスがカピカピになってるにはずなので、補修しようかと調べたら、裏蓋をはずしただけで作業はできず、マザーボード外して裏側からヒートシンク外さないといけないことがわかったので、面倒くさいのでヤラナイw | |||
*FreeBSD リハビリwメモ | |||
GNU awk がほしくって whereis gawk したら、/usr/ports/japanese/gawk といわれて、これでおおはまり。 | |||
これじゃん /usr/ports/lang/gawk | |||
japanese/gawk は version 3, lang/gawk は version 5 | |||
*FreeBSD リハビリwメモ | |||
portsの名前が変わった影響がでた場合、MOVED の中身を見て、古い名前を pkg_deinstall -f {古い名前} で消してみると良いかも。今回ハマったのはこれで回避した。 | |||
<syntaxhighlight lang="bash" enclose="div"> | |||
pkg_deinstall -f atk at-spi2-atk | |||
</syntaxhighlight> | |||
<syntaxhighlight lang="bash" enclose="div"> | |||
has a missing dependency: atk | |||
</syntaxhighlight> | |||
っていくつかのportsででるが | |||
<syntaxhighlight lang="bash" enclose="div"> | |||
portmaster -o accessibility/at-spi2-core accessibility/atk | |||
</syntaxhighlight> | |||
これで一件落着w | |||
*FreeBSD リハビリwメモ | |||
freebsd-update でハマり中...仕方が無いので、 | |||
<syntaxhighlight lang="bash" enclose="div"> | |||
OK unload | |||
OK load /boot/kernel.old/kernel | |||
OK boot | |||
</syntaxhighlight> | |||
とりあえず、実験のあいだ kernel.old をどっかに保存する。カスタムカーネルをやめて GENERIC にするといけるので、カスタムカーネルをいろいろ試し中... | |||
<syntaxhighlight lang="bash" enclose="div"> | |||
make kernel __MAKE_CONF=/dev/null SRCCONF=/dev/null KERNCONF=MACBOOK | |||
</syntaxhighlight> | |||
これでも駄目だった。 | |||
nvidia の kernel driver があかんようだ。loader.conf から外して、rc.conf に kld_list="/boot/modules/nvidia.ko" 追加して解決。ふぅぅぅぅぅ | |||
何れにせよ "/boot/modules/" にある kernel module は rc.conf に記述したほうが安全かもね。駄目なのもあるけど。 | |||
*FreeBSD リハビリwメモ | |||
protect の確認 | |||
<syntaxhighlight lang="bash" enclose="div"> | |||
ps aux -o flags | |||
</syntaxhighlight> | |||
flag の上から3番目 | |||
*FreeBSD リハビリwメモ | |||
あら 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 | |||
この障碍が起きた場合は 3 回 fsck しないと復旧しないのが特徴。 | |||
回避策はいろいろ議論されている。 | |||
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=253968#c15 | |||
<syntaxhighlight lang="text" enclose="div"> | |||
Kirk McKusick freebsd_committer 2021-06-22 06:07:48 UTC | |||
We have had others report that they can reproduce the problem and that | |||
1) disabling journaling (but keeping soft updates) makes the problem go away; | |||
2) increasing the journal size moderates the problem; | |||
3) the patch proposed in https://reviews.freebsd.org/D30041 helps to moderate the problem. This patch is hopefully in a final round of testing before being committed. | |||
*** This bug has been marked as a duplicate of bug 255473 *** | |||
</syntaxhighlight> | |||
D30041 は MFC。13.1は適用 | |||
https://reviews.freebsd.org/D30041 | |||
<syntaxhighlight lang="text" enclose="div"> | |||
mckusick added a comment. May 17 2021, 6:43 PM | |||
I have been working with folks on these two bug reports which I suspect are caused by this problem: | |||
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=255473 | |||
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=255799 | |||
The problem may be solved by simply having a bigger journal. | |||
The size of the journal should be based on the number of operations that are expected to be done on it in a one-minute period. Unfortunately, tunefs has no direct way to compute this operation count since it knows neither how fast the disk can do transactions nor the capabilities of the system on which it will run. Tunefs is reduced to using the size of the filesystem as an indicator of how big to make the journal. | |||
The journal size ranges from 4Mb (SUJ_MIN) to 32Mb (SUJ_MAX) where the maximum is hit for filesystems of 4Gb and above. The maximum journal size was set more than a decade ago and was based on the number of operations expected to be done in a one-minute period on systems of that era. By my estimates it needs to be about 10x larger to meet that criterion today. | |||
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> | |||
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メモ | |||
いろいろ実験 | |||
<syntaxhighlight lang="bash" enclose="div"> | |||
camcontrol identify da0 | |||
smartctl -d sat /dev/da0 -s wcache,off | |||
camcontrol identify da0 | |||
</syntaxhighlight> | |||
<syntaxhighlight lang="bash" enclose="div"> | |||
smartctl -d sat /dev/da0 -g all | |||
</syntaxhighlight> | |||
<syntaxhighlight lang="bash" enclose="div"> | |||
kern.cam.da.0.flags: 0x3f40<WAS_OTAG,OPEN,SCTX_INIT,CAN_RC16,PROBED,DIRTY,ANNOUCNED> | |||
kern.cam.ada.0.flags: 0x1be3bde<CAN_48BIT,CAN_FLUSHCACHE,CAN_NCQ,CAN_DMA,WAS_OTAG,CAN_TRIM,OPEN,SCTX_INIT,CAN_POWERMGT,CAN_DMA48,CAN_LOG,CAN_WCACHE,CAN_RAHEAD,PROBED,ANNOUNCED,DIRTY,PIM_ATA_EXT,UNMAPPEDIO> | |||
</syntaxhighlight> | |||
この flag って誰がどこで決めてるのかごそごそ調べてみる... | |||
*FreeBSD リハビリwメモ | |||
gpart メモ | |||
<syntaxhighlight lang="bash" enclose="div"> | |||
gpart show da0 | |||
gpart delete -i 1 da0 | |||
gpart add -t freebsd-ufs -s 100G -a 4k da0 | |||
gpart add -t freebsd-ufs -s 831G -a 4k da0 | |||
gpart show da0 | |||
</syntaxhighlight> | |||
*FreeBSD リハビリwメモ | |||
あらためて softupdate 考 その2 | |||
外付け SSD をつかっていろいろ実験してみたが、結論はぐたぐた言わずに SU+J にしろ! | |||
実験中 background fsck から復帰したボリュームを umount できない場合が多く、安全な運用方法は、background fsck が終了しだい reboot を早く行う事。 | |||
(復旧中のファイルシステムが固まったら、最悪電源断とか reboot -qn で一旦リセットするしかない) | |||
まーグダグダ言わずに SU+J にしろ! (再) | |||
UFS snapshot が使えないってとこも、結局運用上停止メンテと同じ手間だとおもうので、もう UFS snapshot は諦める事。(か ZFS にしたまえw) | |||
自分自身の感想では ZFS は使いどころをよく考えで、使い分けるのがよさげ | |||
*FreeBSD リハビリwメモ | |||
いろいろ実験するためにアマゾンプライムデーで SanDisk Portable SSD を購入。 | |||
ses0 てなデバイスが見えたので、いろいろしらべた。smartd.conf みたら、 | |||
<syntaxhighlight lang="text" enclose="div"> | |||
# An ATA disk may appear as a SCSI device to the OS. If a SCSI to | |||
# ATA Translation (SAT) layer is between the OS and the device then | |||
# this can be flagged with the '-d sat' option. This situation may | |||
# become common with SATA disks in SAS and FC environments. | |||
# /dev/sda -a -d sat | |||
</syntaxhighlight> | |||
とあり、 | |||
<syntaxhighlight lang="bash" enclose="div"> | |||
smartctl -d sat -a /dev/da0 | |||
</syntaxhighlight> | |||
で確認できた。 | |||
*FreeBSD リハビリwメモ | *FreeBSD リハビリwメモ | ||
あらためて softupdate 考 | あらためて softupdate 考 | ||
Line 29: | Line 513: | ||
となった。-j は soft update のオプション扱いなようで、"-n" + "-j" で journaled soft-updates ということらしい。 | となった。-j は soft update のオプション扱いなようで、"-n" + "-j" で journaled soft-updates ということらしい。 | ||
softupdate はどんな状態で落ちても、ファイルシステムの一貫性は保たれて、障碍後の boot 時に(正しく umount されていないと) Automatic file system check(fsck on boot) で軽く修復後はすぐに mount できてすぐに使える利点がある。preen モード(手動 fsck が必要な重大な問題が無い場合)での修復・回収可能な削除領域を復帰させる(ガベッジコレクション的) fsck は必要で、それを background fsck と呼ばれる方法で稼働中に行える。しかし、この処理は一旦スナップショットをとり、裏で fsck を実行する仕組みになっており、この仕組みが大容量ボリュームの場合はとても重くて遅く、不具合といってよいほどにとらえられている。 | softupdate はどんな状態で落ちても、ファイルシステムの一貫性は保たれて、障碍後の boot 時に(正しく umount されていないと) Automatic file system check(fsck on boot) で軽く修復後はすぐに mount できてすぐに使える利点がある。preen モード(手動 fsck が必要な重大な問題が無い場合)での修復・回収可能な削除領域を復帰させる(ガベッジコレクション的) fsck は必要で、それを background fsck と呼ばれる方法で稼働中に行える。しかし、この処理は一旦スナップショットをとり、裏で fsck を実行する仕組みになっており、この仕組みが大容量ボリュームの場合はとても重くて遅く、不具合といってよいほどにとらえられている。(UFS snapshot とっている間はそのデバイスがロックされる。fsck中は処理が重い。) | ||
運用上よくある回避策は、background fsck の起動を(停止ではなく)抑制して、負荷の少ない真夜中に bgfsck を実行させる。もしログに重大な警告があれば、スケジュールメンテナンスを行うといった対応になる。(どのタイミングで停止メンテをするかを選択のする余地が出来る) | 運用上よくある回避策は、background fsck の起動を(停止ではなく)抑制して、負荷の少ない真夜中に bgfsck を実行させる。もしログに重大な警告があれば、スケジュールメンテナンスを行うといった対応になる。(どのタイミングで停止メンテをするかを選択のする余地が出来る) | ||
Line 43: | Line 527: | ||
あとはよくあったのは ストレージの I/O cache にだまされる問題。その場合は full fsck は必須。write cache は disable にするのが安全。 | あとはよくあったのは ストレージの I/O cache にだまされる問題。その場合は full fsck は必須。write cache は disable にするのが安全。(昨今のATAはこのあたりは気にしなく良いという話もある) | ||
このあたりは過去の知識。 | このあたりは過去の知識。 | ||
Line 56: | Line 540: | ||
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 62: | Line 546: | ||
mount -o rw {デバイス} {マウントポイント} | mount -o rw {デバイス} {マウントポイント} | ||
</syntaxhighlight> | </syntaxhighlight> | ||
★訂正↑のオペレーション(chflags noschg,nosunlnk)はちゃんと -j disable にしていたら不要のはず。保護されている場合は disable 出来ていない事だ。 | |||
journaled soft-updates は background fsck は動かないので、それにともなう諸問題も無し。 | journaled soft-updates は background fsck は動かないので、それにともなう諸問題も無し。 |