cinder学习小结

1 官方文档

翻译官方文档学习

链接Cinder Administration — cinder 22.1.0.dev97 documentation (openstack.org)

1.1 镜像压缩加速

在cinder.conf配allow_compression_on_image_upload = True可打开开关

compression_format = xxx可设置镜像压缩格式,可为gzip

1.2 多worker

可通过osapi_volume_workers配置实现多api线程

1.3 volume管理

1.3.1 从volume创虚机

1.3.1.1 从镜像创建non-bootable虚机

openstack volume create --size 8 test-volume

openstack server create --flavor xxx --image xxx --network xxx --block_device uuid=xxx,source_type=volume,destination_type=volume --wait test-server

1.3.1.2 从volume创虚机

方法1

openstack server create --boot-from-volume 10 --image xx test-server

会自动创一个10g的盘挂给test-server,镜像会放到这个盘。--boot-from-volume和--volume是互斥配置项

--boot-from-volume创虚拟时创的盘在虚机删除时,挂的盘不会被自动删除,得手动删

方法2

openstack volume create --image image_id --size 10 test-volume

openstack server create --volume volume_id test-server

1.3.1.3 给虚机从内存或外部存储挂盘

可通过在命令openstack server create 后添加--swap/--emphemeral实现,其中emphemeral挂的盘可重复挂载。当关虚拟机时,这两种盘会一并清空

openstack server create --flavor xx --image xx --network xx --swap 512 --emphemeral 2 --wait test-server

1.3.2 设置NFS

以root登入并在/etc/cinder创个文件nfs_shares,文件内容形如

HOST:SHARE_PATH1

HOST:SHARE_PATH2

host是NFSserver的主机ip或主机名

SHARE_PATH是NFS共享的路径

把nfs_shares文件的权限和属主改好,0640,root:cinder

改/etc/cinder/cinder.conf:

DEFAULT nfs_shares_config = /etc/cinder/nfs_shares

DEFAULT nfs_mount_options = xxx

DEFAULT volume_driver = cinder.volume.drivers.nfs.NfsDriver

其他配置项

nfs_sparsed_volumes = true/false 设置nfs盘类型。true表示盘随nfs文件内容多少而动态增长,也就是说,盘刚创时若没内容,这个盘占空间为0;false表示盘创时就是一个固定文件,有固定大小。

注意

如果系统开了selinux,需要给所有需要访问NFS的节点设置selinux配置项virt_use_nfs 为enable,即需在每个需访问NFS的节点执行命令

setsebool -P virt_use_nfs on

1.3.3 配置多存储端

1.3.3.1 配多存储端

通过设cinder.conf DEFAULT enabled_backends = backenda,backendb,...实现,配完了要在cinder.conf里配每个backend,即以每个backend为section名,底下放详细配置形如下

[backenda]

volume_group = groupa

volume_driver = drivera

volume_backend_name = namea

设完了执行cinder-manage volume update_host --currenthost xxx --newhost xxx,再重启服务实现配置生效

创volume时可提供backend_name,cinder.conf中每个backend下的volume_backend_name可重名,这样创volume时scheduler会在同名的backend选出最合适的backend

1.3.3.2 存储端公共配置

即cinder.conf中可以实现[backend_default],每个[backend]会使用[backend_default]中的部分,若backend和backend_default有重复,backend会 覆盖default的值。必须启用filter_scheduler才能使用多backend

1.3.3.3 volume种类

创volume需要指定volume类别,类别需要手动创建

openstack --os-username admin --os-tenant-name admin volume type create lvm

openstack --os-username admin --os-tenant-name admin volume type set lvm --property volume_backend_name=lvm_ISCSI

注,volume_backend_name不存在时会导致filter_scheduler报错

1.3.4 存储盘备份

1 为某个lv创snapshot lvcreate --size 10G --snapshot --name xxx /dev/cinder_vol/inst0001

检验是否成功创snapshot: lvdisplay

2 给snapshot挂载

kpartx -av /dev/cinder_vol/inst0001-snapshot

mount /dev/mapper/cinder--volumes-volume--volume--0001--snapshot1 /mnt

3 压缩打包,把/mnt 用tar压缩成包,备份成功

4 把snapshot unmount,删除snapshot分区表,删除snapshot

1.3.5 迁移卷组

若存储可自行迁移,则迁移过程会执行相关优化;若存储不可自行迁移,则需要调用cinder标准工作流中的几种

