FreeNASには NFSサーバー機能もありますので、それも使ってみます。
こんにちは。
FreeNAS(今はTrueNASと改名しています)で iSCSIデバイスを作る過程で、「NFS機能もあるのだなぁ」と気付いていました。
複数の NGINXサーバーで同じ内容を表示したいとかの用途で NFSを使いたい時に Ubuntu Serverにやらせても良いのですが、FreeNASにやらせられるなら メモリも CPUも食わないので、貧弱な環境で検証するのには都合が良いです。
そこで大したネタではないですが、FreeNASでNFSサーバーを構成して、Ubuntu Serverでネットワークマウントしてみたいと思います。
環境は以下の通り。
- FreeNAS 11.3
- Ubuntu Server 22.04.1
では、まず FreeNASの設定から。
FreeNASのインストールについては「ソフトウェアiSCSIデバイス(FreeNAS)(中編)」に書いていますので、それを参照して下さい。
2台目のディスク(da1:10GB)がある前提となります。
NFSで提供するディスクは、FreeNASの OS(FreeBSDがベース)にファイルシステムとして組み込まれている必要があります。
メニューから[共有]-[Unix共有(NFS)]を選択してみて下さい。
今は何もないですね。
右上の追加を押します。
この画面になります。
/mntはデフォルトで出てくるところを見ると、/mntとサブディレクトリを NFSに供せるようです。
ただ /mnt は システム用である 1台目のディスク(da0)にありますので、ここを共有させるべきではありません。
なので 2台目以降のディスクを /mnt 配下にマウントして、そこを提供するようにするのが良い方法のようです。
そこで次は、メニューから[ストレージ]-[プール]を選択します。
画面右上に出てくる追加を押します。
[新しいプールの作成]を選択し、プールの作成を押します。
[名前]に任意の名前(これが /mnt 下のディレクトリ名になります)を入れ、対象のディスク(da1)のチェックを入れると、このような画面になりますので、→を押します。
[da1]が[Data VDevs]の枠に移りますので、左下の作成を押します。
[確認]にチェックし、プールの作成を押します。
このようにプールが1つできました。
プールに対するアクセス制御の設定は変えられないようで、以下の通りプールの下にデータセットを作ることで細かく設定が可能になるようです。
上の絵で[NFStest]の行の右の方に点々のアイコンがありますので、それをクリックするとメニューが出ますから、[データセットを追加]を選択します。
([Edit Permissions]がグレーアウトされていて使えないことが分かります)
[名前]に任意の名前(これが /mnt/NFStest 下のディレクトリ名になります)を入れ、保存を押します。
データセット名は「NFStestDataset」にしました。
また1行増えました。
階層表示されているので分かりやすいです。
今度は[NFStestDataset]の行の右の点々アイコンをクリックします。
出てきたメニューから[Edit Permissions]を選択します。
本当はパーミッションをしっかり考えないといけませんが、とりあえずはグループとグループ外に対して書き込み権限を与えてしまいます。
赤枠のチェックを入れて、保存を押します。
再びメニューの[共有]-[Unix共有(NFS)]を選択します。
右上の追加を押します。
ツリーで /mnt を開いてみると、さっきと違って[NFStest]ディレクトリ・[NFStestDataset]ディレクトリができています。
これが作成したプールとデータセットです。
[NFStestDataset]ディレクトリを選択し、保存を押します。
一覧に[/mnt/NFStest/NFStestDataset]ができました。
これが NFSクライアント(Ubuntu Server)でマウントする時の指定先になります。
NFSのサーバープロセスを起動しましょう。
メニューから[サービス]を選択します。
NFSの行をこうします。(マウスでクリックすれば OK)
これでとりあえず FreeNAS側の設定はできています。
Ubuntu Serverでマウントしてみましょうか。
Ubuntu Serverはデフォルトインストールでは、NFSクライアントがありませんでしたので、nfs-commonパッケージをインストールします。
subro@UbuntuServer2204:~$ sudo apt install -y nfs-common
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
〜〜〜 中略 〜〜〜
No VM guests are running outdated hypervisor (qemu) binaries on this host.
インストールできました。
マウントします。
subro@UbuntuServer2204:~$ sudo mount -t nfs FreeNAS:/mnt/NFStest/NFStestDataset /data
何も出ませんが、これで /data ディレクトリにマウントできています。
ファイルシステムではどうなってるでしょうか。
subro@UbuntuServer2204:~$ df
Filesystem 1K-blocks Used Available Use% Mounted on
tmpfs 810580 1544 809036 1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv 28719140 12427876 14807080 46% /
tmpfs 4052900 0 4052900 0% /dev/shm
tmpfs 5120 0 5120 0% /run/lock
/dev/sda2 1992552 251932 1619380 14% /boot
tmpfs 810580 4 810576 1% /run/user/1000
FreeNAS:/mnt/NFStest/NFStestDataset 7610496 128 7610368 1% /data
マウントされていますね。
オーナーは nobody、グループは nogroup にマッピングされています。
パーミッションはデータセットでの設定通りになっています。
subro@UbuntuServer2204:~$ ls -ld /data
drwxrwxrwx 2 nobody nogroup 2 11月 23 06:55 /data
書き込みテストをします。
subro@UbuntuServer2204:~$ touch /data/aaa subro@UbuntuServer2204:~$ ls -l /data/aaa -rw-rw-r-- 1 nobody nogroup 0 11月 23 07:04 /data/aaa
上手くいきました。
何のことはないNFSマウントですが、FreeNASの設定では意外とハマりました。
ドキュメントは以下にあるんですが、余り詳しくなく…。
13.3. Unix (NFS) Shares
ただ一度分かってしまえば、仮想OSとして FreeNASを持っておけば、いつでも NFSサーバーを立ち上げられるのは便利です。
皆さんも活用してみてはいかがでしょうか。