随分前にLinuxマシンをNFSサーバとして使うようなことをしていた気がするけど、今度はOpenBSDマシンをNFSサーバにしてみようかなということで。NFS server on OpenBSDそのまんまではあるのですが…
サーバ側の設定ファイルは二つ。一つ目の/etc/exportsはこんな感じに記述。192.168.xxx.yyyはクライアントのIPアドレスで。
/usr/src /usr/ports -maproot=root 192.168.xxx.yyy
|
FreeBSDでは複数のディレクトリを公開する場合は一行にまとめないといけないとNFS サーバーの設定、 ディスクレス NetBSD HOW-TOに書かれていますが、OpenBSDのexports(5)の例でも一行にまとまっているのでこのスタイルで。あと、-maproot=rootを記述しないとクライアント側がrootであってもサーバ側の(root権限が必要な)ファイルへアクセスできません。
二つ目、/etc/rc.conf.localはこれを追加。
portmap_flags=""
mountd_flags=""
nfsd_flags="-tun 4"
|
nfs_server="YES"を指定した場合、/etc/rc.d/rc.subrの_rc_quirks()により、mountd_flags=""およびnfsd_flags="-tun 4"が指定されたものとみなされます。
クライアント側は、/etc/fstabにマウント先を記述するだけ。
192.168.aaa.bbb:/usr/src /usr/src nfs rw,nodev,nosuid,soft,intr 0 0
192.168.aaa.bbb:/usr/ports /usr/ports nfs rw,nodev,nosuid,soft,intr 0 0
|
192.168.aaa.bbbはサーバのIPアドレス。これもOpenBSDのfstab(5)にある例をそのまま引っ張っているので、rw,nodev,nosuid,soft,intrそれぞれの意味についてはGoogle等で調べてみてください(と放り投げる)。
Jumbospotの動作するBananpi BPI-P2をOpenBSD-6.8にアップデートしてみたものの、portsのバイナリパッケージが公開されなくなってしまったのか、自力でどうにかしないといけない状況にあります。microSDカード上でビルドするのもかなりしんどいので、NetBSDなりAlpine Linuxなりに乗り換えようかと考えていたのですが、ネットワークの口が付いているのでまずはNFS上で作業するとどんな感じになるか調べてから決めることにしました(なので、/usr/src, /usr/portsをマウントさせている)。
とりあえず、OpenBSD-6.8/armv7のカーネルビルドで評価してみましょうか。
- NFS上でビルド
- 38m06.08s real 32m45.98s user 2m52.84s system
- microSD上でビルド
- 37m20.78s real 32m40.41s user 2m39.07s system
あんまり変わらない、というのは…ストレージよりもむしろCPUの性能が低いと読み解くべきですかね(シングルコア動作ですし)。ソースコードのtar ballを展開するといった操作はmicroSD上でやるよりもNFSサーバ上でやってしまう方がはるかに快適なので、NFS併用による何かしらの利点はある…と思いたいです。54.25kg(20:40)