若卷没挂载,cinder会创一个新卷,将旧卷数据复制到新卷中;若卷挂载了,cinder会创个新卷,然后调nova进行卷迁移,这需要nova支持libvirt driver

卷迁移可通过openstack volume show查看volume迁移相关的参数

卷迁移:openstack volume migrate volume_id --host cinder_storage_pool2

os-vol-host-attr:host volume当前的backend

os-vol-mig-status-attr:migstat 当前卷迁移的状态,一般的卷是None,迁移中是migrating,完成是completing

os-vol-mig-status-attr:name_id 

若要移除存储节点,先迁移,再停cinder 服务

注 

目前不支持迁移带snapshot的卷

迁移是root操作,也就是说,迁移过程中卷相关的非root一般操作会被禁止

1.3.6 卷备份

openstack volume backup create [--incremental] [--force] VOLUME

VOLUME: 卷id或卷名称

--incremental:增量备份

--force: 强制创建备份(一般只有volume available才可创备份,force是即使volume in-use,也会创建,但这时可能会导致出错,所以force默认是false)

其他flag:has_dependent_backups: 是否依赖其他backup,如果为true,删此backup会失败

增量备份基于最新时间戳的已有备份。已有备份可为增量备份或全量备份,所以卷第一个备份必须是全量备份,即不能是增量备份,否则会失败

backup_swift_block_size: cinder.conf配置项,规定了incremental backup一次追溯的盘大小变化范围(不确定)

backup_swift_object_size: 必须是block_size整数倍(不确定)

backup_swift_enable_progress_timer: 默认enabled。会默认给telemetry发notification

backup_file_size用于设置backup文件最大大小,若超过限制backup会被分为多个文件\

backup_max_operation 限制backup 和restore最大并发数,默认是15,15指的是所有backup worker加起来的并发不超过15,不是每个worker的不超过15

从备份恢复卷

openstack volume backup restore backup_id volume_id

若从full backup恢复卷,则为full恢复;若从incrememtal backup恢复,则会自动从backup恢复卷

因为卷backup还依赖存储database,所以也需要经常备份database(gaussdb?)。也可导出backup的metadata,这比备份database方便

默认backup用的是swift

如果想用NFS作为backup repository,在cinder.conf中添加如下配置:backup_driver、backup_share

R版本以后,backup时可以强制删除backup过程,此时backup的文件不会被删除,且无法知晓backup文件中有多少数据,此时建议将backup状态设为error

1.3.7 默认scheduler权重策略

默认是根据盘最大空余存量和可分配容量进行权重计算,可通过配置scheduler_default_weighers=xxx改变权重计算方法

1.3.8 基于容量的QoS

cinderQoS随容量增大而增大,如果不加以限制,某个用户可能会分一个性能很大的卷,这将导致剩余容量的卷拥有剩余的性能可能很小,这可能会有问题,可通过qos规划volume性能限制

cinder qos-create high-iops consumer="front-end" total_iops_sec_per_gb=30 total_bytes_sec_per_gb=1048576

cinder qos-associate qos-id volume-type-id

1.3.9 一致组

可以让多个volume生成snapshot时的时间尽量保持在同一时间点,提高数据一致性

该特性在Q版本后就不支持了,转而合入一般卷组

使用该特性前需注意存储驱动是否支持一致组的特性,因为仅有为数不多的驱动支持一致组特性,常用的LVM并不支持该特性

volume如果加入一致组,部分操作会受限,即对volume的有的操作无法执行,具体看官方文档

一致组和一致组的镜像删除会将组内的volume和snapshot作为一个整体一块删除

目前没有openstack命令可创一致组,只能通过cinder命令创建

cinder consisgroup-create --name niubility vol_type_1

openstack volume create --type vol_type_1 --consistency-group group_id --size 2 niubilityVol

cinder cgsnapshot-create consisgroup_id

删除cgsnapshot cinder cgsnapshot-delete cgsnapshot_id

更新consisgroup cinder consisgroup-update  --name xxx --add-volumes vol_1_id, vol_2_id --remove-volumes vol_3_id, vol_4_id consisgroup_id

从另一个consisgroup 的快照创建新consistency group : cinder consisgroup-create-from-src --cgsnapshot cgsnapshot_id --name xx --description xxx

从另一个consisgroup创建新consistency group:cinder consisgroup-create-from-src --source-cg consisgroup_id --name xx --description xx

1.3.10 使用filter和weigh

