付録B iSCSI ディスク

iSCSI (Internet Small Computer System Interface) (iSCSI) は、SCSI の要求と応答が TCP/IP 上で運用されることでコンピューターがストレージデバイスと通信できるようにするプロトコルです。iSCSI は標準の SCSI プロトコルを土台にしているため、SCSI の用語が一部使用されます。要求の送信先 (および要求に応える) SCSI バス上のデバイスは ターゲット と呼ばれており、要求を発行しているデバイスは イニシエーター と呼ばれます。つまり、iSCSI ディスクはターゲットであり、SCSI コントローラー、または SCSI Host Bus Adapter (HBA) に相当する iSCSI ソフトウェアがイニシエーターです。この付録は、Linux を iSCSI イニシエーターとしてのみ説明します。ここでは Linux が iSCSI ディスクを使用する方法を示しますが、Linux が iSCSI ディスクをホストする方法の説明はありません。
Linux は、SCSI HBA ドライバーの位置とその型式を取るソフトウェア iSCSI イニシエーターをカーネル内に持っており、Linux が iSCSI ディスクを使用できるようにします。しかし、iSCSI が 完全にネットワークベースのプロトコルであるため、iSCSI イニシエーターのサポートにはネットワーク上で SCSI パケットを送信する以上の能力が必要になります。 Linux が iSCSI ターゲットを使用できるようにするには、Linux はネットワーク上でターゲットを探して、それに接続する必要があります。場合によっては、Linux はターゲットへのアクセスを取得するために認証情報を送信しなければなりません。さらに Linux はネットワーク接続の障害を検出し、新規接続を確立する必要があります。これには、必要であれば再度ログインすることも含まれます。
発見、接続、およびログインは iscsiadm ユーティリティによってユーザースペース内で処理されます。さらにエラー処理も iscsid によってユーザースペース内で処理されます。
iscsiadmiscsid は両方とも、Red Hat Enterprise Linux 内の iscsi-initiator-utils パッケージの一部です。

B.1. anaconda 内の iSCSI ディスク

Anaconda は iSCSI ディスクを 2 つの方法で発見 (およびログイン)できます。
  1. anaconda がスタートすると、BIOS またはシステムの後付けブート ROM が iSCSI Boot Firmware Table (iBFT) をサポートするかどうかをチェックします。iBFT は iSCSI からブートできるシステム用の BIOS 拡張です。BIOS が iBFT をサポートする場合は、anaconda は BIOS から設定済みのブートディスク用の iSCSI ターゲット情報を読み込んで、このターゲットにログインします。これにより、ターゲットはインストールターゲットとして利用可能になります。
  2. インストール時に 特殊化したストレージデバイスオプションを選択すると、ストレージデバイス選択の画面が 高度なターゲットを追加 (Add Advanced Target) ボタンを表示します。このボタンをクリックすると、「発見 IP アドレス」などの iSCSI ターゲット情報を追加することができます。Anaconda はその該当する IP アドレスを探索してそれが見つけるターゲットのいずれかにログインします。iSCSI ターゲット用に指定できる詳細については 「高度なストレージオプション」を参照してください。
anaconda が iSCSI ターゲットを見つけてログインするために iscsiadm を使用すると、iscsiadm はこれらのターゲットについての情報を iscsiadm iSCSI データベースに自動的に保存します。次に Anaconda は、このデータベースをインストール済みのシステムにコピーして「/」のために使用されていない iSCSI ターゲットのいずれかをマークし、システムが開始するときにそれらに自動的にログインできるようにします。「/」が iSCSI ターゲット上に配置されている場合は、initrd がこのターゲットにログインして、anaconda は スタートアップスクリプトにこのターゲットを含めないようにして、同じターゲットへの複数回にわたるログイン試行を回避します。
/」が iSCSI ターゲット上に配置されている場合、anaconda はインストールプロセス時にアクティブであったネットワークインターフェースを無視するように NetworkManager を設定します。これらのインターフェースは、システムがスタートする時に initrd によって設定することもできます。NetworkManager がこれらのインターフェースを再設定する場合、システムは「/」への設定を失います。