PR

FreeBSD NFS サービス v3

FreeBSD
記事内に広告が含まれています。

今回は台湾へネットワーク機器のリプレースで出かけてきました。この時就航後初めて B787 に乗ることになりました。機内はまだ真新しい感じでシートの乗り心地も、同じエコノミーでも他機とは違うように感じました。目的地は台湾桃園空港です。台北市街にも元の国際空港 ( 松山空港 ) がありここからだとオフィスまで歩いてゆくことも可能なくらいの距離なのですが、桃園空港からだとタクシーで1時間程度になります。初めて台湾を訪れたときには、この松山空港を使用したのですが、当時は羽田からの便しかなく、日本国内で時間がかかるか、台湾国内で時間がかかるかの選択が必要でした。この状況は現在も変わっていないようです。

方針

以前の記事では File System Full となったことにより、ファイルシステムを大きくしました。ファイルシステムを大きくするのはとても簡単です。一方、ファイルシステムを小さくするのは非常に危険な操作となります。以前の記事で使用した growfs のマニュアルを見ると、大きくする方向に使用できると書かれています。つまり、小さくする方向には使用できないということになろうと思います。実は別の問題が起きかけていまして、そちらも解決しなければなりません。その問題はと言いますと、この記事を書くのに使用してる Windows 11 のラップトップのディスクが残り少なくなってきまして、ちょっと身動きがとりにくくなってきました。以前の記事でディスクが安くなってきたので巨大なファイルシステムを簡単に構築できると言っておきながらディスクがなくなりかけとはこれいかに 🙂 でも事実なのです。私が仕事をし始めた頃と比べると、はるかにディスクドライブは安くはなりましたが、個人にとってこの手の出費は避けたいところです 🙂 そこで、今回は NFSv3 を使用して、Windows 11 のディスクに空きを作ってゆきたいと思います。基本的にファイルシステムを小さくするには小さくしようとしているファイルシステムの使用状況を知らなければなりません。この状況を確認しながらファイルシステムを大きくしたり、小さくしたりできるソフトウェアに有名どころで Partition Magic などがあります。今も昔も小さくするのは難しかったので、Windows PC のパーティションを小さくする場合はこのようなツールを上司に要求して買ってもらっていました 🙂 そう、ただではないのです。ですので無い袖は頭で振れるようにしたいと思います 🙂

まずは方針を立てたいと思います。pokemon さん、 package さん、そして dhcp さんで共通の部分を NFS サーバで共有することで使用済みディスク領域を少なくします。NFS サーバとして使用するマシンは、仮想マシンからディスク領域を Windows OS に返したいので、32bit 機の dhcp さんとします。まずは一番ディスクファイルの小さい pokemon さんから行いたいと思います。まず何がシステム上で動いているかを確認します。/etc/rc.conf を眺めてみると、データとして再生が難しいファイルを持っているソフトウェアはないことがわかります。DNS は私が dhcp さんをアップデートしない限り変更は起こりませんし、NIS にしても、マスターサーバから持ってくれば良いだけです。次にファイルシステムの何を消して小さくできるか考えます。これも ls でファイルを眺めてゆくと /usr/ports/distfiles と /home が共通していて消しても問題はありません、というか、別々よりは便利になります。ということで、これらを dhcp さんから NFS で共有するようにします。

/etc/exports

では最初に、dhcp さんで NFSv3 マウント要求を受け付けるように NFS サービスをセットアップします。/etc/defaults/rc.conf の NFS の部分を眺めて、必要なオプションを /etc/rc.conf に転記して、”NO” を “YES” に変更して NFSv3 サーバが動くようにします。加えて、/etc/exports ファイルにどこをどのようにマウントできるのかを記述します。こんな感じです。/etc/exports の各オプションの意味は、NFS マウントを許可するのは /home と /usr/ports/distfiles で認証は Kerberos か UID/GID を用い、root によるアクセスはそのまま root のアクセスとして受け入れる。そして、マウントできるのは pokemon さんと package さんだけとするという意味です。

