yasuです。
我が家のサーバーは以下の通り、Proxmox VEが2台とNFSサーバーで構成しており、NFSサーバーはFujitsu TX1310 m1にTrueNAS Coreをインストールし、SMBサービスとNFSサービスを起動して、RaidZ1で構築したディスクには文書ファイル、画像ファイル、動画ファイル、Proxmoxの仮想ディスクファイルなどを格納しています。

ずっとProxmox用仮想ディスク格納用専用NFSサーバーを構築したかったのと、TrueNAS Coreのバージョン13以降新バージョンがなかなかリリースされないのと、自宅にFujitsu TX1310 M1やHDD/SSD、10Gネットワークカードが余っていたので、この寄せ集めサーバーにTrueNAS ScaleをインストールしてProxmoxの仮想ディスク格納用の専用NFSサーバーを構築しようと思います。

0.目次
今回、作業工程が長いので簡単な目次を作りました。
- 新NFSサーバー用機材ご紹介
- TrueNAS Scaleダウンロード
- ダウンロードしたISOファイルをUSBメモリに書き込み
- TrueNAS Scaleインストール
- TrueNAS Scale設定
- 言語設定(日本語化)
- 全般の構成設定
- グループ作成
- ユーザー作成
- ストレージプール作成
- データセット作成
- サービス起動設定
- NFS共有設定
- SMB共有設定
- ACL設定
- Proxmox NFSサーバー追加
- Proxmox ストレージの移動
1.新NFSサーバー用機材ご紹介
今回自宅に余っていた機材は以下の通りです。
- Fujitsu TX1310 M1(Intel Xeon E3-1226v3)
- メモリ 32GB(8GB×4枚)
- ADATA SU630 480GB×2(OSインストール用/ZFSキャッシュ用)
- Western Digital WD10EFRX×3
- オリオスペック ノーブランド NB-INT-X520DA1-S2 PCIe x8 Intel 82599EN 搭載 10GbE SFP+ 1ポート
この他にTrueNAS Scaleのメディアを書き込むUSBメモリ(容量4GB程度あれば大丈夫)が1本必要です。
2.TrueNAS Scaleダウンロード
TrueNAS Scaleのダウンロードをします。
https://www.truenas.com/download-truenas-scale

Email欄に自分のメールアドレスを入力して[Continue with Email]ボタンを押下するか、その下のNo Thank you, I have already signed up.リンクをクリックします。

Current Stable VersionであるTrueNAS 25.04.0をダウンロードしました。
ダウンロードしたISOファイルの容量は約2GB程度です。

3.ダウンロードしたISOファイルをUSBメモリに書き込み
続いて、ダウンロードしたISOファイルをUSBメモリに書き込みます。
なお、Windows 11がインストールされているPCでの操作を前提として記載しています。
アプリはRufusを利用しました。
Rufusには4種類あって、64bitOS用でインストールするタイプとインストール不要なタイプ、32bitOS用とARM64用です。
個人的にはインストール不要な64bitOS用がオススメです。
ダウンロードしたrufus-4.7p.exe(インストール不要なタイプ)を実行すると、初回起動時に以下のようなダイアログが表示されるかと思いますので、[はい]ボタンをクリックします。

続いてデバイス欄にはUSBメモリのドライブが選択されている事を確認し、[選択]ボタンをクリックしダウンロードしたISOファイルを選択します。
最後に[スタート]ボタンをクリックすると、下記ダイアログが表示されます。
恐らくどちらでも大丈夫だと思うのですが、yasuは下の「DDイメージモードで書き込む」を選択して[OK]ボタンをクリックしました。

USBメモリ内のデータを消去する確認のダイアログが表示されたら[OK]ボタンをクリックします。

ちなみにUSBメモリに複数のパーティションがあると、書き込み先のデバイスは複数のパーティションを含んでいて、続行するとUBSメモリ内の全パーティションのデータはなくなりますの注意喚起ダイアログが表示されます。
これも[OK]ボタンをクリックします。

これでUSBメモリにISOファイルの書き込み処理が始まります。
書き込みが終わると、状態欄に緑の背景で「準備完了」と表示されますので、Rufusを終了します。

最後にタスクバーの「ハードウェアを安全に取り外してメディアを取り出す」からUSBメモリを選択して、USBメモリを取り外します。


