TrueNAS(TrueNAS CORE, TrueNAS SCALE)にはVM機能も統合されており大変便利なのだが、実際に使ってみたらちょっと躓いた点があるので記録しておく。当然、NAS自体がストレージサーバとしてNFSやSMBを提供しているのだが、これをVMから見ようと思ったら一手間必要だったというお話。TrueNASのフォーラムに断片的なヒントはあったが、若干の前提知識・エスパー力が必要な気がしたのでここに書いておく。
※COREにはjail、SCALEにはDockerもあるため使い分けも必要。この点については筆者は適切な知識を持っている自信がない。
そもそもjailやDockerを使う場合は起動前に構成を変更してホスト側のデータ領域をマウントしてしまうのが手っ取り早くて良さそうなのだが、VMにデバイスを追加しようとするとDiskやRaw Fileが候補となるため、単純にLAN内にクライアントPCを増やしてNFSやSMBを参照するのとはだいぶ状況が違ってきそうで逆に不便そうなので、この選択肢は排除した。
まず、実際にVMを立ち上げて外部ネットワーク接続できる状況にする……というか、普通にVMを設定して有効なNICをアサインすれば、ホストとのNICをVMも共有しているような状況(同じハブにつながっているような状況?)になり、外部ネットワークへの接続は普通に行えるようになる。しかしここでホストの提供しているNFSやSMBを見に行こうとすると何故かつながらない。これが今回の問題である。
やるべきことはわかってしまえば簡単で、まずホスト側のネットワーク設定を開き、Bridgeインターフェイスを1つ用意する。ホストネットワークと異なるサブネットにする必要がある(同じにしようとするとエラーする)ので適当なIPを割り当てる。Bridgeメンバーとしては、とりあえず何も考えずに余っているNICを割り当てたらうまくいった。他の方法は未調査。もちろん、NFSやSMBをマウントできるNICやIPを限定している場合はそちらも調整しておく必要がある、はず(試してない)。
次にVMのデバイス設定から先ほど追加したBridgeのNICを追加する。その後、VMを起動すれば追加したNICが見えるので、そこにBridgeインターフェイスと同じサブネットのIPを割り当てる。これでNFSやSMBのサーバとしてBridgeインターフェイスのIPを指定すれば無事にホストのストレージが見えるようになる。NICが余計に増えてしまったが、これで普通にクライアントPCを追加するのとあまり変わらない感覚でVMが使えるだろう。
……速度については、何か分かれば追記ということで……。