在 Red Hat Enterprise Linux 9 上挂载 iSCSI 卷
下面的教程将指导您如何在 Red Hat Enterprise Linux® 9 操作系统的 虚拟服务器 上挂载 IBM Cloud® Block Storage for Classic 卷。 您将创建从一个主机网络接口到存储阵列的两个目标 IP 的两个连接。
若您使用 Linux® 其他操作系统,请参阅您所用发行版的文档,并确保多路径功能支持ALUA以实现路径优先级控制。
准备工作
-
确保要访问该卷的主机 Block Storage for Classic 已获得授权。 有关更多信息,请参阅 在控制台中授权主机、从 CLI 授权主机以及使用 Terraform 授权主机。
-
要访问 IBM Cloud 的专用网络并与多项服务互动,需要使用活动 VPN 连接。
-
建立与服务器的 SSH 连接。 可以在控制台中找到 IP 地址、用户名和密码。 从菜单
,单击基础架构
> 经典基础架构 > 设备。 然后,在列表中找到您的服务器,并单击其名称以显示其详细信息。
如果多台主机挂载同一个 Block Storage for Classic 卷,而没有进行合作管理,数据就有可能损坏。 如果多台主机同时对卷进行更改,可能会导致卷损坏。 您需要一个群集感知的共享磁盘文件系统来防止数据丢失,如 Microsoft Cluster Shared Volumes (CSV)、Red Hat Global File System ( GFS2 )、VMware® VMFS 等。 有关更多信息,请参阅您的操作系统文档。
更新操作系统并安装 iSCSI 和多路径实用程序
确保系统已更新,并包含 iscsi-initiator-utils 和 device-mapper-multipath 软件包。 使用以下命令安装软件包。
-
更新操作系统。
sudo dnf update -
安装多路径实用程序
sudo dnf -y install device-mapper-multipath安装软件包后,输入
mpathconf --enable --user_friendly_names n命令启用它。 -
安装 ISCSI 实用程序
sudo dnf -y install iscsi-initiator-utils安装软件包后,使用
systemctl start iscsid命令启动它。
更新 iSCSI 配置文件
-
使用控制台 IBM Cloud® 中的IQN更新文件
/etc/iscsi/initiatorname.iscsi。- 下面的示例显示了如何检查当前启动程序名称。
[root@vsi4classic ~]# cat /etc/iscsi/initiatorname.iscsi InitiatorName=iqn.1994-05.com.redhat:7acdadcdc20- 在文本编辑器中打开文件:
vi /etc/iscsi/initiatorname.iscsi- 按以下格式输入 IQN:
InitiatorName=<value-from-the-Portal>,如下图所示。 将 IQN 值替换为您自己的值。
InitiatorName=iqn.2025-11.com.ibm:sl02su1414935-v154455886- 保存文件 (
:w) 并退出 (:x)。
-
使用 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。
-
重新启动 iscsid 服务。
systemctl restart iscsid -
针对 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)手册。
-
如果尚未执行,请输入带有
--enable选项的 mpathconf 命令。mpathconf --enable --user_friendly_names n -
使用
nano、vi或其他编辑器编辑/etc/multipath.conf文件。sudo vi /etc/multipath.conf -
添加以下最低配置。
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。 -
保存配置文件并退出编辑器。
-
发出以下命令。
systemctl start multipathd.service如果在启动 multipath 守护进程后需要编辑 multipath 配置文件,必须发布
systemctl reload multipathd.service命令才能使更改生效。
发现存储设备并登录
iscsiadm 工具是一种命令行工具,用于发现和登录 iSCSI 目标,以及访问和管理 open-iscsi 数据库。 更多信息,请参见 iscsiadm(8)手册。 在此步骤中,使用从控制台 IBM Cloud® 获取的目标IP地址发现设备。
-
对数组 iSCSI 执行发现操作。
iscsiadm -m discovery -t sendtargets -p TARGET IP如果显示了 IP 地址信息和访问详情,则说明发现成功。
-
登录 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.
验证配置
-
验证 iSCSI 会话是否已建立。
iscsiadm -m session -o show -
验证是否存在多条路径。
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提供额外的连接层级,并保持与卷的已建立会话,以执行活跃的读写操作。
-
列出所连接设备的分区表。
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.confman page。现在卷已安装到主机上并可供访问。 接下来就可以创建文件系统了。
创建文件系统(可选)
您可以通过执行以下步骤,在新安装的卷上创建文件系统。 大多数应用程序都需要文件系统才可使用卷。 对于小于 2 TB 的驱动器,请使用 fdisk;对于大于 2 TB 的磁盘,请使用 parted。
使用 fdisk 创建文件系统
-
获取磁盘名称。
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 -
在磁盘上创建分区。 下面的示例显示了使用默认值创建分区的情况。
[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). -
在新分区上创建文件系统。
-
新分区与磁盘一起列出,类似于
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
-
-
为文件系统创建安装点并安装文件系统。
-
创建分区名称
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
-
-
要启用启动时自动加载功能,请将新文件系统添加到系统的
/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 创建文件系统,请执行以下步骤。
-
启动交互式
partedshell。parted -
在磁盘上创建分区。
-
除非另有说明,该
parted实用程序将使用您的主驱动器,该驱动器在多数情况下为/dev/sda。 使用 select 命令切换到要分区的磁盘。 将 XXX 替换为新设备名称。select /dev/mapper/XXX -
运行
print以确认您当前所在的磁盘正确。print -
创建 GPT 分区表。
mklabel gpt -
可以使用
Parted来创建主磁盘分区和逻辑磁盘分区,这两个操作所涉及的步骤相同。 要创建分区,该实用程序使用mkpart. 可以为其提供其他参数,如 primary 或 logical,具体取决于您要创建的分区类型。mkpart列出的单位缺省为兆字节 (MB)。 要创建 10 GB 的分区,请从 1 开始,到 10000 结束。 还可以根据需要,通过输入
unit TB将大小单位更改为太字节。 -
使用
parted退出quit。quit
-
-
在新分区上创建文件系统。
mkfs.ext3 /dev/mapper/XXXp1执行此命令时,选择正确的磁盘和分区至关重要。 通过打印分区表来验证结果。 在文件系统列下,您可以看到 ext3.
-
为文件系统创建安装点并安装文件系统。
- 创建分区名称
PerfDisk或要在其中安装文件系统的分区的名称。
mkdir /PerfDisk- 使用分区名称安装存储器。
mount /dev/mapper/XXXp1 /PerfDisk- 检查是否看到新的文件系统列出。
df -h - 创建分区名称
-
要启用启动时自动加载功能,请将新文件系统添加到系统的
/etc/fstab文件中。- 将以下行附加到
/etc/fstab的末尾(使用步骤 3 中的分区名称)。
/dev/mapper/XXXp1 /PerfDisk ext3 defaults,_netdev 0 1更多信息,请参阅 Linux
/etc/fstab文件简介。 - 将以下行附加到
管理用户对已加载加密卷内容的权限
作为系统管理员,您可以管理对已加载卷上数据的访问。 文件系统准备就绪后,可以使用 chown 和 chmod 命令为单个用户和组分配读取、写入和执行权限,从而完善访问控制。 更多信息,请参阅 Red Hat 的教程:如何管理 Linux 用户、组和其他用户的权限。
验证 MPIO 配置
如果未正确配置 MPIO,那么当发生网络中断或 IBM Cloud® 团队执行维护时,存储设备可能断开连接并显示为脱机。 在这些事件期间,MPIO提供额外的连接层级,并保持与卷的已建立会话,以执行活跃的读写操作。
-
要检查多路径是否已识别设备,请列出当前配置。 如果配置正确,则每个卷都有一个组,路径数等于 iSCSI 会话数。
multipath -lroot@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: 0x2b5072d1WWID 包含在多路径创建的设备名称中。 建议您的应用程序使用 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 卷
- 卸装文件系统。
umount /dev/mapper/XXXp1 /PerfDisk - 如果您的目标门户网站中没有任何其他卷,那么可以从目标门户网站注销。
iscsiadm -m node -T <TARGET NAME> -p <PORTAL IP:PORT> --logout - 如果您的目标门户网站中没有任何其他卷,那么可以删除目标门户网站记录,以防止未来的登录尝试。
有关更多信息,请参阅 手册iscsiadm -m node -o delete -T <TARGET IQN> -p <PORTAL IP:PORT>iscsiadm。