可在cinder.conf中DEFAULT scheduler_default_filter,scheduler_default_weighers设置filter和weighers,多个filter或weighers以逗号分隔

DriverFilter和GoodnessWeigher处理逻辑需要自己配置,即配上述两个配置后,还需配filter_function和goodness_function,如果不配这两个会用默认值,这俩配置值为等式,如volume.size < 10,有多种卷属性可在等式中配置,具体哪些属性参考Configure and use driver filter and weighing for scheduler — cinder 22.1.0.dev97 documentation (openstack.org)

filter_function和goodness_function可在cinder.conf的每个backend下配置

1.3.11 卷复制速率限制

背景 从镜像创卷,或将卷镜像上传glance时,若image过大,会占用较大带宽,可通过配置cinder.cong的volume_copy_bps_limit限制带宽,该配置可在每个backend下配置,单位是byte/s,如果配100Mib/s 则值为2*20=104857600

注意 

该配置生效需要安装libcgroup设置blkio限制硬盘IO带宽。Debian和ubuntu是cgroup-tools,redhat、Fedora等是libcgroup-tools

远程文件系统不支持此配置,如NFS

1.3.12 精简模式下的oversubscription

该功能在cinder.conf中的max_over_subscription_ratio实现,默认是20,表示实际分配的空间可以实际空间的几倍,如果值小于1,则实际会以20起作用,也可设为auto,该配置也是在每个backend下可配置。

reserved_percentage功能和oversubscription相反,表示要保留的磁盘容量大小,这部分容量应该不会算到oversubscription

1.3.13 镜像卷缓存

该功能可极大提高从image创卷的速度,主要取决于一个backend拷贝卷速度有多快:第一次从image创卷时一个volume缓存会被创,卷缓存被cinder内部租户拥有,第二次以后从image创卷,不会下载image,而是复制卷缓存。卷缓存可在每个backend配置

通过cinder.conf,可为cinder配内部租户

cinder_internal_tenant_project_id = xxx

cinder_internal_tenant_user_id = xxx

通过image_volume_cache_enabled = True使卷缓存生效

可限制卷缓存大小和数量,默认是0,即不做限制:

image_volume_cache_max_size_gb = xxx

image_volume_cache_max_count = xxx

卷缓存会触发telemetry消息:

image_volume_cache.miss: 创卷时没找到缓存,表示该卷是新创

image_volume_cache.hit: 创卷时找到了缓存,而且可找到速度最快缓存

image_volume_cache.evict: 卷缓存被删时发出

1.3.14 基于卷的镜像

即基于cinder的vol创镜像

基于卷的镜像需要glance服务中cinder的location信息

为了让glance使用cinder,在glance-api.conf的glance_store.stores中加上cinder,多个值逗号分隔

为了暴露location信息,在glance-api.conf中设置show_multiple_locations = True

cinder.conf DEFAULT allowed_direct_url_schemes = cinder

cinder.conf DEFAULT image_upload_use_cinder_backend = True

cinder.conf DEFAULT image_upload_use_internal_tenant = True  # 每个backend可以配,

创建方法:

如果 image_upload_use_cinder_backend为True,可glance image-create --volume vol_id image_name创

如果为False可先glance image-create创,然后glance location-add image_id --url cinder://vol_id

为了让基于卷的镜像可被glance访问,可在glance-api.conf的glance_store中配置下列配置:

cinder_store_auth_address

cinder_store_user_name

cinder_store_password

cinder_store_project_name

1.3.15 私有卷类型

为防止一般用户使用高可用性卷类型,可创建私有卷类型,通过cinder type-create 的--private指定,私有卷类型可通过project授予访问权,如果没project则默认admin才能访问

1.3.16 用户可见额外规格(extra specs)

Xena版本开始,某些额外规格开始对一般用户可见。这些用户可见的额外规格是一个固定列表,且基于policy,也就是说,也有用户不可见的额外规格

一般用户无法修改额外规格。额外规格可用于cinder type-list时筛选需要的type-list

为防止不可见额外规格被一般用户可见(比如通过将版本改到Xena之前),可手动修改cinder/resource_filters.json的volume_type为Xena版本前的默认值

1.4 troubleshooting

1.4.1 配置

3 cinder cmd cli

3.1 cinder-manage

3.1.1 cinder-manage db sync

4 接口调用流程整理

4.1 cinder list

最后到gaussdb去查了

4.2 cinder create

