附錄 B. iSCSI 磁碟

Internet Small Computer System Interface(iSCSI)是個允許電腦能夠透過 TCP/IP 來以 SCSI 請求與回應,以便和儲存裝置進行通訊的協定。因為 iSCSI 基於標準的 SCSI 協定,因此它使用了一些來自於 SCSI 的術語。在 SCSI bus 上,請求被傳送至的裝置(並且它也會回應這些請求)被視為是 target,並且發送請求的裝置則被視為是 initiator。換句話說,iSCSI 磁碟是個目標,並且與 SCSI 控制器或是 SCSI Host Bus Adapter(HBA)相當的 iSCSI 軟體則會被視為是個 initiator。本附錄只涵蓋了 Linux 為一個 iSCSI initiator:這將是有關於 Linux 如何使用 iSCSI 磁碟,而不是有關於 Linux 如何 host iSCSI 磁碟。
Linux 在 kernel 中含有一個取代了 SCSI HBA 驅動程式的軟體 iSCSI initiator,它允許 Linux 使用 iSCSI 磁碟。然而,因為 iSCSI 是個完全基於網路的協定,因此 iSCSI initiator 的支援不只需要能夠透過網路傳送 SCSI 封包。在 Linux 可使用一個 iSCSI target 之前,Linux 必須在網路上找到該目標並連上它。在某些情況下,Linux 必須傳送驗證資訊以存取目標。Linux 也必須偵測網路連線上的任何錯誤,並且必須建立新連線,包括在有必要的情況下重新登入。
搜尋、連線與登入皆會在用戶空間中透過 iscsiadm 工具來處理,並且錯誤處理也會在用戶空間中透過 iscsid 來處理。
iscsiadmiscsid 皆為 Red Hat Enterprise Linux 下的 iscsi-initiator-utils 套件的一部分。

B.1. Anaconda 中的 iSCSI 磁碟

Anaconda 安裝程式可透過兩種方式偵測並登入 iSCSI 磁碟:
  1. Anaconda 啟動時,它會檢查 BIOS 或是系統附加的開機 ROM 是否支援 iSCSI Boot Firmware Table(iBFT),這是個能夠以 iSCSI 啟動的系統的 BIOS 延伸。若 BIOS 支援 iBFT,anaconda 便會由 BIOS 讀取已配置的開機磁碟的 iSCSI target 資訊,並登入此 target,使它成為一個可用的安裝 target。
  2. 您可以在 anaconda 的圖形化介面中手動發現、新增 iSCSI 目標。從主選單的「安裝摘要」畫面裡,點選「安裝目標」選項。然後點選畫面中「特殊與網路磁碟」一節中的「新增磁碟」。可用儲存裝置的分頁清單會出現。在右下角,點選「新增 iSCSI 目標」按鈕,並繼續發現過程。詳情請參閱〈節 6.11.1, “選擇儲存裝置的畫面”〉。
Anaconda 使用 iscsiadm 來尋找並登入 iSCSI 目標;而 iscsiadm 會自動儲存任何關於這些目標的資訊至 iscsiadm iSCSI 資料庫裡。Anaconda 接下來會將這資料庫複製到安裝好的系統上,把不是用於 / 的任何 iSCSI 目標標誌起來,讓系統在開機時自動登入。如果 / 位於 iSCSI 目標上,那麼 initrd 會登入此目標,而且 anaconda 不會將這目標包括在啟動的 script 裡,以避免重複登入此目標。
/ 被放置在一個 iSCSI target 上的話,Anaconda 便會將 NetworkManager 設為忽略所有在安裝程序進行時所啟用的網路介面卡。這些介面卡在系統啟動時也會由 initrd 進行配置。若 NetworkManager 重新配置這些介面卡的話,系統將會失去它與 / 的連線。