ウェブサイト検索

Debian 9 で iSCSI サーバー (ターゲット) とクライアント (イニシエーター) をセットアップする方法


データセンターの世界では、 大容量のストレージ エリア ネットワーク (SAN) が最低標準となっています。クラウド プロバイダーと仮想化もテクノロジーの世界に大きな影響を与え続けており、さらに多くの SAN ストレージ スペースの必要性が明らかになってきています。

ほとんどの SAN ハードウェアは、最小限のコントローラー (または一連のコントローラー) と、大量のデータの可用性と整合性をサポートするように構成された大規模な大容量ドライブのコレクションで構成されています。

これらの特殊な製品の多くは、Netapp、Dell Equalogic、HP Storageworks、EMC などの大手ベンダーによって製造されており、最大手の企業のみが購入できる値札が付いています。

現実的には、これらのデバイスは、ネットワークに接続されたクライアントにハード ディスクのスペースを提供するコントローラを備えた大規模なハード ディスク アレイにすぎません。この機能または同様の機能を大幅に安価な価格で提供する多くのテクノロジーが長年にわたって存在してきました。

Debian GNU/Linux ディストリビューションは、Debian システムがエンタープライズ レベルの SAN ストレージ デバイスの目的をわずかなコストで実現できるようにするパッケージを提供します。これにより、基本的なホーム ユーザーから大規模なデータセンターまで、誰もがベンダー独自のソリューションに大金を費やすことなく SAN ストレージのメリットを享受できるようになります。

この記事では、インターネット スモール コンピュータ システム インターフェイス または略してiSCSI として知られるシステムを使用してディスク領域を提供するように Debian 9 (Stretch) システムをセットアップする方法について説明します。 iSCSI は、ブロック (ハード ドライブ) ストレージを他のシステムに提供するためのインターネット プロトコル (IP) ベースの標準です。 iSCSI はクライアント サーバー モデルで動作しますが、クライアントとサーバーを区別するために異なる名前が使用されます。

iSCSI 用語では、「ディスク スペース」を提供しているサーバーはiSCSIターゲット」と呼ばれ、要求しているシステムは/ディスク領域の利用は、iSCSI 'イニシエーター' として知られています。つまり、「イニシエーター」は「ターゲット」にブロック ストレージを要求します。

環境設定

このガイドでは、単純なiSCSIサーバー (ターゲット) とクライアント (イニシエーター) の両方を含む基本的なセットアップについて説明します。 Debian 9 (ストレッチ) を実行しています。


Debian iSCSI Target: 192.168.56.101/24
Storage: Contains two extra hard drives to be used as the storage in the iSCSI setup
Debian iSCSI Initiator: 192.168.56.102/24

ネットワークは次のように表示できます。

Debian iSCSI ターゲット構成

iSCSI の世界では、ターゲットイニシエータが使用するストレージ デバイスを含むホストとみなされます。

この記事では、IP が 192.168.56.101 のサーバーがターゲットとして使用されています。このセクションでは、すべての構成がそのホスト上で行われます。

最初のステップは、Debian システムが iSCSI ターゲット を提供できるようにするために必要なパッケージをインストールすることです。このソフトウェア パッケージはターゲット フレームワーク (TGT) と呼ばれます。

このガイドで使用されているもう 1 つのアイテムは、論理ボリューム (LV) としての論理ボリューム管理 (LVM) ツールです。 Strong>) は、iSCSI ターゲットのストレージ バッキングとして使用されます。

どちらのパッケージも次のコマンドでインストールできます。


apt-get update
apt-get install tgt lvm2

パッケージがインストールされると、LVM を使用してターゲット上のハードディスクをiSCSI LUNとして使用できるように準備します。最初のコマンドは、LVM セットアップに含めるためのディスクを準備するために使用されます。さまざまなシナリオに応じて、必要に応じてコマンドを必ず変更してください。


lsblk (Only used to confirm disks to be used in the LVM setup)
pvcreate /dev/sd{b,c}

上記の「pvcreate」コマンドを使用してディスクを準備したら、これらの特定のディスクからボリューム グループを作成します。後でiSCSIストレージとして機能する論理ボリュームを作成するにはボリューム グループが必要です。

ボリューム グループを作成するには、「vgcreate」コマンドが必要です。


vgcreate tecmint_iscsi /dev/sd{b,c}
vgs  (Only needed to confirm the creation of the volume group)

上記の出力では、システムがボリューム グループ が作成されたと応答していることに注目してください。ただし、上記のように「vgs」コマンドを使用して再確認することを常にお勧めします。このボリューム グループの容量はわずか9.99 GBです。これは特に小さなボリューム グループですが、大容量のディスクでもプロセスは同じです。

次のステップは、iSCSI クライアント (イニシエーター) へのディスクとして機能する論理ボリュームの作成です。この例ではボリューム グループ全体が使用されますが、必須ではありません。

