OpenStackのストレージタイプ
:OpenStackのは、以下に示すように、2つのカテゴリに分類格納された
格納された記憶ブロック、ストレージファイルシステムオブジェクト:現在OpenStackのは、永続ストレージの三種類をサポート
燃え殻とスウィフトに焦点を当て、マニラの少ない使用があるので
シンダーブロック・ストレージ
燃えがらのプロフィール
OpenStackの中シンダー場所と役割
シンダーコア機能は、ボリューム、ボリュームの種類、スナップショットボリューム、ボリュームのバックアップ処理を可能にする、ボリュームを管理することです。これは燃えがらそのブロックデバイスドライバサービス管理を統合することができる達成するために、異なるベンダーに統一されたインタフェースに異なるバックエンド・ストレージ・デバイスを提供するOpenStackの
シンダーアーキテクチャ
- クライアントパッケージは、ユーザーにCLIフォームを提供し、燃えがらの燃えがらのRESTインターフェースを提供します
- 外部に設けられたシンダーRESTのAPIのAPI、操作は、対応するルーティング処理方法を見つけるAPIを解析する必要があります。追加および削除は、検索ボリュームがCRUDのスナップショット、バックアップ、ボリュームタイプの管理、(スナップショットの作成、ミラーリング、ソースボリュームを含む)が含ま変更/ように(ノヴァコール)アンマウントとマウントします。
- レポートのバックエンド能力を収集する責任燃えがらスケジューラ、能力情報は、ルート・ボリュームは、噴石・ボリュームのスケジュールを完了するために、指定されたアルゴリズムに設定されています
- シンダーボリュームマルチノード展開、異なるコンフィギュレーションファイルを使用し、異なるバックエンド・デバイスにアクセスする、各ストレージベンダーコードは容量と性能情報収集装置を完成するためにデバイスドライバと対話挿入され、ボリューム操作
- シンダーバックアップは、他の記憶媒体にバックアップデータボリュームを得る(現在のSWIFT /セファロ/ TSMはドライブを提供します)
- SQL DBは、MySQL、PG、MSSQLのSQLデータベースなどをサポートするために、リザーバボリューム、スナップショット、バックアップ、サービスおよびその他のデータを提供します
シンダーコンポーネント-API
シンダーAPIは、外部のREST APIを提供し、オペレータが解析し、処理メソッドを呼び出す必要があります。
- 卷作成/削除/リスト/ショー
- スナップショットの作成/削除/リスト/ショー
- ボリューム取り付け/取り外し(新星コール)
- 其他:
Volume types
Qutotas
BackupsCinder组件-Scheduler
Cinder scheduler负责收集后端上报的容量,能力信息,根据设定的算法完成卷到指定cinder-volume的调度,它通过过滤和称权,筛选出合适的后端:
根据后端的能力进行筛选 - Drivers定期报告后端的能力和状态
- 管理员创建的卷类型
- 创建卷时,用户指定卷类型
Cinder组件-Volume
Cinder volume多节点部署,使用不同的配置文件、接入不同的后端设备,由各存储厂商插入Driver代码与设备交互,完成设备容量和能力信息收集,卷操作等。
Cinder默认的后端驱动是LVM
典型工作流程
Cinder-volume会定期收集底层后端的容量信息,并通知Scheduler更新内存中的Backend信息
创建卷类型的目的是为了筛选不同的后端存储,例如SSD,STAT,高性能,低性能,通过创建不同的自定义卷类型,创建卷时自动给筛选出合适的后端存储
Cinder API
- 检查卷参数合法性(用户输入,权限,资源是否存在等)
- 准备创建参数字典,预留和提交配额
- 在数据库中创建对应的数据记录
- 通过消息列队将请求和参数发送到Scheduler
Cinder Scheduler
提取收到的请求参数
通过配置的filter和输入参数后端进行过滤
- Avialability_zone_filter
- Capactiy_filter
- Capabilities_filter
- Affinity_filter
-
Weigher计算后端进行权重
- CapactiyWeigher/AllocatedCapacityWeigher
- ChanceWeigher
- GoodnessWeigher
-
选取最优的Backend并通过消息列队将请求发送到指定的后端
和Nova Scheduler类似,Cinder Scheduler也是经过Filter删选合适条件的后端,然后使用Weigher计算后端进行权重排序,最终选择出最合适的后端存储
Cinder Volume
提供接收到的请求参数
调用对应的Driver在后端创建世纪的卷
使用Driver返回的模型更新数据库中的记录
Cinder挂载卷流程
挂卷流程:挂卷时通过Nova和Cinder的配合最终将远端的卷连接到虚拟机所在的Host节点上,并最终通过虚拟机管理程序映射到内部的虚拟机中
- Nova调用Cinder api创建卷,传递主机的信息,如hostname,ISCSI initiator name,FC WWWPNs
- Cinder API将该信息传递给Cincer Volume
- Cinder Volume通过创建卷时保存的host信息找到对应的Cinder Driver
- Cinder Driver通知存储允许该主机访问该卷,并返回该存储的连接信息(如ISCSI iqn,portal,FC target WWPN,NFS path)
- Nova调用针对不同存储类型进行主机识别磁盘的代码(Cinder提供了brick模块用于参考)实现识别磁盘或者文件设备
- Nova通知Cinder已经进行了挂载
- Nova将主机的设备信息传递给hypervisor来实现虚拟机挂载磁盘
Cinder主要操作
对象存储Swift
Swift简介
Swift提供高度可用、分布式、最终一致的对象存储服务
Swift并不是文件系统或者试试的数据存储系统,它称为对象存储,用于永久类型的静态数据的长期存储,这些存储可以检索,调整,必要时进行更新
最蛇和存储的数据类型的例子是虚拟机镜像,图片存储,邮件存储和存档备份
因为没有中心的单元或主控节点,Swift提供了更强的扩展性,冗余和持久性
Swift经常用于存储镜像或者用于存储虚拟机实例卷的备份副本
Swift应用
镜像存储后端:在Openstack中与镜像服务Glance结合,为其存储镜像文件
静态数据存储:由于swift的扩展能力,适合存储日志文件和数据备份仓库
Swift架构
Swift中对象存储URL如下所示:
https://swift.example.com/va/account/container/object
URL有两个部分:集权位置和存储位置
集群位置:swift.example.com/v1/
存储位置(对象):/account/containr/oject
存储位置有如下三种:
/account
账户存储位置是唯一命名的存储区域,其中包含账户本身的元数据(描述性信息)以及账户中的容器列表
/account/container
容器存储位置是账号内的用户定义的存储区域,其中包含容器本身和容器中的对象列表的元数据
/account/container/object
对象存储位置存储了数据对象及元数据的位置。
Swift组件
プロキシサーバー:、ステートレスなプロトコルRESTリクエストのおかげで外部のオブジェクト・サービスのAPIを提供し、あなたはロードバランスにスケールアウトできる
アカウントサーバー:各アカウントのアカウントのメタデータと統計情報、およびコンテナリストに含まれている保守サービス、情報を提供しますSQLiteのデータベースに格納されている
コンテナサーバー:コンテナのメタデータと統計情報を提供し、保守サービスは、オブジェクトのリストに含まれ、各コンテナ情報は、SQLiteのデータベースに格納されている
オブジェクトサーバー:オブジェクト・メタデータおよびコンテンツサービスを提供し、各コンテンツ・オブジェクトは、ファイルシステム内のファイルとして保存することができ、メタデータは、ファイルの属性として格納され
レプリケータ:プッシュ(押し)一致しないリモートコピーを更新プログラムを使用して、ローカルパーティションと同一のリモートコピーが、発見されるかどうかを検出します、そして、マークされ削除されたオブジェクトは、ファイルシステムから削除されることを保証するために、
オブジェクトが高い負荷にすぐに更新できない場合、タスクはときに、サービス非同期で更新されるように、ローカル・ファイル・システムのキューに入れられシリアライズされます。アップデータ
監査役:検査オブジェクト、コンテナと完全なアカウント 他のタイプのエラーログに記録されます。ビットレベルのエラーが見つかった場合、ファイルは隔離され、地元の損傷の表紙のコピーのコピーの他のコピーは、
それがすべて含まれている、削除、アカウントの削除用にマーク削除:アカウント死神をコンテナとオブジェクト
スウィフトAPI
外方アカウントの迅速RESTサービスベースのHTTPプロキシサーバインタフェース、及び他の容器とCRUD操作オブジェクト
スウィフトデータモデル
3つの論理構造:Accout / Contianer /オブジェクト
制限はなく、各ノードを、任意に拡張することができます