今回は、急にWindows Server 2022でiSCSIを使いたくなったので、Windows Server 2022に仮想ディスクを作成して、iSCSI Targetとイニシエータの設定をして、別のWindows Server 2022からiSCSIでアクセスできるようにするところまでを手順にします。
期待する目標
本手順の目標は以下の通りです。
- iSCSIの仕組みを理解する。
- Windows Server 2022でiSCSI Targetを作成する。
- Windows Server 2022でiSCSI イニシエータの設定をする。
- iSCSIを使う。
iSCSIとは
Internet Small Computer System Interface (iSCSI、アイスカジー) とは、SCSIプロトコルをTCP/IP上で使用する規格である。ファイバーチャネルよりも安価にストレージエリアネットワーク (SAN) を構築出来る[1]。2003年2月11日にIETFによってRFCとして公表された”公式な規格への提案” (Proposed standard) であり、SCSI-3標準のトランスポート層に相当する。ギガビット・イーサネットが一般化した現在、iSCSIベースのSANは十分高速・安価となり検討に値するものとなっている。
Wikiより引用
一般的なファイル共有の方法だと、CIFSやSMB、NFSなどがあります。
これらは、ファイルシステムを介したプロトコルとなります。
それに比べ、SCSIはSAN(Storage Area Network)で使用するプロトコルであり、ファイルシステムを介さずに、ディスクに直接書き込み命令を出します。
そのため、一般的なファイルやフォルダ単位の共有ではなく、ディスクを直接共有します。
CIFSやNFSに比べパフォーマンスが向上しやすいという点がありますが、ファイルシステムを介さずにやり取りを行うため、ロック機構などに注意する必要があります。
iSCSIについては、また別の機会に図解で説明したいと思います。
最低限抑えて起きた用語としては、iSCSI TargetとiSCSIイニシエータです。
iSCSI Targetはディスクを持っている側でディスクを提供するサーバの機能です。
iSCSIイニシエータはiSCSI Targetに対して接続を行うクライアントの機能です。
前提条件

今回は、Windows Server 2022を2台使用して、上記のような構成をとっていきます。
Server1はサービス提供サーバということで、ファイルサーバだと想定して構成します。
逆にServer2はiSCSIのストレージサーバという体で構成していきます。
Server1は自分自身のDISK2にvHDDを作成し、自分自身の仮想ディスクにiSCSI接続をして、ボリュームAとして見せます。
Server2はDISK2にvHDDを作成し、iSCSI接続をServer1から受け、Server1でボリュームBとして見られます。
そのため、Windows的には、Server1のドライブはOS用のCドライブ、vHDD用のDドライブ、仮想ディスクA用のEドライブ、Server2からマウントしたFドライブと複数のドライブが作成されます。
今回は、検証のためWindows Serverの詳細に関しては省略しますが、図の通りのスペックです。
iSCSI関連のインストール
Windows Server2022には、デフォルトでiSCSIイニシエータはインストールされているので、iSCSI Targetをインストールしていきます。
本作業は、検証環境の構成上、両方のサーバで行いました。(Server1では、自分自身の仮想ディスクを自分自身で提供する必要があるため。)

[サーバマネージャー]より、[管理]-[役割と機能の追加]を選択します。

[開始する前に]より、[次へ]を選択します。

[インストールの種類]より、[役割ベースまたは機能ベースのインストール]が選択されていることを確認し、[次へ]を選択します。

[サーバの選択]より、インストールするサーバが選択されていることを確認し、[次へ]を選択します。

[サーバの役割]より、[ファイルサービスと記憶域サービス]-[iSCSIターゲットサーバ]を選択します。

[iSCSIターゲットサーバに必要な機能を追加しますか?]より、[管理ツールを含める]にチェックが入っていることを確認し、[機能の追加]を選択します。

[iSCSIターゲットサーバ]にチェックが入っていることを確認し、[次へ]を選択します。

[機能]では、何もインストールしないので、そのまま[次へ]を選択します。

[確認]より、インストールする役割を確認し、[インストール]を選択して、インストールを完了させます。
仮想ディスクの作成とターゲット設定
iSCSI Targetのインストールが完了したら、データサーバ側(Server2)で仮想ディスクの作成と、iSCSI Targetを設定を行っていきます。

[サーバマネージャー]より、[ファイルサービスと記憶域サービス]を選択します。

[iSCSI]を選択し、[タスク]-[新しいiSCSI仮想ディスクウィザード]を選択します。

[仮想ディスクの場所]より、仮想ディスクを配置する場所を選択します。
今回はボリュームEがvHDDのボリュームため、[ボリュームで選択]-[E:]を選択し、[次へ]を押下します。

[iSCSIディスク名の指定]より、仮想ディスクの名前を入力し、[次へ]を選択します。

[iSCSI仮想ディスクのサイズを指定]より、以下の設定を行います。
- サイズ : 20GB(任意のサイズを指定)
- 容量可変 : ● (用途により、ディスクの種類は変更してください。)
選択が完了したら、[次へ]を選択します。

[iSCSIターゲットの割り当て]より、[新しいiSCSIターゲット]が選択されていることを確認し、[次へ]を選択します。

[ターゲット名の指定]より、任意のiSCSI Target名を入力し、[次へ]を選択します。

[アクセスサーバの指定]より、[追加]を選択します。
このアクセスサーバの指定は、ファイルシステムでいうところのACLに当たる部分となります。

[イニシエータを識別する方法を選択してください]より、[選択した種類の値を入力]を選択し、以下の設定を行います。
- 種類 : IPアドレス
- 値 : Server2のIPアドレス
設定が完了したら、[OK]を選択します。

