2017年1月30日月曜日

FreeNASをiSCSIストレージとして構築し、Windows Server 2012から接続してみた① (FreeNAS構築編)

ちょっと仕事でiSCSIの接続方法を検証する必要があり、iSCSIのターゲットの機能を持つオープンソースのNAS用OSである、FreeNASをESXi上に仮想マシンとして構築してみることにした。

本記事ではFreeNASのインストールする手順とiSCSIの設定手順について記載し、ついでにWindows Server 2012からのiSCSIイニシエーターの設定手順についても記載する。記載量が多くなるので、まずはFreeNASのインストールからiSCSIの設定までを記載し、次回にWindows Server 2012でのiSCSIイニシエーター設定を記載する。

FreeNASとは

FreeNASはFreeBSDをもとにしたNAS用OSである。巷にはオープンソースのNAS用OSが多数存在するが、その中でiSCSIターゲット機能を持つことから使ってみることにした。

FreeNASは以下URLからダウンロードできる。私が利用したバージョンはFreeNAS-9.10.2となる。

・FreeNAS Storage Operationg System
http://www.freenas.org/

FreeNASをインストール

FreeNASのインストールは、ダウンロードしたISOをマウントして、ウィザードに従っていけばそこまで悩むことなくインストールできるため、要所だけ記載する。

1. 仮想マシンの構成として、メモリは4GB以上が推奨のようだが、4GB以下でもインストールは可能。ESXiで仮想マシンの箱を作る際に設定するゲストOSの種類は、「その他」→「FreeBSD (64 ビット)」を選択する。CPU、メモリ、ディスクは以下で構成したが、実用する場合はメモリを多くすればキャッシュとなって処理が速くなるようだ。

------------------------------
・CPU:1コア
・メモリ:2GB
・ディスク:10GB
------------------------------

2. ISOをマウントして起動し、「Install/Upgrade」を押すと、仮想マシンのメモリが4GB未満の場合は以下のような警告が表示される。FreeNASの推奨メモリ量以下だよ、というただの警告なので、無視して進めば問題ない。


3. Boot Modeは特に設定を変更していないのであれば、「Boot via BIOS」で問題ない。


4. インストールが終了後の初回ブートのタイミングでは、NICの設定がDHCPとなっている。そのため、DHCPDISCOVERがランダムな間隔で5回繰り返されるので、気長に終了を待つこと。


5. 「Console Setup」画面が表示されるので、数字の1を押して、「1) Configure Network Interface」を選択したのち、以下のように設定する。

------------------------------
・Select an interface : 1
・Reset network configration? : n
・Configure interface for DHCP? : n
・Configure IPv4? : y
・Interface name : 空白のままエンター
・IPv4 Address : 192.168.11.144/24 ※これは例。ネットワークに応じて適切に設定する
・Configure IPv4? : n
------------------------------



設定すると、Console Setup画面に「http://<設定したIPアドレス>」が表示される。



FreeNAS初期設定

ここからはWebの管理画面にて設定ができるようになる。

1. Webの管理画面にログインする。

 ・URL:http://<設定したIPアドレス>
 ・ID:root
 ・Pass:インストール時に設定したパスワード

2. 初回ログイン時は、「Initial Wizard」が表示されるが、まだディスクが追加できておらず設定が完了できないことから、「Exit」を押して閉じておく。



3. 初期設定としては、以下を最低限設定しておけばよい。

------------------------------
◆「System」→「General」
 ・Language:日本語UIにしたければ「Japanese」に変更する ※今回は「English」のままにした
 ・Console Keyboard Map:Japanese 106x ※変更しなくてもあまり影響ない
 ・Time zone:Asia/Tokyo
------------------------------



------------------------------
◆「Network」→「Global Configration」
 ・Hostname:<ホスト名を設定>
 ・Domain:空白がだめなので、「local」などで設定しておく
------------------------------



FreeNAS ネットワーク・ストレージ設定

初期設定が終わったら、ネットワークとストレージの設定を実施していく。今回は下図の構成を考えており、ネットワークは2パスで冗長構成、ディスクは2本のミラー構成で設定してみる。後述するが、本来はパス1とパス2は、同一セグメントではなく、別セグメントで構築することが望ましい。


1. 仮想マシンにNICを追加する。今回は以下のように追加した。NICのアダプタの種類が違うのは、FreeNASで認識するか試すためで、VMXNET 3でも問題なく認識した。なお、NIC認識には一度FreeNASの再起動が必要のようだ。

------------------------------
・NIC1(E1000):初期NIC。管理通信に使用
・NIC2(VMXNET 3):追加NIC。iSCSIで使用
・NIC3(E1000):追加NIC。iSCSIで冗長パスとして使用
------------------------------

2. 仮想マシンにディスクを追加する。今回はMirrorボリュームを作るため、以下のように追加した。なお、サイズが2GB程度と少ないとボリューム作成ができなかったので注意。ディスクは再起動せず認識した。

------------------------------
・ディスク1:4GB ※ESXiの4GBは正確には4GiBなので、FreeNASでは4.3GBに見える
・ディスク2:4GB ※ESXiの4GBは正確には4GiBなので、FreeNASでは4.3GBに見える
------------------------------