論理ボリュームは「lvcreate」コマンドを使用して作成されます。


lvcreate -l 100%FREE tecmint_lun1 tecmint_iscsi
lvs  (Simply used to confirm the creation of the logical volume)

上記の「lvcreate」コマンドは一見すると少しわかりにくいかもしれませんが、内訳は次のとおりです。

  • lvcreate – 論理ボリュームの作成に使用されるコマンド。
  • -l 100%FREE – ボリューム グループのすべての空き領域を使用して論理ボリュームを作成します。
  • -n tecmint_lun1 – 作成する論理ボリュームの名前。
  • tecmint_iscsi – 論理ボリュームを作成するボリューム グループの名前。

論理ボリュームが作成されたら、実際のLUN (論理ユニット番号) を作成します。 LUN は、イニシエーターが後で接続して使用するストレージ デバイスになります。

LUN の作成は非常に簡単で、必要な手順はわずかです。最初のステップは構成ファイルの作成です。このファイルは「/etc/tgt/conf.d」ディレクトリにあり、この記事では「TecMint_iscsi.conf」という名前になります。

このファイルを作成するには、テキスト エディタを使用します。


nano /etc/tgt/conf.d/TecMint_iscsi.conf

このファイル内で、このLUN に必要なすべての構成情報が構成されます。このファイルには多くのオプションを配置できますが、現時点では、 相互チャレンジ ハンドシェイク認証プロトコル (CHAP) を備えた基本的なLUNが使用されます。設定されます。

LUN の定義は 2 つの「ターゲット」ステートメントの間に存在します。 target ステートメントに含めることができるその他のパラメータについては、「man 5 target.conf」を発行して「targets.conf」ファイルのマニュアル ページを確認してください。


<target iqn.2018-02.linux-console.net:lun1>
     # Provided device as an iSCSI target
     backing-store /dev/mapper/tecmint_iscsi-tecmint_lun1
     initiator-address 192.168.56.102
    incominguser tecmint-iscsi-user password
     outgoinguser debian-iscsi-target secretpass
</target>

上ではたくさんのことが起こっています。簡単な説明はほとんどの人にとって役立つかもしれません。

  • 最初の行は、特定のiSCSI LUN構成を開始します。この場合、LUN には「iqn.2018-02.linux-console.net:lun1」というラベルが付けられています。 「iqn」部分は、これが iSCSI 修飾名であることを示します。 「2018-02」は、任意に選択された日付の組み合わせです。 「linux-console.net」は、この特定の LUN が属するドメインです。最後に、「lun1」がこの特定のターゲットの名前として使用されます。
  • 上の 2 行目 はコメントを示しています。コメントはターゲット構成ファイル内に存在することができ、先頭に「#」記号を付ける必要があります。
  • 3 行目は、イニシエーターが使用する実際のストレージスペースが存在する場所です。この場合、ストレージのバッキングは、ガイドの前半で作成した論理ボリュームになります。
  • 4 行目は、イニシエータから期待される IP アドレスです。これは必須の構成項目ではありませんが、セキュリティの向上に役立ちます。
  • 5 行目は受信ユーザー名/パスワードです。上記のイニシエータ アドレスと同様に、このパラメータも必須ではありませんが、LUN のセキュリティを確保するのに役立ちます。このガイドでは iSCSI 相互 CHAP についても説明しているため、このパラメータは必須です。この行は、この LUN に接続するためにターゲットがイニシエータに要求するユーザー名とパスワードを示します。
  • 6 行目は、相互 CHAP 認証の実行を可能にするためにターゲットがイニシエータに提供するユーザー名とパスワードです。通常、このパラメータは必須ではありませんが、この記事では相互 CHAP 認証について説明しているため、このパラメータは必須です。
  • 最後の行は、ターゲット定義の最後のステートメントです。キーワードターゲットの前にある最後のスラッシュに注意してください。

LUN の適切な構成を入力したら、変更を保存してテキスト エディタを終了します。 nano を使用している場合は、ctrl+o を押して保存し、ctrl+x を押して nano を終了します。

構成ファイルが作成されたら、tgt が新しいターゲットと関連する構成を認識できるように、tgt サービスを再起動する必要があります。

これは、次のコマンドのいずれかを使用して実行できます。これは、使用している init システムによって異なります。


service tgt restart  (For sysv init systems)
systemctl restart tgt  (For systemd init systems)

tgt が再起動されたら、 作成された構成ファイルに従って iSCSI ターゲット が利用可能になっていることを確認することが重要です。

これは「tgtadm」コマンドで実行できます。


tgtadm --mode target --op show   (This will show all targets)

これでターゲットの設定は完了です。次のセクションではイニシエーターの構成について説明します。

Debian iSCSI イニシエーターの構成

前に構成したiSCSI ターゲットを使用する次の手順は、iSCSI イニシエータの構成です。

