你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

连接到弹性 SAN 卷 - Linux

本文介绍如何从单个 Linux 客户端连接到弹性存储区域网络 (SAN) 卷。 有关从 Windows 客户端进行连接的详细信息,请参阅连接到弹性 SAN 卷 - Windows

在本文中,你会将存储服务终结点添加到 Azure 虚拟网络的子网,然后将卷组配置为允许来自子网的连接。 最后,你会将客户端环境配置为连接到弹性 SAN 卷并建立连接。

将单个弹性 SAN 卷连接到多个客户端时,必须使用群集管理器。 有关详细信息,请参阅在 Azure 弹性 SAN 上使用群集应用程序

先决条件

连接到卷

设置客户端环境

启用 iSCSI 发起程序

若要从 Linux 客户端创建 iSCSI 连接,请安装 iSCSI 发起程序包。 确切的命令因发行版而异,如果需要,请查阅相关文档。

例如,对于 Ubuntu,应使用 sudo apt install open-iscsi;对于 SUSE Linux Enterprise Server (SLES),应使用 sudo zypper install open-iscsi;对于 Red Hat Enterprise Linux (RHEL),应使用 sudo yum install iscsi-initiator-utils

安装多路径 I/O

若要实现更高的卷 IOPS 和吞吐量并达到其最大限制,需要根据应用程序的多线程功能和性能要求,从 iSCSI 发起程序创建到目标卷的多个会话。 需要多路径 I/O 将这些路径聚合到单个设备,并通过基于负载均衡策略在所有可用路径中以最佳方式分配 I/O 来提高性能。

安装适用于你的 Linux 发行版的多路径 I/O 包。 安装命令因发行版而异,请查阅相关文档。 例如,在 Ubuntu 上,命令为 sudo apt install multipath-tools;而对于 SLES 和 RHEL,命令分别为 sudo zypper install multipath-toolssudo yum install device-mapper-multipath

安装该包后,检查 /etc/multipath.conf 是否存在。 如果 /etc/multipath.conf 不存在,请创建一个空文件并使用以下示例中的设置完成常规配置。 例如,mpathconf --enable 将在 RHEL 上创建 /etc/multipath.conf。

需要对 /etc/multipath.conf 进行一些修改。 需要添加以下示例中所示的 devices 节,且以下示例中的 defaults 节设置一些在通常情况下适用的默认值。 如果需要进行任何其他特定配置,例如从多路径拓扑中排除卷,请参阅 multipath.conf 的手册页。

defaults {
    user_friendly_names yes		# To create ‘mpathn’ names for multipath devices
    path_grouping_policy multibus	# To place all the paths in one priority group
    path_selector "round-robin 0"	# To use round robin algorithm to determine path for next I/O operation
    failback immediate			# For immediate failback to highest priority path group with active paths
    no_path_retry 1			# To disable I/O queueing after retrying once when all paths are down
}
devices {
  device {
    vendor "MSFT"
    product "Virtual HD"
  }
}

创建或修改文件后,重启多路径 I/O。 在 Ubuntu 上,命令为 sudo systemctl restart multipath-tools.service;在 RHEL 和 SLES 上,命令为 sudo systemctl restart multipathd

将卷附加到客户端

可以使用以下脚本来创建连接。 若要执行它,需要以下参数:

  • subscription:订阅 ID
  • g:资源组名称
  • e:弹性 SAN 名称
  • v:卷组名称
  • n <vol1, vol2, ...>:卷 1 和 2 的名称以及其他可能需要的卷名称,以逗号分隔
  • s:每个卷的会话数(默认设置为 32)

复制此处的脚本,并将其另存为 .py 文件,例如 connect.py。 然后使用所需的参数执行它。 以下是如何运行该脚本的示例:

./connect.py --subscription <subid> -g <rgname> -e <esanname> -v <vgname> -n <vol1, vol2> -s 32

可以使用 sudo multipath -ll 验证会话数

会话数量

需要对每个目标卷使用 32 个会话来实现其最大 IOPS 和/或吞吐量限制。

后续步骤

配置弹性 SAN 网络