3. Webの管理画面に戻り、「Network」→「Interfaces」→「Add Interface」にてNICを追加する。なお、今回は面倒だったので、すべて同セグメントでのIPアドレスを付与したが、これは大変おすすめしない。というか、FreeNASのWeb管理画面では、以下の設定は「The network xxx.xxx.xxx.xxx/xx is already in use by another NIC.」というエラーが出て拒否される。設定したければ、Console setupの画面から1個目のNICと同様に設定する必要がある。

おすすめとしては、運用セグメント、iSCSIの1パス、iSCSIの2パスでそれぞれセグメントを別に設計するほうがよい。

------------------------------
<おすすめしない例>
・NIC1(管理):192.168.11.144/24
・NIC2(iSCSI1):192.168.11.145/24
・NIC3(iSCSI2):192.168.11.146/24

<おすすめ例>
・NIC1(管理):192.168.11.144/24
・NIC2(iSCSI1):192.168.22.1/25
・NIC3(iSCSI2):192.168.22.129/25
------------------------------

------------------------------

【参考】 なぜ同セグメントのNIC複数枚がおすすめしないのか

同セグメントのNICが複数ある場合、ルーティングが以下の通りになる。

Destination           Gateway Flags  Netif
127.0.0.1               link#4      UH     lo0
192.168.11.0/24     link#1      U       em0
192.168.11.144/24  link#1      UHS   lo0
192.168.11.145/24  link#3      UHS   lo0
192.168.11.146/24  link#2      UHS   lo0

下線部のルーティングが重要で、今回設定したネットワークセグメントである192.168.11.0/24へのルーティングのNetifが「em0(NIC1のインターフェース名)」になっており、NIC2やNIC3が受信したパケットであっても、戻りパケットはem0から送信されることになる。

そのため、NIC1が万が一切断されると、全NICの戻りパケットが送信できなくなり、関係のないNIC2、NIC3ともに通信ができなくなる。これは冗長性を考えると、とてもよろしくない。
------------------------------

4. Web管理画面にて、「Storage」→「Volumes」→「Volume Manager」を選択する。Volume Managerの画面では、以下の通り設定し、「Add Volume」ボタンを押下した。

------------------------------
・Volume Name : Volume1
・Volume layout : Mirror / 2 - 4.3GB
------------------------------

FreeNAS iSCSI設定

1. Webの管理画面にて、「Sharing」→「Block (iSCSI)」→「Traget Global Configuration」を選択する。「Base Name」を以下に設定し、「Save」する。

------------------------------
・Base Name : iqn.2005-10.org.freenas.ctl:t1144fnas ※これは一例で、任意に設定すればよい
------------------------------



2. 「Portals」画面にてポータルを追加する。

------------------------------
<Portal1>
・Comment : Potal1
・Discovery Auth Method : None
・Discovery Auth Group : None
・IP Address : 192.168.11.145
・Port : 3260

<Portal2>
・Comment : Potal2
・Discovery Auth Method : None
・Discovery Auth Group : None
・IP Address : 192.168.11.146
・Port : 3260
------------------------------



3. 「Initiators」画面にて接続可能とするiSCSIイニシエーターを登録する。

------------------------------
・Initiators : iqn.1991-05.com.microsoft:t1115w212.intrat.local
・Authorized network : ALL
・Comment : 任意
------------------------------



4. 「Targets」画面にてiSCSIターゲットを追加する。

------------------------------
<Target_a0>
・Target Name : iqn.2005-10.org.freenas.ctl:t1144fnas.a0
・Comment : Target_a0
・Portal Group ID : 1 (Portal1)
・Initiator Group ID : 1
・Auth Method : None
・Authentication Group number : None

<Target_b0>
・Target Name : iqn.2005-10.org.freenas.ctl:t1144fnas.b0
・Comment : Target_b0
・Portal Group ID : 2 (Portal2)
・Initiator Group ID : 1
・Auth Method : None
・Authentication Group number : None
------------------------------



5. 「Extents」画面にてエクステント(iSCSIイニシエーターに見せるディスク領域)を追加する。

------------------------------
・Extent Name : Extent1
・Extent Type : File
・Serial : 自動で入力される
・Path to the extent : /mnt/Volume1/extent1
・Extent size : 任意 ※Volumeのサイズよりも大きいサイズ指定が可能。今回は10TBで設定
・LUN RPM : ディスクに合わせて設定する。今回はSSD
------------------------------



6. 「Associated Targets」画面にてiSCSIターゲットとエクステントの紐づけを実施する。

------------------------------
<設定1>
・Target : iqn.2005-10.org.freenas.ctl:t1144fnas.a0
・LUN ID : 0
・Extent : Extent1

<設定2>
・Target : iqn.2005-10.org.freenas.ctl:t1144fnas.b0
・LUN ID : 0
・Extent : Extent1
------------------------------



7. 最後にFreeNASでiSCSIサービスを有効化する。「Services」→「Control Services」を選択し、「iSCSI」を「ON」にする。



以上でFreeNASのiSCSI設定は完了。次回はこのFreeNASにWindows Server 2012から接続する設定を行う。