4.TrueNAS Scaleインストール
Fujitsu TX1310 M1にメモリとSSDを1つと10Gネットワークカードと、TrueNAS ScaleのインストーラーUSBメモリを付けてサーバーを起動します。
[F12]キーを押下してブートメニューを表示して、USBメモリを選択します。
我が家の環境ですと、[KingstonDataTraveler 3.0]になります。

インストーラーが起動しますので、十数秒待つか[Enter]キーを押下します。

TrueNASのConsole Setupメニューが表示されるので、[1 Install/Upgrade]を選択して[Enter]キーを押下します。

TrueNASをインストールするデバイス(ここではsdaのADATA SU630)で[Space]キーを押下して選択し、[OK]で[Enter]キーを押下します。

[Yes]を選択した状態で[Enter]キーを押下します。

[1 Administrative user(truenas_admin)]を選択し、[OK]で[Enter]ボタンを押下します。

truenas_adminユーザーのパスワードを設定し、[OK]で[Enter]ボタンを押下します。

EFIブートの許可をするか聞かれますので、[Yes]で[Enter]キーを押下します。

下記のような感じでインストールが進みますので、しばし待ちます。

インストールが完了したら[Enter]キーを押下します。

[3 Reboot System]を選択し、[OK]で[Enter]キーを押下しサーバーの再起動を行います。

再起動後、しばらく待つと下記の状態になるので1を入力し[Enter]キーを押下します。

我が家の環境ではenp1s0が10Gのネットワークカードになりますので、enp1s0を選択して[Enter]キーを押下します。

下記の通り変更し、[Save]で[Enter]キーを押下します。
- ipv4_dhcp:No
- ipv6_auto:No
- aliases:192.168.0.110/24
- mtu:9000

[enps1s0]を選択し、[a]キーを押下します。

[enps1s0]を選択し、[p]キーを押下します。

[q]キーを押下してNetwork Interfacesを終了します。

再起動後のメニューが表示されたら、[10) ShutDown]を選択しサーバーの原電をOFFにします。
その後、残りのSSDとHDDを取り付け、再度サーバーの電源をONにします。

5.TrueNAS Scaleの初期設定
続いてブラウザからTrueNAS Scaleにアクセスします。
先ほど設定したIPアドレス https://192.168.0.110 になります。
インストール時にパスワードを設定したtruenas_adminユーザーでログインします。

5-1.言語設定(日本語化)
左側のサイドメニューより[System] > [General Settings]をクリックします。
Localizationの[Settings]ボタンをクリックします。

下記の通り修正して[Save]ボタンをクリックします。
- Language:Japanese(ja)
- Timezone:Asia/Tokyo
我が家のキーボードはUS配列ですので修正しませんが、JIS配列の方はConsole Keyboard MapをJapanese(jp)に修正した方がよいと思います。

5-2.全般の構成設定
左側のサイドメニューより[ネットワーク]をクリックします。
全般の構成の[設定]ボタンをクリックします。

ここは使用する環境に依存するのであくまで一例ですが、我が家では以下の通り変更しました。
変更後[保存]ボタンをクリックします。
- ホスト名:nfs
- Domain:sa-sa-ki.jp
- ネームサーバー1:10.31.17.13
- ネームサーバー2:10.31.17.14
- IPv4デフォルトゲートウェイ:192.168.0.254

5-3.グループ作成
NFSサービスだけ使うならグループとユーザーの追加は必要ないと思いますが、念のためSMBサービスも起動してWindowsからNFSサーバーのファイルをエクスプローラーで閲覧できた方が便利かなと思いますので、グループとユーザーを追加します。
左側のサイドメニューより[Credentials] > [Groups]をクリックします。
右上の[Add]ボタンをクリックします。

名前とSMB Groupにチェックを付けて[保存]ボタンをクリックします。

5-4.ユーザー作成
左側のサイドメニューより[Credentials] > [ユーザー]をクリックします。
右上の[Add]ボタンをクリックします。

以下を入力して、[保存]ボタンをクリックします。
- フルネーム:yasu
- ユーザー名:yasu
- パスワード/パスワードの確認:任意のパスワードを入力
- Create New Primary Group:トグルボタンをOFF
- Primary Group:home
- SMB User:チェックをON