同様の手順で、Server1のIPアドレスも追加しました。
Server1とServer2のIPアドレスが表示されたら、[次へ]を選択します。

[認証を有効にする]では、何も設定せずに、[次へ]を選択します。
本番環境であれば、しっかりと認証を行う必要がありますが、今回は検証環境のため認証回りの設定は割愛します。

[選択内容の確認]より、設定が正しいことを確認したうえで、[作成]を行います。

[結果]より、すべてのタスクが正常に完了したことを確認し、[閉じる]を選択します。
以上で、仮想ディスクの作成とiSCSI Targetの設定は完了です。
Server1側でも同様の設定を行っておきます。
iSCSIイニシエータの設定
Server1でもServer2でもiSCSI Targetの設定を行いました。
次はiSCSIのクライアント側から接続していく設定となります。
本項はServer1で実施します。

[サーバマネージャ]-[ツール]-[iSCSIイニシエータ]を選択します。

iSCSIイニシエータを初回起動すると、自動開始の有効化メッセージが表示されるため、[はい]を選択します。

[iSCSIイニシエータのプロパティ]-[ターゲット]-[クイック接続]の[ターゲット]欄に接続したいサーバのIPアドレスを入力します。今回は、Server2に接続するため、Server2のIPアドレスを入力します。
入力がおわったら、[クイック接続]を選択します。

[クイック接続]より、[状態]が[接続完了]となり、[進捗状況レポート]に[ログインに成功しました。]と表示されれば、Server2の仮想ディスクに接続ができているので、[完了]を選択します。

[iSCSIイニシエータのプロパティ]-[ターゲット]-[検出されたターゲット]の状態が[接続完了]となっていることを確認します。
以上でiSCSIイニシエータの設定は完了です。
ついでに、この時点でServer1の[ディスクの管理]を開くと以下のような状態となっています。

初期状態だと、ディスクは0と1のみだったのですが、ディスク2が追加されています。
このディスクはServer2にある仮想ディスクです。
このようにiSCSIで接続すると、ネットワーク越しなのに通常のディスクと同じような感覚で扱うことが可能です。
もちろん、この状態で[オンライン]→[ディスクの初期化]→[フォーマット]を行うと、通常のボリュームと同じようにエクスプローラからファイルを操作することができます。
1点注意があるとすれば、iSCSIはTCP/IP上のネットワークで動作しているため、iSCSIでマウントしたディスクに書き込みが入ると、通常のネットワークからトラフィックが発出されるため、状況によっては帯域を圧迫します。
そのため、iSCSIを使用する際は、サービスLANとは別NICかつ、iSCSI用のLANを用意したほうが無難だと思います。
Server1のiSCSIイニシエータ設定
iSCSI TargetとiSCSIイニシエータを使用することで、別サーバのディスクをマウントすることができました。
Server1はServer1とServer2の2ボリュームを見せたいので、Server1でも同様の設定を行う必要があります。事前にServer1のiSCSI Targetの設定と仮想ディスクは設定しているため、iSCSIイニシエータの設定を行っていきます。
ここからはServer1での操作となります。

[サーバマネージャ]-[ツール]-[iSCSIイニシエータ]を選択します。

[iSCSIイニシエータのプロパティ]-[ターゲット]-[クイック接続]の[ターゲット]欄に接続したいサーバのIPアドレスを入力します。今回は、自分自身に接続するため、Server1のIPアドレスを入力します。
入力がおわったら、[クイック接続]を選択します。

[クイック接続]より、[状態]が[接続完了]となり、[進捗状況レポート]に[ログインに成功しました。]と表示されれば、Server1の仮想ディスクに接続ができているので、[完了]を選択します。

[iSCSIイニシエータのプロパティ]-[ターゲット]-[検出されたターゲット]の状態が[接続完了]となっていることを確認します。
これで自分自身の仮想ディスクへiSCSI接続ができました。
再度ディスクの管理を見てみます。

Server2を接続したときに比べ、ディスク3が接続されていることが確認できました。
以上で自分自身へのiSCSI接続は完了です。
まとめ
今回は、Windows Server 2022を2台使用して、iSCSIのサーバとクライアントの接続を行ってみました。
本来であれば、iSCSI接続はディスクアレイなどのストレージサーバに対して行うものですが、Windows Serverを使用することで、ソフトウェア的に疑似SANを構築しすることができました。「iSCSIで接続する際に、Windowsでは何の設定で何が必要なのか?」がわかっていただけいただけましたでしょうか?
本来であれば、ストレージサーバ側がiSCSI Targetになるはずなので、あえてWindows ServerでiSCSIのTargetを使う意味はないと思いますが、WSFCなどで、Act-Std構成のディスクを共有ディスクではなくディスクのミラーリングで作ってみたりと色々選択肢が増えるのではないでしょうか?(構成自体は想像中ですが、絶対にうまくいかない・・・)
最近のストレージサーバはSANだけでなく、CIFSやSMBなどのWindowsファイル共有にやさしくなってきているので、iSCSIで接続しなければならない状況は少なくなりつつありますが、iSCSIのメリットである速度面と物理ディスクとして扱える点を考えるとまだまだiSCSIも利用価値のある素晴らしいプロトコルだなーと再認識しました。
おまけ
本ブログではVMwareやWindows、Linuxのインストール手順等も公開しております。
インフラエンジニアとして有益な記事や無益なコンテンツも作成しておりますので、通勤時間や休憩時間、休日のスキマ時間等に合わせて読んでいただけると幸いです。
また、Youtubeで解説動画も鋭意作成中です。本ブログで記事にしているものも動画にしようと思っておりますので、よろしくお願いいたします。
コメント