文档中心 云硬盘(EBS) 用户指南 云盘多重挂载

云盘多重挂载

最近更新时间:2026-06-22 11:51:03

ESSD云盘支持多重挂载功能

ESSD云硬盘的多重挂载(Multi-Attach)功能,是指允许将单个云硬盘同时挂载给同一可用区(Availability Zone)内支持NVMe协议的多台云服务器实例使用,实现多台云服务器实例间的数据共享与并发读写。

应用场景

高可用故障转移集群(核心场景)

场景需求:在Oracle RAC、SAP HANA等核心数据库或关键应用中,需避免单点故障,要求主节点故障时业务能快速恢复。

解决方案:通过NVMe云盘的多重挂载能力,单块云盘可同时挂载到同一可用区的多台云服务器,数据实时共享。结合NVMe协议的Persistent Reservation (PR) 权限控制,可精确控制各节点的读写权限。

PR(PersistentReservation)属于NVMe协议的一部分,PR可精确地控制某个云盘的读写权限,从而确保计算端按照预期写入数据。更多信息,请参见Nvme PR锁命令说明及示例

故障切换流程

  1. 主库故障,业务中断

  2. 备库通过NVMe PR命令,立即剥夺主库写入权限

  3. 备库接管云盘,恢复业务(毫秒级切换)

数据共享与容器化场景

场景需求:在容器化或微服务架构中,多个实例需共享同一份配置、模型或数据集,避免数据复制带来的成本和延迟。

解决方案:将包含公共数据的NVMe云盘同时挂载到多个计算节点,所有节点均可并发读取,实现一写多读或数据共享。

典型场景:

  • 容器镜像共享:同一系统镜像供多个容器实例加载

  • 机器学习训练:多GPU节点共享同一份训练数据集,加速模型训练

  • 分布式缓存加速:为数据湖等系统提供高速缓存层

需要特别注意的是,多重挂载通常需要配合集群文件系统(如OCFS2、GFS2)使用,以确保多节点间数据一致性,常规的ext4/xfs等单机文件系统不适用于该场景。

计费说明

多重挂载功能本身不收费,使用多重挂载功能过程中涉及云硬盘、云主机实例等相关资源会产生费用。

使用限制

使用多重挂载功能存在如下限制条件:

资源

限制说明

云硬盘

  • 仅支持在单独创建云盘时开启多重挂载功能,不支持对存量云盘开启或关闭多重挂载功能。

  • 仅数据盘支持开启多重挂载,系统盘不支持开启多重挂载。

  • 仅支持按量付费的ESSD云盘。

  • 当您将单块云硬盘同时挂载到多台云主机实例时,所有云主机实例的性能总和不能超过该云盘的性能上限。

  • 开启多重挂载功能的云盘还不支持以下操作:

    • 随实例释放

    • 转换云盘计费方式

    • 重新初始化云硬盘

    • 云盘变配

    • 修改性能等级

    • 在线扩容

区域与可用区

云盘与云服务器实例必须处于同一个地域(Region)和可用区(AvailabilityZone)

内测阶段仅支持华东1(上海)- 可用区 A

云主机实例

实例类型需要支持NVMe。

您可以调用DescribeInstances接口,根据返回参数中的support_nvme参数判断实例类型是否支持NVMe。
如果您使用自定义镜像且未安装NVMe驱动,请参考为自定义镜像安装NVMe驱动

内测阶段仅支持X9

镜像

镜像需要包含NVMe驱动。

仅部分标准镜像包含NVMe驱动,您可以调用DescribeImages接口,根据返回参数中的NVMeSupport参数判断镜像是否支持NVMe。

操作步骤

步骤一:创建支持多重挂载的云硬盘

  1. 登录云硬盘控制台,点击“新建”。

  2. 在配置页面选择目标云盘,并勾选“开启”多重挂载。

  3. 完成创建和支付流程。

步骤二:挂载到第一台云服务器

  1. 在云服务器控制台,找到需要挂载共享云盘的实例。

  2. 点击“更多”-“云盘与镜像”-“挂载云硬盘”。

  3. 在弹窗内的列表页中找到刚刚创建的共享云盘并选中。

  4. 点击确定后完成挂载。