5-5.ストレージプール作成
左側のサイドメニューより[ストレージ]をクリックします。
右上の[プールの作成]ボタンをクリックします。

プール名を入力します。ここでは「pool」と入力して[Next]ボタンをクリックします。

Layoutに「RAIDZ1」を選択します。
Disk Sizeに「447.13GiB(SSD)」と「931.51GiB(HDD)」の選択肢があるので「931.51GiB(HDD)」を選択します。
すると自動でWidthが3、Number of VDEVsが1になりますので、これはこのまま変更せず[Next]ボタンをクリックします。

[Next]ボタンをクリックします。

[Next]ボタンをクリックします。

[Next]ボタンをクリックします。

[Next]ボタンをクリックします。

[Next]ボタンをクリックします。

[プールの作成]ボタンをクリックします。

確認チェックボックスにチェックを付けて、[続ける]ボタンをクリックします。

プールの作成が完了しました。

5-6.データセット作成
左側のサイドメニューより[Datasets]をクリックします。
右上の[データセットの追加]ボタンをクリックします。

名前を入力します。ここでは「nfs」として[保存]ボタンをクリックします。

5-7.サービス起動設定
左側のサイドメニューより[システム] > [サービス]をクリックします。
NFSとSMBとSSHの動作中トグルボタンと自動的に起動トグルボタンをONに変更します。

「NFS」の一番右の編集ボタン(ペンのマーク)をクリックします。
Bind IP Addressesに設定したIPアドレスを選択し、[保存]ボタンをクリックします。

「SMB」一番右の編集ボタン(ペンのマーク)をクリックします。
Netbios Nameを変更します。ここでは「nfs」とし、[詳細設定]ボタンをクリックします。

Enable Apple SMB2/3 Protocol Extensionsにチェックを付け、Administrators Groupに「truenas_admin」を選択し、[保存]ボタンをクリックします。

5-8.NFS共有設定
左側のサイドメニューより[Shares]をクリックします。
UNIX(NFS) Sharesの[Add]ボタンをクリックします。

Pathに「/mnt/pool/nfs」を指定し、[Advanced Option]ボタンをクリックします。

Maproot Userに「root」、Maproot Groupに「wheel」を選択して[保存]ボタンをクリックします。

5-9.SMB共有設定
Windows(SMB) Sharesの[Add]ボタンをクリックします。

Pathに「/mnt/pool/nfs」を指定し、[保存]ボタンをクリックします。

SMBサービスの再起動を行うか確認ダイアログが表示されるので、[Restart Service]ボタンをクリックします。

5-10.ACL設定
SMBサービスの再起動完了後にACL設定の確認ダイアログが表示されるので、[設定]ボタンをクリックします。

なお、誤って[No]ボタンをクリックしてしまったとしても、Windows(SMB) Sharesの一覧から[Edit Filesystem ACL]ボタン(右下の右から3つ目の盾の形をしたアイコン)からACLの設定画面に遷移可能です。

[+ Add Item]ボタンをクリックします。
Who欄に「Mask」を選択し、Permissionsのチェックボックス(Read/書き込み/Execute)全てにチェックを付けます。

「再帰的に権限を適用」にチェックを付けると「権限の設定は、このディレクトリとその下のディレクトリすべてに再帰的に影響します。これにより、データにアクセスできなくなる可能性があります。」の警告ダイアログが表示されるので、[確認]チェックボックスにチェックを付けて[続ける]ボタンをクリックします。


再び、[+ Add Item]ボタンをクリックします。
Who欄に「User]を選択して、Userに「yasu」を選択し、Permissionsのチェックボックス(Read/書き込み/Execute)全てにチェックを付けます。

Access Control Listから「Other – default」を選択し、Permissionsのチェックボックス(Read/書き込み/Execute)全てにチェックを付けます。

Access Control Listから「Other」を選択し、Permissionsのチェックボックス(Read/書き込み/Execute)全てにチェックを付け、[Save Access Control List]ボタンをクリックします。

これでTrueNAS ScaleのNFSサービス(とSMBサービス)の設定は完了です。
6.Proxmox NFSサーバー追加
Proxmoxに先ほど構築したTrueNAS ScaleのNFSサーバーを追加します。
ブラウザからProxmoxにアクセスしてログインします。
データセンターを選択し、メニューの「ストレージ」をクリックし、[追加]選択リストから「NFS」をクリックします。


