Soft updates Install

FreeBSD のデフォルト設定では、ハードディスクへの書き込みに書き込みが完了するまで待ってから次の処理に移る為、Linux 等よりもディスクアクセスが遅くなっている。
ただ非同期 I/O を使うのならば、async でもよいが、ここではより高速化される Soft updates を使ってみようと思う。

インストール

ソースの用意

Soft Updates を利用するには、カーネルの再構築が必要となる。

また、その際に、ソースが必要なので /stand/sysinstall から、[Configure] - [Distributions] - [src] で、contrib と sys をチェックし、必要なソースをインストールする。

ソースの展開ができたら、Soft updates のソースをリンクしておく。

# cd /usr/src/sys/ufs/ffs
# ln -s ../../contrib/softupdates/*.c .
# ln -s ../../contrib/softupdates/*.h .

カーネルの再構築

カーネルコンフィグレーションファイルに、options SOFTUPDATES を書き加える。

# cd /usr/src/sys/i386/conf
# vi [your config file name]
options         SYSVSHM                 #SYSV-style shared memory
options         SYSVMSG                 #SYSV-style message queues
options         SYSVSEM                 #SYSV-style semaphores
options         SOFTUPDATES             #Softupdates

カーネルコンフィグレーションファイルを変更したら、カーネルの再構築を行う。

# cd /usr/src/sys/i386/conf
# config [your config file name]
# cd ../../compile/[your conf file name]
# make depend all install

ここで再起動を行い、新しいカーネルがきちんと動作することを確認しておく。

# shutdown -r now

対象ファイルシステムの確認

ファイルシステムを確認しておく。

# cat /etc/fstab
# Device     Mountpoint  FStype  Options      Dump  Pass#
/dev/wd0s2b  none        swap    sw           0     0
/dev/wd0s2a  /           ufs     rw           1     1
/dev/wd0s2f  /usr        ufs     rw           2     2
/dev/wd0s2e  /var        ufs     rw           2     2
/dev/wd4s1   /flash      msdos   rw,noauto    0     0
/dev/acd0c   /cdrom      cd9660  ro,noauto    0     0
/dev/wd0s2b  /tmp        mfs     rw,-s=32768  0     0
proc         /proc       procfs  rw           0     0

Soft updates は FStype が ufs のファイルシステムに設定できる。
また、書き込みが発生しないファイルシステムに対しては効果が無い。

念のため / には設定しないで、/dev/wd0s2e, /dev/wd0s2f に設定することにする。

Soft updates の適用

ファイルシステムへの設定は、ファイルシステムをマウントしていない状態で行わなければならない。
shutdown now でシングルユーザーモードに移行して、マウントを解除する。

# shutdown now
Enter full pathname of shell or RETURN for /bin/sh:{enter]
# umount -a

次に、ファイルシステムに対して、tunefs -n enable を実行する

# tunefs -n enable /var
tunefs: soft updates set
# tunefs -n enable /usr
tunefs: soft updates set

設定が終わったらシングルユーザーモードを抜ける。

# exit

マルチユーザーモードに移行するので、ログインする。
Soft updates が有効になったか確認してみる。

$ mount
/dev/wd0s2a on / (ufs, local, writes: sync 12 async 2883)
/dev/wd0s2f on /usr (ufs, local, soft-updates, writes: sync 864 async 25920)
/dev/wd0s2e on /var (ufs, local, soft-updates, writes: sync 1758 async 10843)
mfs:31 on /tmp (mfs, asynchronous, local, writes: sync 5 async 82)
procfs on /proc (procfs, local)

参考文献

  1. /usr/src/sys/ufs/ffs/README.softupdates
  2. /usr/src/sys/contrib/softupdates/README
  3. Running-Dog.net
    「FreeBSD 3.2-RELEASE セットアップ」Soft Updates って何ぃ?
  4. 「Personal UNIX No.3」 p.68
    Linux/FreeBSD カスタマイズ入門 FreeBSDのカスタマイズ 著者 : 五反田 秋彦
    出版社 : 毎日コミュニケーションズ ISBNコード : 4-8399-0266-6 価格 : 1,400円 + 税
  5. 「FreeBSD Express」 p.126 Kernel 再構築
    出版社 : 毎日コミュニケーションズ ISBNコード : 4-8399-0421-9 価格 : 1,800円 + 税