本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
基于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间的数据通信,相比传统驱动协议速度更快、带宽更高。 |
使用场景 | 适用于一般企业的日常业务需求,特别是当预算有限或对性能要求不是非常高的业务场景。 | 适用于高性能计算(HPC)、大数据分析、实时数据处理和其他对存储性能有高要求的场景。 |
计费说明
通过实验室部署基于NVMe盘的集群文件系统服务时,会根据使用的阿里云资源(ECS实例、ESSD云盘等)进行计费。ECS各资源的计费信息,请参见计费概述。如果通过实验室一键部署,创建的实验任务本身不会收费。
实验室一键部署过程中使用到的阿里云资源仅支持按量付费。
部署集群文件系统
手动部署(用于生产环境)
此部分内容以操作系统Ubuntu 22.04和集群文件系统OCFS2为例,其余操作系统及集群文件系统指令需要根据实际情况调整。
操作步骤
创建ECS实例。ECS实例需要满足以下条件:
实例规格族需要默认支持NVMe协议。更多信息, 请参见实例规格族。
说明您可以通过DescribeInstanceTypes接口查询实例规格族,再根据查询结果中的NvmeSupport参数确认实例规格族是否支持NVMe。
ECS实例数量为2~16个,建议选择两台ECS用于实验验证。
具体操作,请参见自定义购买实例。
购买NVMe数据盘并挂载在已创建的多个ECS实例上。
具体操作,请参见云盘多重挂载功能。
远程连接ECS实例。
具体操作,请参见使用Workbench登录Linux实例。
创建集群文件系统。本示例以两台ECS实例为例。
在所有ECS实例上执行以下命令,更新apt并安装ocfs2-tools工具。
sudo apt update sudo apt install ocfs2-tools
修改ECS实例的hostname,并配置集群配置文件。
在所有实例上执行以下命令,通过设置hostname来识别不同的ECS实例。
本示例以设置第一个实例的hostname是server1,第二个实例的hostname是server2为例,不同实例的hostname不能设置相同。
登录第一台实例,执行以下命令设置hostname为server1
sudo hostnamectl set-hostname server1
登录第二台实例,执行以下命令设置hostname为server2
sudo hostnamectl set-hostname server2
在所有实例上执行以下命令,打开集群文件系统配置文件。
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
:第i步设置的实例hostname,请根据实际情况进行替换。node_count
ECS实例的个数,请根据实际情况进行替换。说明如果实际环境不止两台ECS实例,请继续添加
node
部分,并修改node_count
的值。因此,以上示例表示,涉及2台ECS实例,第一台实例的hostname为server1,实例的私网IP为192.168.0.71;第二台实例的hostname为server2,实例的私网IP为192.168.0.70。
按
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盘的共享集群文件系统OCFS2,无需手动购买资源和搭建环境。
操作步骤
前往实验场景页面。
登录块存储EBS控制台。
首次登录EBS控制台时,请根据页面提示创建一个EBS服务关联角色。更多信息,请参见块存储EBS服务关联角色。
在左侧导航栏选择实验室 > 实验场景。
在顶部菜单栏左上角处,选择地域。
在基于NVMe盘的共享集群文件系统实验场景模板中,单击一键创建实验任务。
设置实验场景的基础信息后,单击下一步。
参数
说明
实验场景
默认为基于NVMe盘的共享集群文件系统。
实验任务名称
已默认填写,可以根据需要修改。
描述(可选)
设置实验任务的描述信息。
高级配置(可选)
为实验任务设置标签和资源组信息。
在依赖检查界面,检查依赖情况,显示为未发现异常时,单击下一步。
在资源参数页面,确定或修改实验任务的参数后,单击下一步。
参数
说明
ECS数量
仅支持选择2。
可用区
选择实例对应的可用区。
ECS实例规格
仅支持选择ecs.c7se.large。
系统盘大小
仅支持40 GiB。
系统盘磁盘类型
仅支持cloud_essd,ESSD PL0云盘。
数据盘磁盘类型
仅支持cloud_essd
数据盘大小
仅支持100 GiB
数据盘性能等级
PL0
ECS实例密码
已默认填写,可根据需要修改。
重要请牢记设置的实例密码,以便后续远程连接ECS实例。
检查确认配置参数以及费用信息后,单击确认。在弹出的创建实验任务对话框中,单击确定。
创建任务成功后,系统会准备资源,并搭建好对应的实验场景,预计需要5分钟,请耐心等待。
实验任务依赖于ROS资源编排能力,一个实验任务对应于一个资源栈,最多允许创建200个实验任务。
当任务状态变为创建完成后,可单击实验任务ID,查看任务配置详细信息。
验证与清理
验证集群文件系统服务
登录ECS实例。
访问ECS控制台-实例。在页面左侧顶部,选择目标资源所在的资源组和地域。
进入目标实例详情页,单击远程连接,选择通过Workbench远程连接。根据页面提示登录,进入终端页面。
进入挂载目录,在任意一台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控制台。
在左侧导航栏选择实验室 > 任务列表。
在顶部菜单栏左上角处,选择地域。
在目标实验任务的操作列,单击删除。
也可选中多个实验任务,在列表底部单击批量删除。
警告删除实验任务时默认不会释放实验资源,如果选中删除资源,实验任务中的资源,例如ECS实例、数据库实例等均会被释放,请谨慎操作。