下記設定を行い、[追加]ボタンをクリックします。
- ID:nfs0 (既存のNFSサーバーをnfsで登録しているので、それと違う名前でわかりやすい名前を入力)
- サーバ:192.168.0.110 (今回構築したNFSサーバーのIPアドレス)
- Export:/mnt/pool/nfs

7.仮想サーバー ストレージの移動
データセンターの下の仮想サーバー内にあるVMを選択します。本例では「990 (almalinux9)」を選択します。
VMのメニューにある「ハードウェア」を選択します。
「ハードディスク」を選択し、ディスクの操作メニューから「ストレージの移動」をクリックします。

ターゲットストレージから「nfs0」を選択し、[ディスクの移動]ボタンをクリックします。
移動と同時に移動前のNFSサーバーから仮想ディスクイメージファイルを削除する場合は「ソースの削除」にチェックを付けてから[ディスクの移動]ボタンをクリックします。

ディスクの移動が始まります。最後に「TASK OK」と表示されたら移動の完了です。

念のためエクスプローラーから \\192.168.0.110\nfs\images\990 にアクセスして、仮想ディスクイメージファイルがある事を確認します。

本例では稼働していないVMでストレージの移動を実施しましたが、稼働中のVMでもストレージの移動は可能です。
全てのVMの仮想ディスクを新しいNFSサーバーに移動し終わったら、Proxmoxのストレージから古いNFSサーバーを削除します。
データセンターを選択し、メニューの「ストレージ」をクリックし、古いNFSサーバー(nfs)を選択したら[削除]ボタンをクリックします。

削除の確認ダイアログが表示されたら、[はい]ボタンをクリックします。

これでProxmoxから古いNFSサーバーが削除されました。

ただ、Webの管理画面上は消えていても裏側ではマウントされたままになっているケースがあり、我が家のProxmoxもマウントされたままになっておりましたので、コマンドで完全削除します。
Windowsのコマンドプロンプトを起動し、sshでProxmoxに接続します。
■Proxmoxサーバーにsshで接続
C:\Users\yasu>ssh root@proxmox01.sa-sa-ki.jp
root@proxmox01.sa-sa-ki.jp's password: パスワード入力
■外部ストレージのマウント状況確認
root@proxmox01:~# cd /mnt/pve
root@proxmox01:/mnt/pve# ls -la
total 52
drwxr-xr-x 4 root root 4096 Apr 30 13:55 .
drwxr-xr-x 4 root root 4096 Aug 24 2024 ..
d--------- 3 root root 4 Apr 29 22:12 nfs ←古いNFSサーバーのIDが残っている
drwxrwxrwx 3 root root 3 Apr 29 16:08 nfs0
root@proxmox01:/mnt/pve# mount|grep nfs
192.168.0.110:/mnt/pool/nfs on /mnt/pve/nfs0 type nfs4 (rw,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.0.9,local_lock=none,addr=192.168.0.110)
192.168.0.100:/mnt/hdd/zfs/vmimages on /mnt/pve/nfs type nfs (rw,relatime,vers=3,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.0.100,mountvers=3,mountport=938,mountproto=udp,local_lock=none,addr=192.168.0.100) ←古いNFSサーバーがマウントされたまま残っている
■外部ストレージのアンマウントと設定削除
root@proxmox01:/mnt/pve# umount nfs
root@proxmox01:/mnt/pve# rm -fr nfs
■外部ストレージのアンマウントと設定削除の確認
root@proxmox01:/mnt/pve# ls -l
total 11
drwxrwxrwx 3 root root 3 Apr 29 16:08 nfs0 ←古いNFSサーバーの設定が削除されていることを確認
root@proxmox01:/mnt/pve# mount|grep nfs
192.168.0.110:/mnt/pool/nfs on /mnt/pve/nfs0 type nfs4 (rw,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.0.9,local_lock=none,addr=192.168.0.110) ←古いNFSサーバーが`アンマウントされていることを確認
これをProxmoxサーバーの台数分、我が家ですと2台あるので2台ともに実施して作業完了です。