基于EBS的NVMe(Non-Volatile Memory Express)共享盘的多重挂载能力部署集群文件系统,可以实现多实例对同一个文件系统、同一块盘的并发读写访问。本文将为您演示如何基于NVMe共享盘部署集群文件系统。
背景信息
在当今的企业级数据中心和高性能计算环境中,存在着很多服务器对同一个设备并发读写的需求。例如在大规模数据分析中,大量服务器需要实时并行处理海量数据,这些服务器集群可能需要频繁地对同一份数据库或数据集进行并发的读写操作,以提高整体的数据处理速度和效率。一种传统的解决方案是采用IP SAN(例如iSCSI协议),将一个硬盘驱动器(HDD或SSD)作为一个共享块设备,挂载在多台服务器上。然而,该方式依赖TCP/IP网络,这意味着网络状况直接影响到存储性能。在网络拥塞或故障时,可能会导致严重的延迟和数据传输中断。此外,管理和维护这样的存储系统也增加了运营成本。相较而言,块存储提供了支持NVMe协议的共享ESSD云盘,该云盘可以同时挂载在多个服务器实例上,且具备高可靠、高并发、高性能等特点。
EBS的NVMe共享盘部署集群文件系统涉及一些概念说明,请参见NVMe协议介绍。
功能优势
NVMe和IP SAN在性能、成本、配置和使用场景等方面有各自的特点和优劣,详细说明如下表所示。
对比类别 | IP SAN协议 | NVMe协议 |
设备管理和映射 | 需要手动管理和设备映射,但是可以添加较多的设备并挂载在较多的服务器上。 | 无需手动管理设备和维护设备映射,但NVMe盘当前最多可同时挂载在16台服务器实例上。 |
性能 | 通过TCP/IP网络访问存储,其性能受限于网络带宽。 | NVMe专为SSD设计,它利用高速接口进行CPU和SSD间的数据通信,相比SCSI、virtio-blk等传统驱动协议速度更快、传输带宽更高。 |
使用场景 | 适用于一般企业的日常业务需求,特别是当预算有限或对性能要求不是非常高的业务场景。 | 适用于高性能计算(HPC)、大数据分析、实时数据处理和其他对存储性能有高要求的应用场景。 |
计费说明
通过实验室部署基于NVMe盘的集群文件系统服务过程中,会根据使用的阿里云资源(ECS实例、ESSD云盘等)的计费方式进行计费。ECS各资源的计费信息,请参见计费概述。如果您是通过实验室一键部署,创建的实验任务本身不会收费。
实验室一键部署过程中使用到的阿里云资源仅支持按量付费。
部署集群文件系统
手动部署(用于生产环境)
手动部署集群文件系统服务需先购买ECS实例和ESSD NVMe云盘,然后在ECS实例中通过命令部署共享集群文件系统。
操作步骤
创建ECS实例。ECS实例需要满足以下条件:
仅以下实例规格族支持多重挂载功能:g7se、c7se、r7se、c8y、g8y、r8y、g8ae、c8ae、r8ae、g8i、c8i和r8i。更多信息,请参见实例规格族。
仅支持使用Ubuntu 22.04镜像,不支持其他类型的镜像。
ECS实例数量为2~16个,建议您选择两台ECS用于实验验证。
具体操作,请参见自定义购买实例。
购买NVMe数据盘并挂载在已创建的多个ECS实例上。
具体操作,请参见开启多重挂载功能。
远程连接ECS实例。
具体操作,请参见通过密码或密钥认证登录Linux实例。
创建集群文件系统。本示例以两台ECS实例为例。
在所有ECS实例上执行以下命令,更新apt并安装ocfs2-tools工具。
sudo apt update sudo apt install ocfs2-tools
修改ECS实例的hostname,并配置集群配置文件。
在所有实例上执行以下命令,通过设置hostname来识别不同的ECS实例。
本示例以设置hostname是server1为例,不同实例的hostname不能设置相同。
sudo hostnamectl set-hostname server1
执行以下命令,打开集群文件系统配置文件。
sudo vi /etc/ocfs2/cluster.conf
在文件中输入以下内容。
node: ip_port=7777 ip_address=192.168.0.71 number=0 name=server1 cluster=ocfs2 node: ip_port=7777 ip_address=192.168.0.70 number=1 name=server2 cluster=ocfs2 cluster: node_count=2 name=ocfs2
请将
ip_address
替换为您实际环境的私有IP地址,请将name
设置为您上一个步骤设置的hostname
,node_count
替换为您实际ECS实例的个数。说明如果您的实际环境不止两台ECS实例,请继续添加
node
部分,并修改node_count
的值。按
Esc
键退出编辑模式,并输入:wq
保存退出。
在所有ECS实例上执行以下命令,启动集群文件系统相关服务。
sudo systemctl restart ocfs2 sudo systemctl enable ocfs2 sudo systemctl restart o2cb sudo systemctl enable o2cb
在所有ECS实例上执行以下命令,注册集群。
sudo o2cb register-cluster ocfs2
在任意一台ECS实例上执行以下命令,格式化文件系统。
sudo mkfs.ocfs2 /dev/nvme1n1
其中
/dev/nvme1n1
表示NVMe数据盘名称,可以通过sudo fdisk -lu
命令获取。在所有ECS实例上执行以下命令,创建挂载目录并执行挂载操作。
本示例以创建
/mnt/ocfs2
目录为例,请您根据实际环境替换。sudo mkdir /mnt/ocfs2 sudo mount -t ocfs2 /dev/nvme1n1 /mnt/ocfs2
在所有ECS实例上执行以下命令,查看到对应的设备和挂载目录。
df -h
通过实验室一键部署(用于快速验证和测试新特性)
您也可以通过块存储EBS的实验室一键式部署基于NVMe盘的共享集群文件系统服务,无需手动购买资源和搭建环境。该实验室场景基于资源编排服务的自动编排及部署能力,结合ESSD NVMe云盘的多重挂载能力和共享集群文件系统的业务场景,为您提供更加简单易上手的共享集群文件系统应用实践。
操作步骤
前往实验场景页面。
登录块存储EBS控制台。
说明首次登录EBS控制台时,请根据页面提示创建一个EBS服务关联角色。更多信息,请参见块存储EBS服务关联角色。
在左侧导航栏选择实验室 > 实验场景。
在顶部菜单栏左上角处,选择地域。
在基于NVMe盘的共享集群文件系统实验场景模板中,单击一键创建实验任务。
在实验场景向导页面,设置实验场景的基础信息,然后单击下一步。
参数
说明
实验场景
实验室的应用场景,默认为基于NVMe盘的共享集群文件系统。
实验任务名称
已默认填写,您可以根据需要修改。
实验项
选择基于NVMe共享盘部署OCFS2集群文件系统,该实验项会为您创建OCFS2集群文件系统。
描述(可选)
设置实验任务的描述信息。
高级配置(可选)
为实验任务设置标签和资源组信息。
系统会为您默认推荐ECS实例、NVMe数据盘等配置参数,您无需填写,也可以根据需要重新自定义配置。
(可选)在配置参数向导页面,您可以单击编辑修改实验任务的参数。
参数
说明
ECS实例
生产可用区:选择实例对应的可用区。
系统镜像:仅支持选择Ubuntu 22.04。
系统盘:选择您期望的系统盘类型和云盘容量,系统默认选择系统盘类型(ESSD PL0)和云盘容量(40 GiB)。
CPU(Core):选择该可用区下可用的CPU规格。
内存 (GiB):选择该可用区下可用的内存规格。
实例密码:设置ECS实例的初始登录密码。
重要请您牢记设置的实例密码,以便后续远程连接ECS实例。
实例规格:
仅以下实例规格族支持多重挂载功能:g7se、c7se、r7se、c8y、g8y、r8y、g8ae、c8ae、r8ae、g8i、c8i和r8i。更多信息,请参见实例规格族。
实例个数:默认2个。本实验以2台ECS实例为例。
NVMe 数据盘
数据盘仅支持ESSD NVMe云盘,您可以选择期望的ESSD云盘和对应的容量。本实验以100 GiB的ESSD PL0为例。
(可选)修改对应的配置后,确认总费用,然后单击保存。
检查确认配置参数以及费用信息,然后单击确认。
支付完成后,系统会为您准备资源,并帮助您搭建好对应的实验场景,预计需要5分钟,请您耐心等待。
说明实验任务依赖于ROS资源编排能力,一个实验任务对应于一个资源栈,您最多允许创建200个实验任务。
验证与清理
验证集群文件系统服务
远程连接ECS实例。
具体操作,请参见通过密码或密钥认证登录Linux实例。
进入挂载目录,在任意一台ECS实例执行以下命令创建一个文件,例如test.txt。
cd /mnt/ocfs2 sudo touch test.txt
其中
/mnt/ocfs2
需替换为您实际的挂载目录,可以通过df -h
命令获取。登录另一台ECS实例,执行以下命令,查看test.txt文件是否存在。
cd /mnt/ocfs2 ls
如果test.txt文件存在,则表示集群文件系统服务正常。
清理资源
如果您是通过实验室一键部署,测试完成后建议您及时清理相关资源,避免继续产生费用。
推荐您通过实验室一键删除实验任务的相关资源,不建议通过ECS控制台或者EBS控制台释放实例和云盘,避免误操作导致实验任务资源不可用。
登录块存储EBS控制台。
在左侧导航栏选择实验室 > 任务列表。
在顶部菜单栏左上角处,选择地域。
在目标实验任务的操作列,单击删除。
您也可以选中多个实验任务,在列表底部单击批量删除。