ファイルフォーマットにエラーがなさげであれば dhcp さんを再起動します。

ムッ 🙁 何にもエクスポートされていません。調べてみましたが /home は /usr/home へのシンボリックリンクでした。ディレクトリに作り直します。

これで OK のはずなので、もう一度再起動します。そして /home と /usr/ports/distfiles がマウント OK のリストに見えるか確認します。

/etc/fstab

OK のようなので、pokemon さんから dhcp さんの /home と /usr/ports/distfiles がマウントできるかコマンドから確認します。OK のようなら /etc/fstab を編集して自動でマウントできるようにします。

こんな感じです。各オプションの意味は、NFS は V3 を使って、認証は通常の UID/GID により、トラブった時に Ctrl-C でインタラプトできるという意味です。これらのオプションはサーバーとクライアントの間のネットワークの状況により、各種オプションから良いと思うオプションを追加してゆけばよいと思います。

ファイル移動

NFS マウントしてしまうと、ローカルのファイルシステムは見えなくなるので、マウントする前に pokemon さんから dhcp さんに移動してしまいます。まずは、/usr/ports/distfiles のファイルを pokemon さんから dhcp さんへ移動するために、/usr/ports/distfiles の内容を /tmp へアーカイブします。圧縮して 400MB 程度です。思ったより少かったです。元々ポーツではなくパッケージを使って作ったシステムなので、ソースコードはほとんどないのだと思います。

次は作成したアーカイブを dhcp さんの /usr/ports/distfiles へ展開します。sftp だけでもできるとは思いますが、ftp だと小技が効きますので、ファイアウォールの内側ではよく使います。起動方法は簡単で、/etc/rc.conf に inetd_enable=”YES” を追加して、/etc/inetd.conf の ftp のコメントを外します。IPv4 と IPv6 の2行ありますので両方とも生かしておきます。そのうえで、システム全体を再起動か sh /etc/rc.d/inetd start を実行します。因みにファイアウォールの外側では anonymous ftp 以外使わないほうが良いと思います。パスワードが平文でダダ洩れになりますので。

次は /home の移動ですが、/home の使い方は ksh の初期設定ファイルと、SSH の公開キーしか置いていません。ですので、単に削除してマウントします。手動で全て OK であれば、再起動して自動で期待通り動くか確認します。

全て期待通りで OK と言えそうです。

全く同じ手順を package さんで行います。スクリーンショットは pokemon さんとダブりますので、割愛いたします。大きな違いは /usr/ports/distfiles が 1.5GB 程度であることだけです。pokemon さんに追いつきました。こんな感じです。

NFS サーバの dhcp さんでも確認してみます。

これで基本的に共通の部分は NFS サーバへ移動が完了しました。ご参考までの実験です。growfs でファイルシステムサイズを小さく指定してみました。結果、マニュアルに書かれている通り怒られました。

就航して間もないことから CA さんからのメッセージが各シートに置かれていました。どう見ても手書きのメッセージに見えます。ちょっと気分が良くなります 🙂


この日の上空は雲一つない快晴で、真新しい主翼が太陽に輝いて見えました。

巨大な船が海上に見えます。ちょっと見にくいですが、米空母でしょうか?いつもお世話になっております 🙂

宿の窓から松山空港方面を見たところです。松山空港が右上に見えています。

1週間の滞在後の帰りの便も偶然に B787 になりました。帰りのタクシーで行き先を台湾国際空港と告げてお願いしたのですが、松山空港に連れてゆかれました。台湾桃園空港と言わないと松山空港へ連れてゆかれるようです。帰りも晴天に恵まれ種子島や屋久島が上空から認識できました。地図で見る形そのままなので寝ずに外ばかりを見えいたことを覚えています。

以下広告


コメント