2024/06/11(火)FreeBSD で resolv.conf を自動更新しない
/etc/resolvconf.conf に以下の通り書く
resolvconf=NO
以下の方法では効果が無い
- rc.conf に resolv_enable=NO を書く
- resolvconf.conf の内容を resolvconf=NO ではなく resolvconf NO と書くと暴走する。なぜかプロセスが大量に起動してセルフDOSになるので要注意。
愚痴
公式ハンドブックだと、この方法にたどりつけない。なんでや。rc.conf(5) などにも記載が無い。
/etc/rc.d/resolv を読むだけではここには到達できない。
resolvconf.conf のマニュアルにしか書いてない。
そしてこの resolvconf がどういう契機で起動するかさっぱりわからない。
たぶん ipv6 accept_rtadv してるので router advertisement でのIPv6 link local アドレス自動付与時になってると思うのだが、どこにその設定が書かれているのか分からない。
検索すると chflags して書き換えられ無いようにする、dhclient.conf ファイルを編集するなどの泥臭い努力の跡がうかがえるが、
すべて手動でのIPアドレス設定時にはどの方法も対象外である。
参考URL: https://forums.freebsd.org/threads/etc-resolv-conf-reverting-after-rebooting-how-to-set-custom-dns-servers.83986/
2024/03/30(土)FreeBSD gmirror 拡張方法メモ
容量の大きいHDDでメンバーを置き換えて、最終的に大きいミラーボリュームにする作業の手順メモ。
本メモ注意点
- 各手順では、ステータス表示コマンドなどは省略している。
- 本手順では、gmirror で構成したミラーデバイスに対してGPTパーティショニングをして使用している例となる。
- 個別HDDを先に GPT パーティションで区切って、各パーティションを gmirror のメンバーとする場合は若干手順が異なる。
本手順の例示構成 HDD1 : /dev/ada0 HDD2 : /dev/ada1 ミラーを構成するメンバー (/dev/ada0 + /dev/ada1) ↓ gmirror (mirorr/data2) ↓ GPTパーティション(gpart) ↓ UFS2ファイルシステム (mirror/data2p2)この構成で、ada0, ada1 を大きいHDDに置き換えて、ファイルシステムを拡張する。
- ディスク全体を1つのファイルシステムとするときは、GPT(MBR)パーティションを使用しての管理は必ずしも必要ではない。
- 高いサーバなら電源投入したままHDDを差し替えてもOKだと思うが、私の作業対象はそこまで高くないので、HDD交換時は電源を落として作業をしている。
- 高いサーバでもディスク交換時は spindown や eject、交換後の rescan などの手順が追加で必要かと思われる。
- IPL領域を含むディスクの場合(起動用ディスクがmirrorの場合)、1本目を交換してから電源を投入した場合に、2本目のディスクから正常に起動するかどうかはBIOS(or uEFI)の出来による。
- 1本目のディスクが真っ新なときにBIOSが2本目以降の起動領域を探してくれる必要がある。無理な場合は正常なディスクを1本目に、真っ新なHDDを2本目に入れ替えて起動する必要があるかもしれない。
作業時に取得しておいた方が良い情報など
面倒なので各手順の所には記載していませんが実際には各コマンドの前後に色々と情報を取得しています。ディスク情報関係
dmesg | grep ^ada camcontrol devlist geom disk list smartctl -a /dev/ada0 smartctl -a /dev/ada1 cat /etc/fstabミラーの情報関係
gmirror list gmirror statusパーティション情報関係
gpart show gpart listファイルシステムの空き容量等
df -h df -g df -iその他 GEOM 関連ログ
grep GEOM /var/log/messages
作業順
- 念のため 別のPCを使って GEOM 情報を削除する
- HDD交換1本目
- ミラーからメンバーを外す
- サーバ停止
- HDDを入れ替える
- サーバ起動
- ミラーにメンバーを追加する
- 同期完了を待つ
- HDD交換2本目
- ミラーからメンバーを外す
- サーバ停止
- HDDを入れ替える
- サーバ起動
- ミラーにメンバーを追加する
- 同期完了を待つ
- サイズ拡張
- gmirror サイズ拡張
- GPT パーティションサイズ拡張
- UFS2 ファイルシステム サイズ拡張
念のため 別のPCを使って GEOM 情報を削除する
やらなくてもたぶん大丈夫かなと思ってるが、新しく使用するHDD が過去にgmirror メンバーだった場合で、gmirror remove や gmirror destory し忘れていたHDDの場合に事故ると困るので念のためgeom 情報を強制的に削除する。
(新品HDDに対しては、もちろんこの作業は不要です)
手順は省略
dd で先頭100MB位を /dev/zero で上書きするだけ。
個別の手順で使用するコマンドの説明
ミラーからメンバーを外す
既存の gmirror のメンバーとなっているディスクを、ミラーから外す書式: gmirror remove ミラー名 メンバー名 例: gmirror remove -v data2 ada0
実行例 (gmirror remove)
# gmirror status data2 Name Status Components mirror/data2 COMPLETE ada0 (ACTIVE) ada1 (ACTIVE) # # gmirror remove -v data2 ada1 Done. # # gmirror status Name Status Components mirror/data2 COMPLETE ada0 (ACTIVE) #
ミラーからメンバーを外し忘れてディスクを抜いて DEGRADED になったステータスを修正する
既存の gmirror のメンバーとなっているディスクを、ミラーから外し(remove)忘れてHDDを抜いて起動すると、ミラーのステータスが DEGRADED に変わる。
このステータスを正常扱いにするには、すでに抜いたHDDメンバーの事を忘れさせる必要がある。
書式: gmirror forgetミラー名 例: gmirror forget -v data2
forget すると、間違えて抜いてしまった場合に挿しなおしても、もう同期再開されない。
誤って forget した場合は、新しいメンバーとして insert する必要がある。
実行例 (gmirror forget)
# gmirror status data2 Name Status Components mirror/data2 DEGRADED ada1 (ACTIVE) # # gmirror forget data2 # gmirror status data2 Name Status Components mirror/data2 COMPLETE ada1 (ACTIVE) #
ミラーにメンバーを追加する
書式: gmirror insert ミラー名 メンバー名 例: gmirror insert -v data2 ada1
実行例 (gmirror insert)
# gmirror status Name Status Components mirror/data2 COMPLETE ada0 (ACTIVE) # gmirror insert -v data2 ada1 Done. # gmirror status Name Status Components mirror/data2 DEGRADED ada0 (ACTIVE) ada1 (SYNCHRONIZING, 0%) #
gmirror サイズ拡張(最大サイズ)
ディスクの余っている最大サイズまで、gmirror のサイズを拡大する。書式: gmirror resize ミラー名 例: gmirror resize -v data2
実行例 (gmirror resize)
# gmirror list data2 Geom name: data2 State: COMPLETE Components: 2 Balance: load Slice: 4096 Flags: NONE GenID: 0 SyncID: 2 ID: 706164073 Type: AUTOMATIC Providers: 1. Name: mirror/data2 Mediasize: 4000787029504 (3.6T) Sectorsize: 512 Stripesize: 4096 Stripeoffset: 0 Mode: r1w1e2 Consumers: 1. Name: ada1 Mediasize: 16000900661248 (15T) (略) # # gmirror resize -v data2 Done. # # gmirror list data2 Geom name: data2 State: COMPLETE Components: 2 Balance: load Slice: 4096 Flags: NONE GenID: 0 SyncID: 2 ID: 706164073 Type: AUTOMATIC Providers: 1. Name: mirror/data2 Mediasize: 16000900660736 (15T) Sectorsize: 512 Stripesize: 4096 Stripeoffset: 0 Mode: r2w2e3 Consumers: 1. Name: ada1 Mediasize: 16000900661248 (15T) (略) #
GPT パーティションサイズ拡張
GPT パーティションでパーティションを管理している場合、ファイルシステムの拡張前にパーティションサイズを拡張する。(MBRパーティションでも同様)
書式: gpart show gpart resize -i インデックス番号 mirror/data2 例: gpart resize -i 2 mirror/data2
実行例 (gpart resize)
# gpart show => 40 31251759024 mirror/data2 GPT (15T) 40 4056 - free - (2.0M) 4096 125829120 1 freebsd-swap (60G) 125833216 28672 - free - (14M) 125861888 7688159232 2 freebsd-ufs (3.6T) 7814021120 23437737944 - free - (11T) # gpart resize -i 2 mirror/data2 mirror/data2p2 resized # # gpart show => 40 31251759024 mirror/data2 GPT (15T) 40 4056 - free - (2.0M) 4096 125829120 1 freebsd-swap (60G) 125833216 28672 - free - (14M) 125861888 31125897176 2 freebsd-ufs (14T) #
UFS2 ファイルシステム サイズ拡張
最後にファイルシステムを拡張する。サイズ未指定時は最大サイズを確保する。
書式: growfs マウントポイント名 growfs デバイス名 例: growfs /home
実行例 (growfs)
# growfs /home Device is mounted read-write; resizing will result in temporary write suspension for /home. It's strongly recommended to make a backup before growing the file system. OK to grow filesystem on /dev/mirror/data2p2, mounted on /home, from 3.6TB to 14TB? [yes/no] yes super-block backups (for fsck_ffs -b #) at: 7689935040, 7691762496, 7693589952, 7695417408, 7697244864, 7699072320, 7700899776, 7702727232, 7704554688, 7706382144, 7708209600, 7710037056, 7711864512, 7713691968, 7715519424, 7717346880, 7719174336, 7721001792, 7722829248, 7724656704, 7726484160, 7728311616, 7730139072, 7731966528, 7733793984, 7735621440, 7737448896, 7739276352, 7741103808, 7742931264, 7744758720, 7746586176, 7748413632, 7750241088, 7752068544, 7753896000, 省略 31077716928, 31079544384, 31081371840, 31083199296, 31085026752, 31086854208, 31088681664, 31090509120, 31092336576, 31094164032, 31095991488, 31097818944, 31099646400, 31101473856, 31103301312, 31105128768, 31106956224, 31108783680, 31110611136, 31112438592, 31114266048, 31116093504, 31117920960, 31119748416, 31121575872, 31123403328, 31125230784 #どうでもいいけど super-block backups 多すぎでは・・・?
2024/03/24(日)FreeBSD で HDD の自動spindownを解除する方法
> Power management settings, including timers, APM, and EPC settings are not persistent,
2021/02/22(月)FreeBSD 日本語マニュアル閲覧環境の整備
FreeBSD日本語マニュアル
現状、最新のFreeBSD日本語マニュアルは小金丸さんという方がhttp://www.koganemaru.co.jp/
で作成され、公開されています。
ありがたいことです。
本記事では、
- 上記サイトで公開されている整形済みマニュアルページ(本記事では、catページと呼ぶ)
- FreeBSD 標準の man コマンド
- 日本語表示可能なページャ(テキストビューア)
本ページでは、ja-groff などの整形ツールをインストールせずに済む方法を紹介します。
マニュアルのインストール
日本語マニュアルを読むだけの場合、man(未整形状態)ではなく cat ページ(整形済み)だけでしたら、ja-groff 等の整形ツールを
インストールせずとも表示可能なので、cat ページを利用します。
pkg add -M ja-cat-doc-12.2.20201029.amd64.txzあるいは
pkg add -M ftp://ftp.koganemaru.co.jp/pub/jman12/ja-man-doc-12.2.20201029.amd64.txzのように、-M (依存関係無視オプション) 付きで pkg add してください。
pkg add が完了すると、 /usr/share/man/ja 以下に cat ページがセクション毎のディレクトリに分かれて配置されます。
ページャとして、ja-less や lv などの日本語を推測して表示可能なものをインストールしてください。
pkg install ja-less
設定
FreeBSD 標準の man コマンドは、環境変数 LANG / LC_CTYPE に応じたディレクトリからマニュアルページを探してくる機能があります。自分が使用するロケールに symlink します。
# cd /usr/share/man # ln -s ja ja_JP.UTF-8 # ln -s ja ja_JP.eucJPcat ページ自体は eucJP でエンコードされていますが、
cat ページは整形されずにそのまま PAGER に渡されますので、
気にせずリンクしてしまいます。
ページャの設定
例として jless (ja-lessパッケージ) コマンドを使用する方法を記載します。jless は日本語文字コードを推測して表示できます。(他には lv 等もあります)。
環境変数を以下のように設定します。
JLESSCHARSET=japanese LC_CTYPE=ja_JP.UTF-8 PAGER=jless export JLESSCHARSET LC_CTYPE PAGER
- JLESSCHARSET=japanese
- jless コマンドに、入力データは日本語であると指示します
- LC_CTYPE
- 端末の文字コードを指定します。この環境変数と、シンボリックリンクを張る名前は同じにします。
- eucJPやUTF-8など、複数のキャラクターセットを使用している場合は、複数のシンボリックリンクを張ります。
- PAGER
- manコマンドのページャとして jless を指定します。
(特に理由が無い限り、man.conf や環境変数 MANPATH は設定しないでください。)
また、この方法では、man -o ls のように、オリジナルの英語版マニュアルページを表示することも可能です。
2007/11/15(木)FreeBSD 7.0
Introducing FreeBSD 7.0
CPU 数に対してよくスケールアウトしている。
また、CPU の数より多いスレッドが動作しても、ほとんどパフォーマンスの劣化が見られない。
非常に良い出来になっている模様。
Solaris10 が比較対照に無いのはご愛嬌か?結構速いと思うんだけどね。