OpenStack Cinder 与各种后端存储技术的集成叙述与实践

2023-10-14 19:40

本文主要是介绍OpenStack Cinder 与各种后端存储技术的集成叙述与实践,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

              Cinder项目为管理快设备而生,它最重要的地方就是如何做到和各种存储后端就到完美适配,用好后端存储的功能,本文为Cinder 多种后端存储(LVM, FC+SAN, iSCSI+SAN, NFS, VMWARE, Glusterfs)的场景总结, 以防自己将来忘记,欢迎交流, 共同成长微笑


1.LVM

开始OpenStack Cinder实践之旅的入门存储, cinder.conf 什么都不配,默认就是使用LVM, LVM的原理

先把分区用pvcreate做成物理卷, 再把多个物理卷做成一个卷组,然后创建volume的时候就通过lvcreate分配lvm逻辑卷。

做部署时,用dd在当前目录创建一个设定大小(本例中为10G)的文件(cinder-volumes),然后通过losetup命令把他影射为loop device(虚拟快设备),然后基于这个快设备建立逻辑卷, 然后就是建立vg, 建立vg的时候可以一次包含多个pv,本例只使用了一个。


dd if=/dev/zero of=/vol/cinder-volumes bs=1 count=0 seek=10G 
# Mount the file. 
loopdev=`losetup -f` 
losetup $loopdev /vol/cinder-volumes 
# Initialize as a physical volume. 
pvcreate $loopdev 
# Create the volume group. 
vgcreate cinder-volumes $loopdev 
# Verify the volume has been created correctly. 
pvscan

建立好volume group后,使用cinder.conf的初始配置即可,  注意多节点时要配置好iscsi_ip_address为提供存储服务节点的管理ip

重启cinder-volume服务

就可以进行正常的volume创建,挂载,卸载等等操作了

question1:LVM如何实现挂载?

       创建很简单,通过lvcreate命令即可,挂载稍微复杂点, 先要把卷export为scsi存储目标设备(target,会有个lun ID),  然后通过linux scsi initiator软件实现到目标设备的连接,这里用到两个软件,scsi tagert管理软件(这个里面有多种如Tgt,Lio,Iet,ISERTgt,默认使用Tgt, 都是为装有SCSI initiator的操作系统提供块级scsi存储)与linux scsi initiator,所以两次操作分别对应命令为tgtadm与iscsiadm。

2. FC(Fibre Channel) +SAN 设备

   要求: a) 计算节点所在的机器一定要有HBA卡(光纤网卡),
                    查看host上有无HBA卡方式:

                   一种方法:   

$ lspci
20:00.0 Fibre Channel: Emulex Corporation Zephyr-X LightPulse Fibre Channel Host Adapter (rev 02)
20:00.1 Fibre Channel: Emulex Corporation Zephyr-X LightPulse Fibre Channel Host Adapter (rev 02
                     二种方法:

                    可以查看/sys/class/fc_host/

                    当有两块光纤网卡,则有host1 与host2两个目录                   
$ cat /sys/class/fc_host/host1/port_name
0x10000090fa1b825a wwpn (作用如同MAC地址)
                 b) 网卡通过光纤线连接到后端存储上, 以ibm的svc为例,必须保证连接上了,可以登录svc图形界面查看host是不是active的, 或者ssh登录svc,运行命令
ww_2145:SVC:superuser>svcinfo lsfabric -delim ! -wwpn "10000090fa1b825a"10000090FA1B825A!0A0C00!3!node_165008!500507680130DBEA!2!0A0500!active!x3560m4-06MFZF1!!Host
                     这样才能保证做卷的挂载与卸载时没有问题
下面是实践,以Storwize设备为例:
volume_driver = cinder.volume.drivers.storwize_svc.StorwizeSVCDriver
san_ip = 10.2.2.123
san_login = superuser
#san_password = passw0rd
san_private_key = /svc_rsa
storwize_svc_volpool_name = DS3524_DiskArray1
storwize_svc_connection_protocol = FC

