IBM Cloud Docs
在 Red Hat Enterprise Linux 9 上挂载 iSCSI 卷

在 Red Hat Enterprise Linux 9 上挂载 iSCSI 卷

下面的教程将指导您如何在 Red Hat Enterprise Linux® 9 操作系统的 虚拟服务器 上挂载 IBM Cloud® Block Storage for Classic 卷。 您将创建从一个主机网络接口到存储阵列的两个目标 IP 的两个连接。

若您使用 Linux® 其他操作系统,请参阅您所用发行版的文档,并确保多路径功能支持ALUA以实现路径优先级控制。

准备工作

  1. 确保要访问该卷的主机 Block Storage for Classic 已获得授权。 有关更多信息,请参阅 在控制台中授权主机、从 CLI 授权主机以及使用 Terraform 授权主机

  2. 要访问 IBM Cloud 的专用网络并与多项服务互动,需要使用活动 VPN 连接

  3. 建立与服务器的 SSH 连接。 可以在控制台中找到 IP 地址、用户名和密码。 从菜单 菜单图标,单击基础架构 VPC 图标 > 经典基础架构 > 设备。 然后,在列表中找到您的服务器,并单击其名称以显示其详细信息。

如果多台主机挂载同一个 Block Storage for Classic 卷,而没有进行合作管理,数据就有可能损坏。 如果多台主机同时对卷进行更改,可能会导致卷损坏。 您需要一个群集感知的共享磁盘文件系统来防止数据丢失,如 Microsoft Cluster Shared Volumes (CSV)、Red Hat Global File System ( GFS2 )、VMware® VMFS 等。 有关更多信息,请参阅您的操作系统文档。

更新操作系统并安装 iSCSI 和多路径实用程序

确保系统已更新,并包含 iscsi-initiator-utilsdevice-mapper-multipath 软件包。 使用以下命令安装软件包。

  1. 更新操作系统。

    sudo dnf update
    
  2. 安装多路径实用程序

    sudo dnf -y install device-mapper-multipath
    

    安装软件包后,输入 mpathconf --enable --user_friendly_names n 命令启用它。

  3. 安装 ISCSI 实用程序

    sudo dnf -y install iscsi-initiator-utils
    

    安装软件包后,使用 systemctl start iscsid 命令启动它。

更新 iSCSI 配置文件

  1. 使用控制台 IBM Cloud® 中的IQN更新文件 /etc/iscsi/initiatorname.iscsi

    1. 下面的示例显示了如何检查当前启动程序名称。
    [root@vsi4classic ~]# cat /etc/iscsi/initiatorname.iscsi
    InitiatorName=iqn.1994-05.com.redhat:7acdadcdc20
    
    1. 在文本编辑器中打开文件:
    vi /etc/iscsi/initiatorname.iscsi
    
    1. 按以下格式输入 IQN:InitiatorName=<value-from-the-Portal>,如下图所示。 将 IQN 值替换为您自己的值。
    InitiatorName=iqn.2025-11.com.ibm:sl02su1414935-v154455886
    
    1. 保存文件 (:w) 并退出 (:x)。
  2. 使用 IBM Cloud® 控制台中的用户名和密码,取消注释并更新 /etc/iscsi/iscsid.conf 中的以下条目。 对 CHAP 名称请使用大写。

    node.session.auth.authmethod = CHAP
    node.session.auth.username = <Username-value-from-Portal>
    node.session.auth.password = <Password-value-from-Portal>
    discovery.sendtargets.auth.authmethod = CHAP
    discovery.sendtargets.auth.username = <Username-value-from-Portal>
    discovery.sendtargets.auth.password = <Password-value-from-Portal>
    

    不要更改其他 CHAP 设置。IBM Cloud® 存储只使用单向身份验证。 不要启用相互 CHAP。

  3. 重新启动 iscsid 服务。

    systemctl restart iscsid
    
  4. 针对 iSCSI 阵列运行发现程序,验证配置是否正确。

    iscsiadm -m discovery -t sendtargets -p TARGET IP
    

    如果显示了 IP 地址信息和访问详情,则说明发现成功。

    [root@vsi4classic ~]# iscsiadm -m discovery -t sendtargets -p 161.26.99.113
     161.26.99.113:3260,1034 iqn.1992-08.com.netapp:stfdal1006
     161.26.99.110:3260,1030 iqn.1992-08.com.netapp:stfdal1006
    

