FreeBSD 11.0以降では、TCPのCongestion Control機構としてDC-TCPが利用できる。 これを利用する設定をいかに記載しておく。
なお、Install時の標準は、NewReno。
# kldload cc_dctcp # sysctl -w net.inet.tcp.cc.algorithm=dctcp # sysctl -w net.inet.tcp.ecn.enable=1
# sysctl net.inet.tcp.ecn.enable 1
/boot/loader.conf
cc_dctcp_load="YES"
/etc/sysctl.conf
net.inet.tcp.cc.algorithm=dctcp net.inet.tcp.ecn.enable=1
起動時にこんなエラーがでた。
# fsck -y /dev/ada0p1 ** /dev/ada0p1 USE JOURNAL? yes ** SU+J Recovering /dev/ada0p1 ** Reading 33554432 byte journal from inode 5 RECOVER? yes ** Building recovery table. ** Resolving unreferenced inode list. ** Processing journal entries fsck_ufs: Directory 43643675 name not found #
これが出ると、fsckで復旧できない。
このada0p1はJournalをenableにしており、/にmountしてあった。
対処は
これで問題が解決した。
作成したFreeBSD 11.0にHDDを追加した時に行う作業。
さすがに bsdlabel/disklabel の時代でもあるまいということで、GEOM を使ってみる。
reboot
するなどして) 接続した Disk を認識させる/dev/ada1
としよう。gpart show
を実行し、 ada1
が見えているかを確認# gpart show => 34 41942973 ada0 GPT (20G) 34 1024 1 freebsd-boot (512K) 1058 39844864 2 freebsd-ufs (19G) 39845922 2097084 3 freebsd-swap (1.0G) 41943006 1 - free - (512B)
ada1
は見えないgpart create -s GPT ada1
を実行。ada1 created
などと出力されればOK# gpart show => 34 41942973 ada0 GPT (20G) 34 1024 1 freebsd-boot (512K) 1058 39844864 2 freebsd-ufs (19G) 39845922 2097084 3 freebsd-swap (1.0G) 41943006 1 - free - (512B) => 40 209715120 ada1 GPT (100G) 40 209715120 - free - (100G)
gpart destroy ada1
などとすればよいgpart add -t freebsd-ufs ada1
を実行すると、 Partition を確保する。# gpart show ada1 => 40 209715120 ada1 GPT (100G) 40 209715120 1 freebsd-ufs (100G)
gpart modify -i 1 -l update-data ada1
などとするgpart show
した時の 左から3番目のフィールド(通常は1〜3程度だろう)の値を指定するgpart show -l
などとする# gpart show -l => 34 41942973 ada0 GPT (20G) 34 1024 1 (null) (512K) 1058 39844864 2 (null) (19G) 39845922 2097084 3 (null) (1.0G) 41943006 1 - free - (512B) => 40 209715120 ada1 GPT (100G) 40 209715120 1 update-data (100G)
gpart delete -i 1 ada1
などとするnewfs -J -U /dev/ada1p1
で、gjournal + soft-update を On にするtunefs -p /dev/ada1p1
などとする# tunefs -p /dev/ada1p1 tunefs: POSIX.1e ACLs: (-a) disabled tunefs: NFSv4 ACLs: (-N) disabled tunefs: MAC multilabel: (-l) disabled tunefs: soft updates: (-n) enabled tunefs: soft update journaling: (-j) disabled tunefs: gjournal: (-J) enabled tunefs: trim: (-t) disabled tunefs: maximum blocks per file in a cylinder group: (-e) 4096 tunefs: average file size: (-f) 16384 tunefs: average number of files in a directory: (-s) 64 tunefs: minimum percentage of free space: (-m) 8% tunefs: space to hold for metadata blocks: (-k) 6408 tunefs: optimization preference: (-o) time tunefs: volume label: (-L)
freebsd-update fetch
を実行してfreebsd-update install
するのが基本freebsd-update rollback
するFreeBSDの起動時処理を大雑把に言うと以下のとおり
各種daemonの起動には、/etc/rc.d 及び /usr/local/etc/rc.d に格納されている各種起動scriptを利用する。 最近のFreeBSD (おそらくFreeBSD 9.0以降) では、このscriptを呼び出すために、service コマンドが実装されている。起動時のscriptの実行順序を確認するには、service -eを実行すると良い
このscriptは、自身が実行されるタイミングを記載することが可能。
# REQUIRE: foo bar
このScriptはfoo,barが実行されたことを要求する# BEFORE: foo bar
このScriptはfoo,barが実行される前に実行されなければならない従って、起動順序などを細かく考慮したい場合には、
必要がある。