附录 B. iSCSI 磁盘

互联网小计算机系统接口(iSCSI)是允许计算机与存储设备通过 TCP/IP 协议发送的 SCSI 请求和响应沟通。因为 iSCSI 是基于标准 SCSI 协议,所以它沿用 SCSI 的术语。SCSI 总线中发送请求的设备以及回应这些请求的设备被称为对象(target),发出请求的设备被称为发起方(initiator)。换句话说,iSCSI 磁盘是一个对象,而等同于 SCSI 控制器或者 SCSI 主机总线适配器(HBA)的 iSCSI 软件被称为发起方。本附录只将 Linux 作为 iSCSI 发起方进行讨论:即 Linux 如何使用 iSCSI 磁盘而不是 Linux 托管 iSCSI 磁盘。
Linux 在内核中有一个软件 iSCSI 发起方并组成 SCSI HBA 驱动程序,因此可允许 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 磁盘:
  1. 启动 Anaconda 时,它会检查系统 BIOS 或者附加引导 ROM是否支持 iSCSI 引导固件表(iBFT),是可使用 iSCSI 引导的系统 BIOS 扩展。Anaconda 会为配置的引导磁盘从 BIOS 中读取 iSCSI 对象信息,并登录到这个对象,使其成为可用安装对象。

    重要

    要指定连接到 iSCSI 目标,则需要激活访问该目标的网络设备。建议使用 ip=ibft 引导选项完成此操作。
  2. 您可以使用 anaconda 的图形用户界面手动查找并添加 iSCSI 目标。在主菜单,即安装概述页面中点击安装目的系统选项。然后点击该页面 指定的 & 网络磁盘 部分的 添加磁盘 按钮。此时会出现可用存储设备的标签列表。在右下角点击 添加 iSCSI Target 按钮并执行查找过程。详情请查看 第 6.15.1 节 “存储设备选择页面”
    不能将 /boot 分区放到 iSCSI 目标中,可使用这个方法手动添加 - 必须为与 iBFT 配合使用配置包含 /boot 分区的 iSCSI 目标。
Anaconda 使用 iscsiadm 查找并登录到 iSCSI 目标时,iscsiadm 会将有关这些目标的所有信息自动保存到 iscsiadm iSCSI 数据库中。Anaconda 会将这个数据库复制到安装的系统中,并标记所有不用于 / 的 iSCSI 目标,以便系统可在启动时自动登录到该目标。如果将 / 放在 iSCSI 目标中,initrd 将登录到这个目标,同时 anaconda 将不在启动脚本中包含这个目标以避免多次尝试登录到同一目标中。
如果将 / 放在 iSCSI 对象中,Anaconda 会将 NetworkManager 设置为忽略任意在安装过程中激活的网络接口。系统启动时 initrd 还会配置这些接口。如果 NetworkManager 要重新配置这些接口,则系统会丢失其与 / 的连接。