设置多路径

您可以使用 mpathconf 实用程序设置 DM 多路径,该程序会创建多路径配置文件 /etc/multipath.conf。 有关 mpathconf 实用程序的更多信息,请参见 mpathconf(8)手册。

  1. 如果尚未执行,请输入带有 --enable 选项的 mpathconf 命令。

    mpathconf --enable --user_friendly_names n
    
  2. 使用 nanovi 或其他编辑器编辑 /etc/multipath.conf 文件。

    sudo vi /etc/multipath.conf
    
  3. 添加以下最低配置。

    defaults {
    user_friendly_names no
    find_multipaths on
    max_fds max
    flush_on_last_del yes
    queue_without_daemon no
    dev_loss_tmo infinity
    fast_io_fail_tmo 5
    }
    # All data in the following section must be specific to your system.
    blacklist {
    wwid "SAdaptec*"
    devnode "^hd[a-z]"
    devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
    devnode "^cciss.*"
    }
    devices {
    device {
    vendor "NETAPP"
    product "LUN"
    path_grouping_policy group_by_prio
    features "2 pg_init_retries 50"
    no_path_retry queue
    prio "alua"
    path_checker tur
    failback immediate
    path_selector "round-robin 0"
    hardware_handler "1 alua"
    rr_weight uniform
    rr_min_io 128
    }
    }
    

    配置文件的初始默认设置部分会对系统进行配置,使多路径设备的名称格式为 /dev/mapper/mpath n,其中 mpath n 是设备的 WWID。

  4. 保存配置文件并退出编辑器。

  5. 发出以下命令。

    systemctl start multipathd.service
    

    如果在启动 multipath 守护进程后需要编辑 multipath 配置文件,必须发布 systemctl reload multipathd.service 命令才能使更改生效。

发现存储设备并登录

iscsiadm 工具是一种命令行工具,用于发现和登录 iSCSI 目标,以及访问和管理 open-iscsi 数据库。 更多信息,请参见 iscsiadm(8)手册。 在此步骤中,使用从控制台 IBM Cloud® 获取的目标IP地址发现设备。

  1. 对数组 iSCSI 执行发现操作。

    iscsiadm -m discovery -t sendtargets -p TARGET IP
    

    如果显示了 IP 地址信息和访问详情,则说明发现成功。

  2. 登录 iSCSI 阵列。

    iscsiadm -m node --login
    
    [root@vsi4classic ~]# iscsiadm -m node --login
    Login to [iface: default, target: iqn.1992-08.com.netapp:stfdal1006, portal: 161.26.99.110,3260] successful.
    Login to [iface: default, target: iqn.1992-08.com.netapp:stfdal1006, portal: 161.26.99.113,3260] successful.
    