この記事では別の Debian 9 システムをイニシエータとして使用しますが、iSCSI プロトコルを利用できるシステムであれば、以前に構成したターゲットに接続できます。これには、XenServer/ESXi などのハイパーバイザーや、Red Hat、Debian、Ubuntu などの他のディストリビューションが含まれる可能性があります。

このDebian イニシエーターのこのプロセスの最初のステップは、iSCSI 用の適切なパッケージのインストールです。


apt-get update
apt-get install open-iscsi

apt がopen-iscsi パッケージの構成を完了すると、iSCSI イニシエーター の構成を開始できます。最初のステップはターゲットと通信して、準備されたターゲットの初期構成情報を取得することです。


iscsiadm -m discovery -t st -p 192.168.56.101

このコマンドを実行すると、この特定のホストに対して以前に構成されたLUN の名前が返されます。上記のコマンドは、新しく検出された LUN 情報用の 2 つのファイルも生成します。

このiSCSI ターゲットイニシエータから実際にアクセスできるようにするには、このノード用に作成されたファイルにCHAP情報を設定する必要があります。

技術的には、この情報はシステム全体に対して設定できますが、ホストが異なる資格情報で異なるLUNに接続する場合は、それらの資格情報を特定のノード構成ファイルに配置することで問題を軽減できます。

ノード構成ファイルはディレクトリ「/etc/iscsi/nodes/」に存在し、LUN ごとにディレクトリが使用可能になります。この記事の場合 (名前/IP アドレスが変更されるとパスも変わることに注意してください)。


/etc/iscsi/nodes/iqn.2018-02.linux-console.net\:lun1/192.168.56.101\,3260\,1/default

このファイルを操作するには、任意のテキスト エディタを使用できます。


nano /etc/iscsi/nodes/iqn.2018-02.linux-console.net\:lun1/192.168.56.101\,3260\,1/default

このファイル内には、以前に実行した「iscsiadm」コマンド中に決定された、それぞれのターゲットに対してすでに構成されたオプションがいくつかあります。

この特定の Debian のターゲット/ イニシエーターセットアップは相互CHAPを使用しているため、さらにいくつかのオプションを変更してこのファイルに追加し、iSCSI ターゲットにログインする必要があります。を実行しました。

このファイルへの変更は次のとおりです。


node.session.auth.authmethod = CHAP                    #Enable CHAP Authentication
node.session.auth.username = tecmint-iscsi-user        #Target to Initiator authentication
node.session.auth.password = password                  #Target to Initiator authentication
node.session.auth.username_in = debian-iscsi-target    #Initiator to Target authentication
node.session.auth.password_in = secretpass             #Initiator to Target authentication

上記のオプションにより、 このターゲットイニシエータに対して認証できるようになり、 またイニシエータターゲットに対して認証できるようになります。 >。

この特定のファイルには、管理者の設定に応じて変更する必要がある別のオプションがあります。それは「node.startup」パラメータです。

このガイドに従う場合、この時点で「node.startup」オプションは「手動」に設定されます。これは望ましくないかもしれません。管理者がシステム起動時にiSCSI ターゲットを接続したい場合は、次のように「手動」を「自動」に変更します。


node.startup = automatic

上記の変更を行ったら、ファイルを保存して終了します。この時点で、これらの新しい変更を読み取りiSCSI ターゲットに接続するには、open-iscsi イニシエーター サービスを再起動する必要があります。

これは、使用している init システムに応じて、次のコマンドのいずれかを使用して実行できます。


service open-iscsi restart   (For sysv init systems)
systemctl restart open-iscsi (For systemd init systems)

上の緑色のボックスで、iSCSI イニシエータターゲットにログインできたことに注目してください。 iSCSI ターゲットイニシエータで実際に利用可能であることをさらに確認するには、「lsblk」コマンドを使用して利用可能な追加のディスク ドライブがシステムにあるかどうかを確認します。 >' コマンドを実行し、余分なドライブの出力を確認します。


lsblk

ターゲットへの接続を確認するためにイニシエータで使用できるもう1つのコマンドは、「iscsiadm」です。


iscsiadm -m session

接続を確認する最後の場所は、「tgtadm」コマンドを使用して iSCSI 接続をリストするターゲット自体です。


tgtadm --mode conn --op show --tid 1

この時点から、新しく接続されたiSCSIデバイスは、通常接続されているディスクと同様に使用できるようになります。パーティショニング、ファイルシステムの作成、マウント、および/または永続的なマウントはすべて通常どおりに処理できます。

iSCSI デバイスに関して注意すべき大きな注意点の 1 つは、iSCSI ターゲットイニシエータの起動時に必要な重要なファイルシステムが含まれている場合、次のことを確認してください。 「/etc/fstab」ファイルの「_netdev」エントリを使用して、システムの起動を続行する前に iSCSI デバイスが接続されていることを確認します。