全部文档
当前文档

共搜索到 0 条结果

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

ESSD多主机集群文件系统构建-最佳实践

最近更新时间:2026-06-24 10:30:02

零、功能说明与应用场景

云硬盘多重挂载(Multi-Attach): 是指允许将单个云硬盘同时挂载给同一可用区(Availability Zone)内的多台云服务器实例使用的功能。该功能主要用于构建高可用集群系统。通过多重挂载,多台云服务器可以并发读写同一块云盘,为企业级关键业务(如 Oracle RAC、SAP HANA、高可用故障转移集群)提供共享块存储能力。

业务应用场景:

  • 在Oracle Real Application Cluster (RAC) 架构中,多个数据库实例运行在不同的物理节点上,但必须共同访问同一套数据库文件(包括数据文件、控制文件、联机重做日志等)。OCFS2由 Oracle 开发,专为 Oracle RAC 环境设计,与 Oracle 生态深度绑定。能够支持这种多节点并发、安全、一致的读写需求。

  • 在分布式计算与 AI 训练中,业务需求支持高速缓存机制和并行 I/O,可用于构建分布式数据库或热在线 AI/ML 训练。通过将训练任务分布到多个节点并共享同一数据,可以有效整合内存和 IO 资源,显著提高训练速度并实现故障自动恢复。

  • Web / 中间件负载均衡集群(LAMP、Tomcat、Nginx):全站静态资源、代码包、配置文件统一存放,所有 web 节点共用一份文件,无需 rsync 同步;发布一次全集群生效。

  • 自建数据库集群(非 Oracle):MySQL 主从集群、MySQL InnoDB Cluster 共享日志、数据目录;PostgreSQL 集群共享表空间、WAL 日志,多节点并发读写共享磁盘,相比 NFS 锁性能更强、一致性更好

一、资源准备

1. 创建X9 服务器

机型:(当前仅上海A X9云服务器支持ESSD多重挂载---需开白名单)

镜像:镜像需要包含NVMe驱动。

仅部分标准镜像包含NVMe驱动,您可以调用DescribeImages接口,根据返回参数中的support_nvme参数判断镜像是否支持NVMe。
附:上海地区已含NVME驱动标准镜像列表

镜像ID

平台

启动模式

操作系统

状态

NVMe驱动

更新时间

IMG-1f3ea2a0-b292-49ee-b44b-7611c8a3df01

DEBIAN

BIOS(Legacy)

Debian-12.7 64 位

可用

支持

2026/5/29 16:42

IMG-6e914804-7f5d-4524-9aed-0f7ee4a9d8cc

ROCKYLINUX

BIOS(Legacy)

RockyLinux-10.1 64位

可用

支持

2026/5/29 18:30

IMG-ef255cc8-5e23-4250-870b-845c9ee72351

ROCKYLINUX

BIOS(Legacy)

RockyLinux-9.1 64位

可用

支持

2026/6/2 17:23

IMG-e5db3c55-6ae6-401c-9ef7-981498efa9c8

UBUNTU

BIOS(Legacy)

Ubuntu-22.04 64位

可用

支持

2026/5/29 14:27

IMG-1ddcb0ea-a707-4751-a3d7-ef724f5da22e

UBUNTU

BIOS(Legacy)

Ubuntu-24.04 64位

可用

支持

2026/5/29 15:36

2. 创建多重挂载ESSD云盘。

3. 挂载到X9服务器

这里可以在创建时同时挂载到第一台服务器,或者创建后再挂载两次

挂载两次完成如图。 (注意挂载第一台完成后建议刷新页面再挂载第二台)

二、集群文件系统构建(ocfs2)

本示例以两台KEC实例为例。

1. 在所有KEC实例上执行以下命令,更新apt并安装ocfs2-tools工具。

sudo apt update
sudo apt install ocfs2-tools

2. 修改KEC实例的hostname,并配置集群配置文件。

2.1 在所有实例上执行以下命令,通过设置hostname来识别不同的KEC实例。

本示例以设置第一个实例的hostname是server1,第二个实例的hostname是server2为例,不同实例的hostname不能设置相同。

  • 登录第一台实例,执行以下命令设置hostname为server1

sudo hostnamectl set-hostname server1
  • 登录第二台实例,执行以下命令设置hostname为server2

sudo hostnamectl set-hostname server2

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

sudo vim /etc/ocfs2/cluster.conf

并在打开的文件中输入以下内容。

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

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

cluster:
 node_count=2
 name=ocfs2

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

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

node_countKEC实例的个数,请根据实际情况进行替换。


Esc键退出编辑模式,并输入:wq保存退出。

3. 在所有KEC实例上执行以下命令,启动集群文件系统相关服务。

sudo systemctl restart ocfs2
sudo systemctl enable ocfs2
sudo systemctl restart o2cb
sudo systemctl enable o2cb

4. 在所有KEC实例上执行命令注册集群。

sudo o2cb register-cluster ocfs2

5. 在任意一台KEC实例上执行命令格式化文件系统。

lsblk 查看共享ESSD盘盘符名称;执行mkfs.ocfs2格式化文件系统

root@vm172-16-2-200:~# lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
vda     253:0    0  20G  0 disk
├─vda1  253:1    0   1M  0 part
└─vda2  253:2    0  20G  0 part /
vdb     253:16   0  20G  0 disk
nvme0n1 259:0    0  20G  0 disk

root@vm172-16-2-200:~# sudo mkfs.ocfs2 /dev/nvme0n1

输出成功提示如下

三、在两台主机上执行创建目录挂载文件系统操作。

创建挂载目录并执行挂载操作。

root@vm172-16-2-200:~# sudo mkdir /mnt/ocfs2
sudo mount -t ocfs2 /dev/nvme0n1 /mnt/ocfs2
root@vm172-16-2-200:~#

root@vm172-16-2-207:~# sudo mkdir /mnt/ocfs2
sudo mount -t ocfs2 /dev/nvme0n1 /mnt/ocfs2
root@vm172-16-2-207:~#

验证挂载

root@vm172-16-2-200:~# df -H
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           184M  1.1M  183M   1% /run
/dev/vda2        21G  2.6G   18G  13% /
tmpfs           918M     0  918M   0% /dev/shm
tmpfs           5.3M     0  5.3M   0% /run/lock
tmpfs           184M   13k  184M   1% /run/user/0
/dev/nvme0n1     22G  1.2G   21G   6% /mnt/ocfs2

root@vm172-16-2-207:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           176M 1020K  175M   1% /run
/dev/vda2        20G  2.6G   16G  14% /
tmpfs           876M     0  876M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           176M   12K  176M   1% /run/user/0
/dev/nvme0n1     20G  1.1G   19G   6% /mnt/ocfs2

四、验证集群文件系统服务

  1. 在server1主机上创建文件

root@vm172-16-2-200:~# echo testaaaaaaaa > /mnt/ocfs2/test1.txt
root@vm172-16-2-200:~# vim /mnt/ocfs2/test1.txt
root@vm172-16-2-200:~# cat /mnt/ocfs2/
lost+found/ test1.txt
root@vm172-16-2-200:~# cat /mnt/ocfs2/test1.txt
testaaaaaaaa
root@vm172-16-2-200:~#
  1. 在server2主机上读取文件

root@vm172-16-2-207:~# cat /mnt/ocfs2/test1.txt
testaaaaaaaa
root@vm172-16-2-207:~# 

文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