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

连接到弹性 SAN 卷 - Linux

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

在本文中,你将将卷组配置为允许来自子网的连接,然后将客户端环境配置为连接到弹性 SAN 卷并建立连接。

将单个弹性 SAN 卷连接到多个客户端时,必须使用群集管理器。 有关详细信息,请参阅 在 Azure Elastic 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 上命令将是 sudo zypper install multipath-tools,在 RHEL 上命令将是 sudo yum install device-mapper-multipath

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

需要对 /etc/multipath.conf 进行一些修改。 需要在以下示例中添加 devices 节,以下示例中的默认值部分设置了一些通常通用的默认值。 如果需要进行其他特定配置,例如从多路径拓扑中排除卷,请参阅 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 3			# To disable I/O queueing after retrying once when all paths are down
    polling_interval 5         # Set path check polling interval to 5 seconds
    find multipaths yes        # To allow multipath to take control of only those devices that have multiple paths 
}
devices {
  device {
    vendor "MSFT"
    product "Virtual HD"
  }
}

创建或修改文件后,重启 Multipath 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 和/或吞吐量限制。

可以使用以下说明运行脚本来更改会话计数:

注释

用于 -n 设置会话数。 该参数接受从 1 到 32 的值,默认值为 32。

python3 connect_for_documentation.py \ 

--subscription <your-subscription-id>\ 

-g <resource-group>\ 

-e <elastic-san-name>\ 

-v <volume-group-name>\ 

-n volume1 volume2 \ 

-s <value>

后续步骤

配置弹性 SAN 网络