步骤三:挂载到其他云服务器

  1. 重复步骤二的操作,将云盘挂载到其他云服务器。

  2. 挂载完成后,您可以在实例详情页或云硬盘列表页查看挂载信息。

步骤四:配置集群文件系统

在所有挂载共享云盘的云服务器上,必须部署集群文件系统(如 OCFS2, GFS2 等)或集群管理软件(如 Oracle ASM),并确保文件系统仅在其中一台服务器上进行格式化,以协同管理并发读写、防止数据冲突。

本文以两台主机节点为例进行阐述,前置条件已经将一块nvme云盘数据盘多挂载到两台台虚拟机

主机名称

IP

镜像

云盘挂载状态

多挂载机器1

120.92.149.123

ubuntu22.04

多挂载机器2

120.92.216.47

ubuntu22.04

  1. 全新的盘建立集群文件系统

    1.1 安装ocfs2-tools工具(所有节点)

    sudo apt update sudo apt install ocfs2-tools

    1.2 设置hostname(所有节点)

    登录主机1,设置hostname为server1
    sudo hostnamectl set-hostname server1
    
    登录主机2,设置hostname为server2
    sudo hostnamectl set-hostname server2

1.3 创建集群配置文件(所有节点)

在所有实例上执行一下命令,打开集群文件系统配置文件

sudo vim /etc/ocfs2/cluster.conf

在打开的配置文件输入以下内容:

node:
    ip_port = 7777
    ip_address = 172.31.7.133
    number = 0
    name = server1
    cluster = ocfs2

node:
    ip_port = 7777
    ip_address = 172.31.4.135
    number = 1
    name = server2
    cluster = ocfs2

cluster:
    node_count = 2
    name = ocfs2

ip_address:实例的私有IP地址,请根据实际情况进行替换。

number:节点序号从0开始。

name:第i步设置的实例hostname,请根据实际情况进行替换。

node_count:云主机实例的个数,请根据实际情况进行替换。

如果您的实际环境不止两台云主机实例,请继续添加node部分,并修改node_count的值。

因此,以上示例表示,涉及2台云主机实例,第一台实例的hostname为server1,实例的私网IP为172.31.7.133;第二台实例的hostname为server2,实例的私网IP为172.31.4.135

1.4 注册集群,启动集群服务(所有节点)

  • 在所有云主机实例上执行以下命令,注册集群

sudo o2cb register-cluster ocfs2
  • 查看注册结果、查看节点列表

ls -la /sys/kernel/config/cluster/ocfs2/node/
sudo o2cb list-nodes ocfs2
  • 在所有云主机实例上执行以下命令,启动集群文件系统相关服务

sudo systemctl start o2cb
sudo systemctl status o2cb

1.5 格式化ocfs2文件系统(仅在任意一个节点执行)

mkfs.ocfs2 --cluster-stack=o2cb  --cluster-name=ocfs2 /dev/nvme0n1

1.6 挂载ocfs2文件系统(所有节点)

mkdir /mnt/ocfs2
mount -t ocfs2 /dev/nvme0n1 /mnt/ocfs2

主机1

主机2

1.7 验证ocfs2文件系统(所有节点)

进入挂载目录,在server1执行以下命令创建一个文件,例如test.txt

root@vm172-31-7-133:~# hostname
server1
root@vm172-31-7-133:~# cd /mnt/ocfs2/
root@vm172-31-7-133:/mnt/ocfs2# touch test.txt
root@vm172-31-7-133:/mnt/ocfs2# echo 111 > test.txt
root@vm172-31-7-133:/mnt/ocfs2# 

登录另一台server2,执行以下命令,查看test.txt文件是否存在

root@vm172-31-4-135:/mnt/ocfs2# hostname
server2
root@vm172-31-4-135:/mnt/ocfs2# cd /mnt/ocfs2/
root@vm172-31-4-135:/mnt/ocfs2# ls
lost+found  test.txt
root@vm172-31-4-135:/mnt/ocfs2# cat test.txt
111
root@vm172-31-4-135:/mnt/ocfs2# 

如果test.txt文件存在,则表示集群文件系统服务正常。

上一篇:性能测试
下一篇:变更云盘类型
以上内容是否对您有帮助?
有帮助
没帮助