验证配置

  1. 验证 iSCSI 会话是否已建立。

    iscsiadm -m session -o show
    
  2. 验证是否存在多条路径。

    multipath -l
    

    此命令会报告路径。 如果配置正确,那么每个卷都有一个组,路径数等于 iSCSI 会话数。 可以使用单一路径连接卷,但必须在两条路径上都建立连接,以防止服务中断。

    [root@vsi4classic ~]# multipath -l
    3600a0980383056716724514550666270 dm-0 NETAPP,LUN C-Mode
    size=20G features='3 queue_if_no_path pg_init_retries 50' hwhandler='1 alua' wp=rw
    |-+- policy='round-robin 0' prio=0 status=active
    | `- 2:0:0:0 sda 8:0  active undef running
    `-+- policy='round-robin 0' prio=0 status=enabled
      `- 3:0:0:0 sdb 8:16 active undef running
    

    如果未正确配置 MPIO,那么当发生网络中断或 IBM Cloud® 团队执行维护时,存储设备可能断开连接并显示为脱机。 在这些事件期间,MPIO提供额外的连接层级,并保持与卷的已建立会话,以执行活跃的读写操作。

  3. 列出所连接设备的分区表。

    fdisk -l | grep /dev/mapper
    

    默认情况下,存储设备会连接到 /dev/mapper/<wwid>。 当卷存在时,WWID 是持久的。 该命令会报告类似以下示例的内容。

    [root@vsi4classic ~]# fdisk -l | grep /dev/mapper
    Disk /dev/mapper/3600a0980383056716724514550666270: 20 GiB, 21474836480 bytes, 41943040 sectors
    

    在示例中,字符串 3600a0980383056716724514550666270 是 WWID。 您的应用程序应该使用 WWID。 还可以在 multipath.conf 中使用 "user_friendly_names "或 "alias "关键字来指定更易于阅读的名称。 更多信息,请参见 multipath.conf man page

    现在卷已安装到主机上并可供访问。 接下来就可以创建文件系统了。

创建文件系统(可选)

您可以通过执行以下步骤,在新安装的卷上创建文件系统。 大多数应用程序都需要文件系统才可使用卷。 对于小于 2 TB 的驱动器,请使用 fdisk对于大于 2 TB 的磁盘,请使用 parted

使用 fdisk 创建文件系统

  1. 获取磁盘名称。

    fdisk -l | grep /dev/mapper
    
    [root@vsi4classic ~]# fdisk -l | grep /dev/mapper
    Disk /dev/mapper/3600a0980383056716724514550666270: 20 GiB, 21474836480 bytes, 41943040 sectors
    
    [root@vsi4classic ~]# fdisk -l /dev/mapper/3600a0980383056716724514550666270
    Disk /dev/mapper/3600a0980383056716724514550666270: 20 GiB, 21474836480 bytes, 41943040 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 4096 bytes
    I/O size (minimum/optimal): 4096 bytes / 65536 bytes
    
  2. 在磁盘上创建分区。 下面的示例显示了使用默认值创建分区的情况。

    [root@vsi4classic ~]# fdisk /dev/mapper/3600a0980383056716724514550666270
    
    Welcome to fdisk (util-linux 2.37.4).
    Changes will remain in memory only, until you decide to write them.
    Be careful before using the write command.
    
    Device does not contain a recognized partition table.
    Created a new DOS disklabel with disk identifier 0x2aa2e16c.
    
    Command (m for help): n
    Partition type
      p   primary (0 primary, 0 extended, 4 free)
      e   extended (container for logical partitions)
    Select (default p): p
    Partition number (1-4, default 1): 1
    First sector (2048-41943039, default 2048): 2048
    Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-41943039, default 41943039): 41943039
    
    Created a new partition 1 of type 'Linux' and of size 20 GiB.
    
    Command (m for help): w
    The partition table has been altered.
    Calling ioctl() to re-read partition table.
    Re-reading the partition table failed.: Invalid argument
    
    The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or partx(8).
    
  3. 在新分区上创建文件系统。

    • 新分区与磁盘一起列出,类似于 XXXp1,然后是大小、类型 (83) 和 Linux®。记下分区名称,下一步需要它。 (XXXp1 表示分区名称。)

      [root@vsi4classic ~]# fdisk -l /dev/mapper/3600a0980383056716724514550666270
      Disk /dev/mapper/3600a0980383056716724514550666270: 20 GiB, 21474836480 bytes, 41943040 sectors
      Units: sectors of 1 * 512 = 512 bytes
      Sector size (logical/physical): 512 bytes / 4096 bytes
      I/O size (minimum/optimal): 4096 bytes / 65536 bytes
      Disklabel type: dos
      Disk identifier: 0x2aa2e16c
      
      Device                                           Boot Start      End  Sectors Size Id Type
      /dev/mapper/3600a0980383056716724514550666270p1        2048 41943039 41940992  20G 83 Linu
      
    • 创建文件系统:

      mkfs.ext3 /dev/mapper/XXXp1
      
      [root@vsi4classic ~]# mkfs.ext3 /dev/mapper/3600a0980383056716724514550666270p1
      mke2fs 1.46.5 (30-Dec-2021)
      Discarding device blocks: done                            
      Creating filesystem with 5242624 4k blocks and 1310720 inodes
      Filesystem UUID: 09e7f833-32b7-4c7f-ab68-8c6083cb8a63
      Superblock backups stored on blocks:
          32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
          4096000
      
      Allocating group tables: done                            
      Writing inode tables: done                            
      Creating journal (32768 blocks): done
      Writing superblocks and filesystem accounting information: done
      
  4. 为文件系统创建安装点并安装文件系统。

    • 创建分区名称 PerfDisk 或要在其中安装文件系统的分区的名称。

      mkdir /PerfDisk
      
    • 使用分区名称安装存储器。

      mount /dev/mapper/XXXp1 /PerfDisk
      
    • 检查是否看到新的文件系统列出。

      df -h
      
      [root@vsi4classic ~]# mkdir /PerfDisk
      [root@vsi4classic ~]# mount /dev/mapper/3600a0980383056716724514550666270p1 /PerfDisk
      [root@vsi4classic ~]# df -h
      Filesystem                                       Size  Used Avail Use% Mounted on
      devtmpfs                                         4.0M     0  4.0M   0% /dev
      tmpfs                                            469M     0  469M   0% /dev/shm
      tmpfs                                            188M   11M  177M   6% /run
      /dev/xvda2                                        24G  2.0G   21G   9% /
      /dev/xvda1                                       974M  320M  588M  36% /boot
      tmpfs                                             94M     0   94M   0% /run/user/0
      /dev/mapper/3600a0980383056716724514550666270p1   20G  156K   19G   1% /PerfDisk
      
  5. 要启用启动时自动加载功能,请将新文件系统添加到系统的 /etc/fstab 文件中。

    • 将以下行附加到 /etc/fstab 的末尾(使用步骤 3 中的分区名称)。
    /dev/mapper/XXXp1    /PerfDisk    ext3    defaults,_netdev    0    1
    

    更多信息,请参阅 Linux /etc/fstab 文件简介

使用 parted 创建文件系统

Red Hat Enterprise Linux® 9 预装了 parted。 不过,如果需要的话,你可以通过执行以下命令来安装它。

dnf install parted

要使用 parted 创建文件系统,请执行以下步骤。

  1. 启动交互式 parted shell。

    parted
    
  2. 在磁盘上创建分区。

    1. 除非另有说明,该 parted 实用程序将使用您的主驱动器,该驱动器在多数情况下为 /dev/sda。 使用 select 命令切换到要分区的磁盘。 将 XXX 替换为新设备名称。

      select /dev/mapper/XXX
      
    2. 运行 print 以确认您当前所在的磁盘正确。

      print
      
    3. 创建 GPT 分区表。

      mklabel gpt
      
    4. 可以使用 Parted 来创建主磁盘分区和逻辑磁盘分区,这两个操作所涉及的步骤相同。 要创建分区,该实用程序使用 mkpart. 可以为其提供其他参数,如 primarylogical,具体取决于您要创建的分区类型。

      mkpart
      

      列出的单位缺省为兆字节 (MB)。 要创建 10 GB 的分区,请从 1 开始,到 10000 结束。 还可以根据需要,通过输入 unit TB 将大小单位更改为太字节。

    5. 使用 parted 退出 quit

      quit
      
  3. 在新分区上创建文件系统。

    mkfs.ext3 /dev/mapper/XXXp1
    

    执行此命令时,选择正确的磁盘和分区至关重要。 通过打印分区表来验证结果。 在文件系统列下,您可以看到 ext3.

  4. 为文件系统创建安装点并安装文件系统。

    • 创建分区名称 PerfDisk 或要在其中安装文件系统的分区的名称。
    mkdir /PerfDisk
    
    • 使用分区名称安装存储器。
    mount /dev/mapper/XXXp1 /PerfDisk
    
    • 检查是否看到新的文件系统列出。
    df -h
    
  5. 要启用启动时自动加载功能,请将新文件系统添加到系统的 /etc/fstab 文件中。

    • 将以下行附加到 /etc/fstab 的末尾(使用步骤 3 中的分区名称)。
    /dev/mapper/XXXp1    /PerfDisk    ext3    defaults,_netdev    0    1
    

    更多信息,请参阅 Linux /etc/fstab 文件简介

管理用户对已加载加密卷内容的权限

作为系统管理员,您可以管理对已加载卷上数据的访问。 文件系统准备就绪后,可以使用 chownchmod 命令为单个用户和组分配读取、写入和执行权限,从而完善访问控制。 更多信息,请参阅 Red Hat 的教程:如何管理 Linux 用户、组和其他用户的权限

验证 MPIO 配置

如果未正确配置 MPIO,那么当发生网络中断或 IBM Cloud® 团队执行维护时,存储设备可能断开连接并显示为脱机。 在这些事件期间,MPIO提供额外的连接层级,并保持与卷的已建立会话,以执行活跃的读写操作。

  • 要检查多路径是否已识别设备,请列出当前配置。 如果配置正确,则每个卷都有一个组,路径数等于 iSCSI 会话数。

    multipath -l
    
    root@server:~# multipath -l
    3600a09803830304f3124457a45757067 dm-1 NETAPP,LUN C-Mode
    size=20G features='1 queue_if_no_path' hwhandler='0' wp=rw
    |-+- policy='round-robin 0' prio=-1 status=active
    | `6:0:0:101 sdd 8:48 active ready running
    `-+- policy='round-robin 0' prio=-1 status=enabled
     `- 7:0:0:101 sde 8:64 active ready running
    

    示例中的字符串 3600a09803830304f3124457a45757067 是加密卷的唯一 WWID。 每个加密卷都由其独一无二的 WWID 标识,在加密卷存在期间,WWID 始终存在。

  • 确认所有磁盘都在。 在正确的配置中,输出中会显示两个具有相同标识符的磁盘,以及具有相同标识符的相同大小的 /dev/mapper 列表。 /dev/mapper 设备是多路径设置的设备。

    fdisk -l | grep Disk
    
    • 正确配置的输出示例。
    root@server:~# fdisk -l | grep Disk
    Disk /dev/sda: 500.1 GB, 500107862016 bytes Disk identifier: 0x0009170d
    Disk /dev/sdc: 21.5 GB, 21474836480 bytes Disk identifier: 0x2b5072d1
    Disk /dev/sdb: 21.5 GB, 21474836480 bytes Disk identifier: 0x2b5072d1
    Disk /dev/mapper/3600a09803830304f3124457a45757066: 21.5 GB, 21474836480 bytes Disk identifier: 0x2b5072d1
    

    WWID 包含在多路径创建的设备名称中。 建议您的应用程序使用 WWID。

    • 错误配置的示例输出。 没有 /dev/mapper 磁盘。
    root@server:~# fdisk -l | grep Disk
    Disk /dev/sda: 500.1 GB, 500107862016 bytes Disk identifier: 0x0009170d
    Disk /dev/sdc: 21.5 GB, 21474836480 bytes Disk identifier: 0x2b5072d1
    Disk /dev/sdb: 21.5 GB, 21474836480 bytes Disk identifier: 0x2b5072d1
    
  • 要确认多路径设备列表中不包括本地磁盘,请使用 3 级冗余度显示当前配置。 以下命令的输出会显示设备,并显示哪些设备被添加到了拦截列表。

    multipath -l -v 3 | grep sd <date and time>
    
  • 如果在第二条路径关闭时配置并连接了卷,那么在首次运行发现扫描时,主机可能只看到一条路径。 如果遇到这种罕见现象,请检查 IBM Cloud® 状态页面,查看是否正在发生影响主机访问存储能力的事件。 如果没有报告事件,请再次执行发现扫描,以确保正确发现所有路径。 如果事件正在进行中,则可通过单一路径连接存储设备。 不过,在活动结束后,必须重新扫描路径。 如果重新扫描后仍未发现这两条路径,请 创建支持案例,以便进行适当调查。

卸装 Block Storage for Classic 卷

  1. 卸装文件系统。
    umount /dev/mapper/XXXp1 /PerfDisk
    
  2. 如果您的目标门户网站中没有任何其他卷,那么可以从目标门户网站注销。
    iscsiadm -m node -T <TARGET NAME> -p <PORTAL IP:PORT> --logout
    
  3. 如果您的目标门户网站中没有任何其他卷,那么可以删除目标门户网站记录,以防止未来的登录尝试。
    iscsiadm -m node -o delete -T <TARGET IQN> -p <PORTAL IP:PORT>
    
    有关更多信息,请参阅 手册 iscsiadm