san_password 与san_private_key可以二选一,推荐san_private_key 方式,这个私钥文件用ssh-keygen生成,生成好留下私钥, 把公钥放到san设备上,以后其他host也想连接此存储设备时, 可直接使用此私钥, 不需重复生成。

测试过程,建个volume

[root@localhost ~]#  cinder create --display-name test55 1
[root@localhost ~]#  no

这篇关于OpenStack Cinder 与各种后端存储技术的集成叙述与实践的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/212688

相关文章

SpringBoot整合(ES)ElasticSearch7.8实践

《SpringBoot整合(ES)ElasticSearch7.8实践》本文详细介绍了SpringBoot整合ElasticSearch7.8的教程,涵盖依赖添加、客户端初始化、索引创建与获取、批量插... 目录SpringBoot整合ElasticSearch7.8添加依赖初始化创建SpringBoot项

Zabbix在MySQL性能监控方面的运用及最佳实践记录

《Zabbix在MySQL性能监控方面的运用及最佳实践记录》Zabbix通过自定义脚本和内置模板监控MySQL核心指标(连接、查询、资源、复制),支持自动发现多实例及告警通知,结合可视化仪表盘,可有效... 目录一、核心监控指标及配置1. 关键监控指标示例2. 配置方法二、自动发现与多实例管理1. 实践步骤

MySQL 迁移至 Doris 最佳实践方案(最新整理)

《MySQL迁移至Doris最佳实践方案(最新整理)》本文将深入剖析三种经过实践验证的MySQL迁移至Doris的最佳方案,涵盖全量迁移、增量同步、混合迁移以及基于CDC(ChangeData... 目录一、China编程JDBC Catalog 联邦查询方案(适合跨库实时查询)1. 方案概述2. 环境要求3.

Linux进程CPU绑定优化与实践过程

《Linux进程CPU绑定优化与实践过程》Linux支持进程绑定至特定CPU核心,通过sched_setaffinity系统调用和taskset工具实现,优化缓存效率与上下文切换,提升多核计算性能,适... 目录1. 多核处理器及并行计算概念1.1 多核处理器架构概述1.2 并行计算的含义及重要性1.3 并

全面掌握 SQL 中的 DATEDIFF函数及用法最佳实践

《全面掌握SQL中的DATEDIFF函数及用法最佳实践》本文解析DATEDIFF在不同数据库中的差异,强调其边界计算原理,探讨应用场景及陷阱,推荐根据需求选择TIMESTAMPDIFF或inte... 目录1. 核心概念:DATEDIFF 究竟在计算什么?2. 主流数据库中的 DATEDIFF 实现2.1

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控

Spring WebFlux 与 WebClient 使用指南及最佳实践

《SpringWebFlux与WebClient使用指南及最佳实践》WebClient是SpringWebFlux模块提供的非阻塞、响应式HTTP客户端,基于ProjectReactor实现,... 目录Spring WebFlux 与 WebClient 使用指南1. WebClient 概述2. 核心依

MyBatis-Plus 中 nested() 与 and() 方法详解(最佳实践场景)

《MyBatis-Plus中nested()与and()方法详解(最佳实践场景)》在MyBatis-Plus的条件构造器中,nested()和and()都是用于构建复杂查询条件的关键方法,但... 目录MyBATis-Plus 中nested()与and()方法详解一、核心区别对比二、方法详解1.and()

Spring Boot @RestControllerAdvice全局异常处理最佳实践

《SpringBoot@RestControllerAdvice全局异常处理最佳实践》本文详解SpringBoot中通过@RestControllerAdvice实现全局异常处理,强调代码复用、统... 目录前言一、为什么要使用全局异常处理?二、核心注解解析1. @RestControllerAdvice2

Spring事务传播机制最佳实践

《Spring事务传播机制最佳实践》Spring的事务传播机制为我们提供了优雅的解决方案,本文将带您深入理解这一机制,掌握不同场景下的最佳实践,感兴趣的朋友一起看看吧... 目录1. 什么是事务传播行为2. Spring支持的七种事务传播行为2.1 REQUIRED(默认)2.2 SUPPORTS2