v3/volumes.py:VolumeController.create() -> volume.api.API().create() -> taskflow五个flow创volume -> rpc将请求发给scheduler -> scheduler创flow执行创volume请求 -> 更新cinder数据库 -> rpc将请求发给cinder-volume -> 用flow创volume -> 发volume.create.start notification -> 创volume -> 发volume.create.end notification -> 更新数据库,完毕

具体创卷是通过创lun实现

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/489095.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【MATLAB源码-第11期】基于matlab的2FSK的误码率BER仿真以及原信号调制信号解调信号波形展示。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 2FSK&#xff08;Frequency Shift Keying&#xff09;为二进制数字频率调制&#xff08;二进制频移键控&#xff09;&#xff0c;用载波的频率来传送数字信息&#xff0c;即用所传送的数字信息控制载波的频率。2FSK信号便是符…

vulnhub-----pWnOS1.0靶机

文章目录 1.信息收集2.漏洞测试3.爆破hash4.提权 首先拿到一台靶机&#xff0c;就需要知道靶机的各种信息&#xff08;IP地址&#xff0c;开放端口&#xff0c;有哪些目录&#xff0c;什么框架&#xff0c;cms是什么&#xff0c;网页有什么常见的漏洞&#xff0c;如sql注入&…

如何添加随机种子保证代码每次复现的一致性?

如何添加随机种子保证代码每次复现的一致性&#xff1f; 在main()程序中首先设定随机种子&#xff1a; def set_seed(seed42):os.environ[PYTHONHASHSEED] str(seed)random.seed(seed)np.random.seed(seed)torch.manual_seed(seed)torch.cuda.manual_seed(seed)torch.backends…

【文本挖掘与文本分析】上机实验三

实验目的和要求 实验 了解sklearn,gensim可视化主题的基本操作&#xff1b;采集四大名著之《红楼梦》进行主题分析对《红楼梦》的主题进行可视化 或采集二十大报告进行主题分析&#xff1b;对《二十大报告》的主题进行可视化 数据来源 《红楼梦》小说《二十大报告》 采集红…

ubuntu下安装minconda

1.搜索清华源 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 2.搜索conda 3.选一个合适自己的下载到本地 4.将下载的文件传入到ubuntu中 bash Miniconda3-py311_23.11.0-1-Linux-x86_64.sh 安装 5.source ~/.bashrc 激活即可&#xff08;必要步骤&#xff09;

2024年 导出环境依赖requirements.txt

2024年 导出环境依赖 一、前言 有时候需要导出环境依赖&#xff0c;遂记录一下这个短短的步骤 二、具体步骤 1、使用pip进行安装和管理环境 安装导出依赖的库pipreqs pip install pipreqs将环境依赖项导出到当前目录的requirements.txt文件&#xff0c;编码格式用utf-8 …

第15篇:2位数值比较器

Q&#xff1a;本篇我们将实现2位二进制数值比较器逻辑电路&#xff0c;即对2个2位二进制数大小进行比较。 A&#xff1a;数值比较器的基本原理&#xff1a;先对两个数的高位进行比较&#xff0c;若高位相等&#xff0c;再比较低位&#xff0c;低位的比较结果决定两个数的大小。…

自增不再简单:深入探索MySQL自增ID的持久化之道

概述 MySQL中的自增特性估计大家或多或少都是用过。一张表中只能由一个自增字段&#xff0c;通常我们会把它设置为主键&#xff0c;但是随着大家系统越来越分布式&#xff0c;为了一些性能和可扩展性问题&#xff0c;大家目前选择更多的都是分布式ID&#xff08;雪花算法、UUI…

自觉性的力量:在无人监督中追求卓越

一、引言 自觉性&#xff0c;这个看似简单的词汇&#xff0c;却蕴含着巨大的力量。它如同内心的指南针&#xff0c;指引我们在无人监督的情况下&#xff0c;依然能够坚守原则&#xff0c;保持积极向上的态度。在快节奏的现代生活中&#xff0c;自觉性更是成为我们应对挑战、实现…

不可变和可变字符序列使用陷阱

String 使用的陷阱&#xff1a; String 一经初始化后&#xff0c;就不会再改变其内容了。对 String 字符串的操作实际上是对其副本&#xff08;原始拷贝&#xff09;的操作&#xff0c;原来的字符串一点都没有改变。比如&#xff1a; String s "a"; 创建了一个字符…

【创建QT项目】使用向导创建

打开Qt Creator 界面选择 New Project或者选择菜单栏 【文件】-【新建文件或项目】菜单项 弹出New Project对话框&#xff0c;选择Qt Widgets Application&#xff0c; 选择【Choose】按钮&#xff0c;弹出如下对话框 设置项目名称和路径&#xff0c;按照向导进行下一步&#x…

小吉、鲸立、希亦婴儿洗衣机哪个好用?最强机型pk对比!

宝宝衣服的清洗对父母来说都很重要&#xff0c;所以挑选一款适合宝宝的小型洗衣机显得尤为重要。也许有许多人认为&#xff0c;为婴儿购买独立的洗衣机是不必要的&#xff0c;但是你是否了解呢&#xff1f;新生婴儿的肌肤要比成人更脆弱&#xff0c;更易受到感染而受到伤害&…

Ansys Zemax | 在 MATLAB 或 Python 中使用 ZOS-API 进行光线追迹的批次处理

附件下载 联系工作人员获取附件 这篇文章会说明如何在 MATLAB 或 Python 中以 Zemax OpticStudio 应用程式介面 (ZOS-API)处理光线数据库(Ray Database, ZRD)档案&#xff0c;过程中我们将使用ZRDLoader.dll。本文提供了在 Matlab 中批次处理序列光线追迹(一般、归一化、偏振…

python知识点总结(九)

python知识点总结九 1、TCP中socket的实现代码实现TCP协议a、服务端b、客户端&#xff1a; 2、写装饰器&#xff0c;限制函数被执行的频率&#xff0c;如10秒一次3、请实现一个装饰器&#xff0c;通过一次调用函数重复执行5次4、写一个登录装饰器对一下函数进行装饰&#xff0c…

ChatGPT-PDF辅助读论文,实现用gpt对pdf 解析(开源)

文章目录 思路接口代码上传代码pdf转文本代码综合上述步骤完整代码效果 思路 主要为开发者提供一个思路&#xff0c;这里并不是完整的商业项目&#xff0c;只是一时兴起写的一份demo,希望对大家有帮助。 制作一个接口用于上传文件写一个程序把文件上传到上面的接口中对得到的…

深入了解 Vue 3:性能与可用性的巨大提升

摘要&#xff1a;本文深入探讨了 Vue 3 相对于 Vue 2 在性能和可用性方面的重大改进&#xff0c;特别关注了虚拟 DOM 模块的重构&#xff08;静态提升&#xff09;、基于 Proxy 的响应式对象、事件缓存、更好的 Tree Shaking 支持、TypeScript 和 Monorepo 代码组织&#xff0c…

合辑下载 | MatrixOne 与 MySQL 全面对比

前言 MatrixOne是一款高度兼容MySQL语法的HTAP数据库&#xff0c;采用云原生化和存储、计算、事务分离的架构打造了HSTAP超融合数据引擎&#xff0c;实现单一数据库系统同时支持OLTP、OLAP、流计算等多种业务负载。基于MatrixOne高度兼容MySQL的定位&#xff0c;社区的小伙伴在…

使用 NocoDB 一键将各种数据库转换为智能表格

NocoDB 是一款开源的无代码数据库平台&#xff0c;可以进行数据管理和应用开发。它的灵感来自 Airtable&#xff0c;支持与 Airtable 类似的电子表格式交互、关系型数据库 Schema 设计、API 自动生成等特性。 但与 Airtable 相比&#xff0c;NocoDB 完全免费且代码开源&#xf…

柯桥专业会计培训|会计实操做账手工账电脑账出纳报税手把手教

开具纸质发票时&#xff0c;经常有小伙伴纠结发票开票人和复核人的问题。现在全国已施行数电票&#xff0c;这个问题还存在吗&#xff1f;一起来看看~ 暂未规定!! 开票人和复核人不应为同一人&#xff01; 目前&#xff0c;全国大部分城市已基本实现数电票的开票试点&#x…

KIOXIA铠侠CM7系列E3.S双端口NVMe2.0 PCIe5.0 SSD KCM71RJE7T68

KIOXIA 铠侠推出的CM7-R E3.S企业级NVMe读密集型企业级固态硬盘&#xff0c;采用PCIe 5.0和NVMe 2.0技术&#xff0c;性能出色&#xff0c;最高可达2,700K IOPS&#xff08;随机读取&#xff09;和310K IOPS&#xff08;随机写入&#xff09;1 DWPD的耐用性和高达15.36 TB的存储…
最新文章