ceph学习总结分布式块存储基本原理_第1页
ceph学习总结分布式块存储基本原理_第2页
ceph学习总结分布式块存储基本原理_第3页
ceph学习总结分布式块存储基本原理_第4页
ceph学习总结分布式块存储基本原理_第5页
已阅读5页,还剩104页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

安装部 安装步 Ceph-deploy分 命令工 源代 Ceph概 Ceph系 Ceph组 OSD守护进 命令工 集群管 扩 OSD服务节点(物理服务器 OSD资源(磁盘 缩 OSD服务节点(物理服务器 OSD资源(磁盘 MON节点管 添加 删除 故障排 命令说 常用操 集群相 池管 OSD管 MON管 块相 集群管理 命令描 命 命令详 选 池管理 命令描 命 命令详 选 示 命令描 命 命令详 镜像名 条 映射选 命令示 选 参 ceph基本架 软件模块分 关键流程分 基本流程分 集群管理流 数据读写流 MON监测流 OSD检测流 Crush算 权限认证原 数据映射分 功能概 位置计算流 数据放置规 组 配置文 代码分 基础机 类介 基本测试分 可用性与可靠 关闭一个无OSD的节 关闭一个有OSD的节 关闭一个有OSD的节点(已有大量数据,物理环境 关闭一个有OSD的节点(持续负载,物理环境测试 关闭初始MON的节 关闭非初始MON的节 扩展 磁盘/OSD扩 节点扩 两副本性 三副本性 测试总 命令参考 ..........................................................................................................问题列 创建MON节点失 问题描 问题解 删除OSD,停止OSD守护进程失 问题描 问题解 手动移除OSD失 问题描 问题解 问题描 问题解 疑问列 缓存数 (ubuntuCeph-deployceph-deploy是一个简单快捷的部署Ceph集群的工具。相对手动部署,使用该工具可以避开繁琐的配置过程。该工具使用Python语言开发,封装了系统命令和Ceph集群的管理命令,从而使Ceph集群的部署自动化。ceph-deploy建立了一种分布式的集群管理方式,使用ceph-deploy可以ceph-deploy管理节点与Ceph集群的关系示意图。ceph-deploy提供的管理命令如下所示,后面章节将详细介绍每个命令的含[ ceph-deployinstallceph-nodeceph- Cephceph-deploymoncreate-initial ceph-deployosdprepare[ceph-node]:[dir-path] ceph-deployosdactivate[ceph-node]:[dir-path] 激活OSDceph-deployosdcreateceph-node]:[dir- 预处理并激活ceph-deployadmin[admin-node][ceph-node...] ceph-deploypurgedata[ceph-node][ceph-node...] ceph-deployforgetkeys 该命令用于开始部署一个新的Ceph集群,并且生成一个该集群的配置文件MonitorIPMonitor节点的(ceph.conf钥和一个日志文件。配置文件中包含集群的fsid,Monitor节点的主机名和IP地ceph-deploynew这里[MON]是初始节点的主机名,可以通过hostname–s命令获取到。--cluster-networkandpublic-network该命令用于在节(管理节点上向Ceph集群节点安装Ceph软件包。其首先会在管理节点和Ceph集群节点上安装yum-plugin-priorities插件(CentOS?,-- 用于定义安装的Ceph软件包--repo-urlCeph时的软件包源位置。如果定义该选项,预定义的ceph-deployinstall的选项可用,例如--testing,--dev,--adjust-repos,--no-adjust-repos,--repo,--local-mirror,--repo-urland--gpg-url等,具体可以参考官网解释。(MON子命令create-initial用于在Ceph配置文件中定义的初始节(mon(MONMON的状态确认,如果存在问题,则会记录日志。完成状态确认并确认成功后会gatherkeys?。ceph-deploymoncreate-子命令create用于在某个特定的节点上部署MON服务。如果没有定义具体的主机名称则会使用Ceph配置文件中的初始节点列表中的节点进行部署。其首先会监测平台和Ceph的版本是否与部署版本兼容,在确认无误的情况下进行MON服务的部署。ceph-deploymoncreate[HOST]这里,[HOST]MON在monintialmember列表中,或者不在monmap中,或者public_addr及public_networkkey没有定义,则会出现错误。ceph-deploymonaddceph-deploymonadd[HOST]--address子命令destroy用于从远处节点上删除一个MON服务。ceph-deploymondestroy收集秘钥为新增的节点收集认证秘钥。其检查并从Monitor节点拉取.admin,monitor和bootstrap-mds/bootstrap-osd的圈。当新的monitors/OSDs/MDS添加到集群时,这些圈将被用到(具体什么原理不清楚ceph-deploygatherkeys[HOST]其中,[HOST]为拉取圈的源磁盘管理管理主机上的磁盘。其实际使用的是ceph-disk工具包中的子命令来管子命令listOSD信息。ceph-deploydisklist这里,[HOST][DISK]ceph-deploydiskprepareactivateCephOSD。其首先将逻辑卷挂在到一个临时$idOSD守护进程。ceph-deploydiskactivatezapsgdisk完成分区表的清理工作。这是,sgdisk使用—mbrtogptGPT磁盘。ceph-deploydiskzap对象设备 activateOSD设备。其实际使用的是磁 子命令create使用prepare和activateOSD OSDceph-deployosdlist管理将配置文件和 秘钥推送到远程主机。其{cluster}..admin.keyring文件从管理节点拷贝到目的节点的/etc/ceph文件夹ceph-deployadmin[HOST]配置管理用push子命令将管理节点的配置文件传输到主机的/etc/ceph文件夹下面。用pull子命令做相反的事情。ceph-deploypush[HOST][HOST...]ceph-deploypull[HOST][HOST...]卸载将主机的Ceph软件包卸载。但是,诸如librbd1和lirados2将不会被卸载,由于其会造成qemu-kvm出问题。ceph-deployuninstall[HOST]清理该命令与uninstall类似,但是其不仅会卸载软件包,还好清理主机上的ceph-deploypurge[HOST]清理数据确保Ceph软件已经被卸载,否则不会进行数据的清理。ceph-deploypurgedata[HOST]清理秘钥用于安装或者卸载特定的软件包。示例ceph-deploypkg--install[PKGs][HOST][HOST...]ceph-deploypkg--remove[PKGs][HOST][HOST...]Thecurrentinstalledversionofceph-TheusernametoconnecttotheremoteOverwriteanexistingconffileonremotehost(ifNameoftheUse(orreuse)agivenceph.confDonotattempttocopyssh--fsidProvideanalternateFSIDforceph.confSpecifythe(internal)clusterSpecifythepublicnetworkforaInstallthelatestdevelopment InstallableedingedgebuiltfromGitbranchortag(default:InstallpackagesmodifyingsourceInstallpackageswithoutmodifyingsource--repoInstallrepofilesonly(skipspackageFetchpackagesandpushthemtohostsforalocalrepoSpecifyarepourlthatmirrors/containsCephSpecifyaGPGkeyurltobeusedwithcustomrepos(defaults IPaddressofthehostnodetobeaddedtotheConcatenatemultiplekeyringstobeseededonnewDestroythepartitiontableandcontentofaFilesystemtousetoformatdisk(xfs,btrfsorEncrypt[data-path]and/orjournaldeviceswithdm-Directorywheredm-cryptkeysareComma-separatedpackage(s)toinstallonremoteThefortheCalamarimasterceph-deploy(稍后分析CephCeph系Ceph独一无二地用统一的系统提供了对象、块、和文件功能,它可靠Ceph的强大足以改变贵公司的IT基础架构、和管理海量数据。Ceph可提供极大的伸缩性——供成千用户PB乃至EB级的数据。Ceph节点以普通硬件和智能守护进程作为支撑点,Ceph集群组织起了大量节点它们之间靠相互通讯来数据并动态地重分布数据如图为应用场景示意图,其是RADOS,也即高可用、自动化的分布式对象,该模块负责对OSD的自动化运行,保证整个系统的可用性。同时,该模块通过一个名为librados的公共库对外提供服务,块和对象同时,Ceph本身封装了对象的接口和块的接口。对象的接口CephCephOSDOSDMonitor(MON,MON互,同时又对OSD的状态进行。客户端通过网络建立与Ceph集群的关联,也即关系。客户端通过OSDCephCeph集群的组件是OSD和MON,其中OSD用于数据的具体操作并将数据直接发送给相应的OSD处理。由于OSD和MON之间存在关系,并且OSD、MONRADOS。为了便于对RADOS的管理和使用,在RADOS之上实现了一套动态库(libradosrados基于Ceph的对象实现。iSCSIFCLUNOSDOSDOSD读写等OSDMON是Ceph集群的软件,一个守护进程,其中包含若干“映射图”信关联池接对于Ceph集群的即可都可以在此找到,本文不再赘述Cephceph、radosrbd等等,librados实现,这里不再赘述,请参考相关章节。Ceph随着用户业务的增加,Ceph集群的资源可能会变的业务需求,因此需要某种方式增加容量。本文将介绍扩容的两个方面,也即物理服务器OSD服务节点(物理服务器的是需要配置管理节点对新增节点的无 。之后,就可以通过ceph-deployinstall命令对该节点进行ceph相关软件的安装。Ceph1.1.2OSD配置ssh无,保证管理节点可以不用通过ssh被添加的服务deployinstallCeph1.1.2OSDOSD资源(磁盘所谓自动方式即利用ceph-deploy部署工具进行,该工具为Python 磁盘分为ceph-deploydisklistceph-ceph-deployosdprepareceph-ceph-deployosdactivateceph-OSD(部署节点OSDmapcephosdcreate[{uuid}cephosddump创建数据(OSD在OSD所在服务器节点的相应位置创建数据的 sudomkdir/var/lib/ceph/osd/ceph-{osd-sudomkdir/var/lib/ceph/osd/ceph-格式化磁盘(OSD该步骤视介质而定,如果介质是整个数据磁盘,而非系统盘的某个目挂在到上一步创建的上。sudomkfs-t{fstype}sudomount-ouser_xattr/dev/{hdd}/var/lib/ceph/osd/ceph-{osd-sudomkfs-txfssudomount/dev/sdb/var/lib/ceph/osd/ceph-34)初始化OSD (OSD节点) 中会被创ceph-osd-i{osd-num}--mkfssudoceph-osd-i3--mkfs5)认证秘钥(OSD节点)cephauthaddosd.{osd-num}osd'allow*'mon'allowrwx'-icephauthaddosd.3osd'allow*'mon'allowrwx'-i/var/lib/ceph/osd/ceph-6)Crushmap(部署节点将OSD添加到Crushmap中,此后会给该OSD分配数据。但是此时OSD仍然处于down状态,需要启动守护进程。具体命令格式如下(0.56版本以后:cephosdcrushadd{id-or-name}{weight} [{bucket-type}={bucket-name}...]cephosdcrushadd30.02root=defaulthost=ceph-osd37)OSD守护进程(OSD)UbuntuCentOSsudostartceph-osdid={osd-完成上述几步之后,OSD即被激活,并且CephOSD的数据搬运到该OSDOSD服务节点(物理服务器3.2.2用ceph-deploy工具卸载软件并清理数据。OSD资源(磁盘OSD的移除没有自动化令,需要手动执行,具体需要执行如下几步OSDcephosdout{osd-例如cephosdoutUbuntusudostopceph-osdid={osd-例如:sudostopceph-osdOSD(downOSDOSDcephosddumpOSD。OSDCrushmap、OSDmap首先Crushmapcephosdcrushremovecephosdcrushremove其次cephauthdelosd.{osd-cephauthdel再次OSDmapcephosdrm{osd-num}例如cephosdrm3host=另外,OSDMONCephMONceph-deploymoncreate{host-name[host-CephMONceph-deploymondestroy{host-name[host-集群相关命令包括集群管理和状态获取等相关令通过这些命令可以清CephPGmap、OSDmapMONmap这些映射图可以了解池的数据分布情况。具体命令包括:cephpgdumpPGcephosddump获取OSDmapcephmondump获取MONmapcephmdsdumpMDScephosdgetcrushmap-ofilename获取crushmap,但需要进行cephosdsetcrushmapifilenamecrushmap,码1.1.2池管OSDOSDOSD3.2MONMONMON块相Ceph块的相关操作,具体请参考4.4相关内容 令集合,可以部署、或者管理MON、OSD、PG、MDS等组件cephauth[add|caps|del|export|get|get-key|get-or-create|get-or-create-|import|list|print-key|print_key]...cephcompactcephconfig-key[del|exists|get|list|put]...cephdf{detail}cephfs[ls|new|reset|rm]...cephfsidcephhealthcephheap[dump|start_profiler|stop_profiler|release|stats]...cephinjectargs<injectedargs>[<injectedargs>...]cephlog<logtext>[<logtext>...cephmds[add_data_pool|cluster_down|cluster_up|compat|deactivate||fail|getmap|newfs|remove_data_pool|rm|rmfailed|set|set_max_mds||setmap|stat|stop|l]cephmon[add|dump|getmap|remove|stat]...cephmon_statuscephosd[blacklist|blocked-by|create|deep-scrub|df|down|dump|erasure-code-profile|find|getcrushmap|getmap|getmaxosd|in|lspools|map|metadata|out|pause|perf|pg-temp|primary-affinity|primary-temp|repair|reweight|reweight-by-pg|rm|scrub|set|setcrushmap|setmaxosd|stat|thrash|tree|unpause|unset]cephosdcrush[add|add-bucket|create-or-move|dump|get-tunable|link|move|remove|rename-bucket|reweight|reweight-all|reweight-subtree|rm|rule|set|set-tunable|show-tunables|tunables|unlink]...cephosdpool[create|delete|get|get-quota|ls|mksnap|rename|rmsnap||set-quota|stats]cephosdtier[add|add-cache|cache-mode|remove|remove-overlay|set-overlay]...cephpg[debug|deep-scrub|dump|dump_json|dump_pools_json||_create_pg|getmap|ls|ls-by-osd|ls-by-pool|ls-by-primary|map|repair|scrub|send_pg_creates|set_full_ratio|set_nearfull_ratio|stat]...cephquorum[enter|exit]cephquorum_statuscephreport{<tags>[<tags>...]}cephscrubcephcephsync{--yes-i-really-mean-it}{--i-know-what-i-am-ng}cephl<name(type.id)><args>[<args>...]ceph4.2.1.1进程管理通过子命令的配合实现对MON在某个地址上新增一个名字为<name>的MON服务。cephmonadd<name>显示特定版本的MONmap的格式化的信息,该命令可以指定MONmap的版本信息,具体示例如下,参数为epoch:cephmondump{<int[0-]>}cephmondump1获取特定版本的MONmap信息,该命令回去的是二进制的信息,可以保持cephmongetmap{<int[0-cephmongetmap2–o移除特定名称的MONcephmonremovecephmonremove显示MON 状态信息,具体格式如下cephmon报告MONceph对象进程管理通过子命令的配合实现对MON管理客户端。通过子命令管理。添加某个地址到:cephosdblacklistadd<EntityAddr>{<float[0.0-显示列表cephosdblacklist从列表中移除某项cephosdblacklistrm显示被阻塞的OSD的直方图(不明,示例如下cephosdblocked-OSDUUID,示例如下:cephosdcreate{<uuid>}通过若干子命令进行crushmapcrushmap的位置和权重。命令格cephosdcrushadd<osdname(id|osd.id)><float[0.0-]><args>cephosdcrushadd30.02root=defaulthost=ceph-该示例在节点ceph-osd3OSD30.02添加特定类型和名字的无父节点的crushcephosdcrushadd-bucket<name>cephosdcrushcreate-or-move<osdname(id|osd.id)><float[0.0-]>显示crushmapcephosdcrush

mandget-tunablegetcrushtunablestraw_calc_versioncephosdcrushget-tunablestraw_calc_versionOSD项连接到特定的位置(不清楚作用cephosdcrushlink<name><args>将存在的OSDcephosdcrushmove<name><args>OSDcrushmapcephosdcrushremove<name>cephosdcrushrename-bucket ame>OSDcephosdcrushreweight<name><float[0.0-OSDcephosdcrushreweight-重新计算某个的权重cephosdcrushreweight-subtree<name>OSDcrushmapcephosdcrushrm<name>通过一些子命令创建crush子命令create-erasure为矫删码池创建crush规则cephosdcrushrulecreate-erasure<name>子命令create-simple创建一个名称为<name>,多个类型为<type>d桶,使用<firstn|indep>中任意一种模式(默认为firstn,矫删码池最好用indep)的crush规则。cephosdcrushrulecreate-simple<name><root><type>显示特定名称的crushcephosdcrushruledump显示crushcephosdcrushrule显示crushcephosdcrushrule移除crushcephosdcrushrulerm如果单独使用set子命令,则通过输入文件设置crushmap。cephosdcrushsetOSDcrushmapcephosdcrushset<osdname(id|osd.id)><float[0.0-]><args>设置crush的可调参数为某个特定的值,唯一可以设置的可调参数是cephosdcrushset-tunablestraw_calc_version显示当前crushcephosdcrushshow-cephosdcrushtunablescephosdcrushunlink<name>cephosddf{manddeep-scrubinitiatesdeepscrubonspecifiedosd.cephosddeep-scrub<who>OSD为downcephosddown<ids>打印OSDmap 信息cephosddump{<int[0-manderasure-code-profileisusedformanagingtheerasurecodeItusessome 获取矫删码profile(配置?)cephosderasure-code-profilegetcephosderasure-code-profilecephosderasure-code-profilerm用指定的kv对设置特定名称的矫删码配置。如果使用--将覆盖一个已经存在的配置(cephosderasure-code-profileset<name>{<profile>OSDIDCrushmapOSDOSD的位置等cephosdfind<int[0-获取CRUSHmap,获取的内容是编码的数据,需要用crushtool进行。cephosdgetcrushmap{<int[0-OSDmaposdmaptool显示可识cephosdgetmap{<int[0-OSDid。cephosdgetmaxosdOSD设置为incephosdin<ids>OSD标记为永久的丢失(如果没有多余的副本,数据将会丢失cephosdlost<int[0-]>{--yes-i-really-mean-OSDcephosdls{<int[0-显示所有的池cephosdlspools查找池中某个对象所在的PGcephosdmap<poolname>OSDcephosdmetadata<int[0-OSD设置为outcephosdout<ids>OSD。cephosdpauseOSDcephosd设置pg_temp映射在某个pgid上(仅限开发使用cephosdpg-temp<pgid>{<id>创建数据池(跟rados的mkpool命令一致?cephosdpoolcreate<poolname><int[0-]>{<int[0-]>}{<erasure_code_profile>}{<ruleset>}cephosdpooldelete<poolname>{<poolname>}{--yes-i-really-获取池的参数cephosdpoolget<poolname>size|min_size|crash_rey_interval|pg_num|如下仅用于分级池cephosdpoolget<poolname>hit_set_type|hit_set_period|hit_set_count|hit_set_fpp|如下仅用于矫删码池cephosdpoolget<poolname>get-获取池的对象限制或者容量限制cephosdpoolget-quota显示池列表cephosdpoolls为某个池打快照cephosdpoolmksnap<poolname>重命名池cephosdpoolrename<poolname>删除池的某个快照cephosdpoolrmsnap<poolname>设置池的某个参数值cephosdpoolset<poolname>size|min_size|crash_rey_interval|pg_num|<val>{--yes-i-really-mean-设置池的对象极限或者容量极限cephosdpoolset-quota<poolname>max_objects|max_bytes获取某个池或者所有池的统计信息cephosdpoolstatsprimary-OSD0.01.0cephosdprimary-affinity<osdname(id|osd.id)><float[0.0-设置primary_temp映射到pgid(进行开发使用cephosdprimary-temp<pgid>OSD。cephosdrepair<who>OSD0.01.0。osdreweight<int[0-]><float[0.0-1.0]>通过PGOSD的权重(PG分布为负载百分比的方式cephosdreweight-by-pg{<int[100-]>}{<poolname>120cephosdreweight-by-utilization{<int[100-]>}OSD。cephosdrmidsids>...]cephosdscrubcephosdsetfull|pause|noup|nodown|noout|noin|nobackfill|通过输入文件(Crush文件)crushmap。cephosdsetcrushmapOSDcephosdsetmaxosd<int[0-OSDmapcephosdOSDmap设置为某个版本(OSD的下线和集群数据的迁移cephosdthrash<int[0-用来管理分 池将分级池添加到基本池中cephosdtieradd<poolname><poolname>{---其中,第一个参数是基本池,第二个为分级池add-添加一个缓存分级池到已经存在的池中cephosdtieradd-cache<poolname><poolname><int[0-设置缓存分级的模式cephosdtiercache-mode<poolname>none|writeback|forward|readonly|从基本池中移除分级池cephosdtierremove<poolname>cephosdtierremove-overlay设置某个池被另一个池覆盖(不明白什么意思cephosdtierset-overlay<poolname>OSDcephosdtree{<int[0-OSDcephosdcephosdunsetfull|pause|noup|nodown|noout|noin|nobackfill|集群空间cephdf放置组OSDcephpgdebugpgcephpgdeep-scrub显示可读的PGmapcephpgdump{all|summary|sum|delta|pools|osds|pgs|pgs_brief}json的格式显示可读的PGmapcephpgdump_json{all|summary|sum|delta|pools|osds|pgs|pgs_brief}json的格式显示PGcephpg显示被卡住的PGcephpgdump_stuck{inactive|unclean|stale|undersized|degraded[inactive|unclean|stale|undersized|degraded...]}{<int>}强制创建PGcephpg_create_pg获取一个二进制的PGmap,可以通过-ocephpg显示特定的PG,可以保护池,OSD或者其它参数,限制显示的具体cephpgls{<int>}{active|clean|down|rey|splitting| plete|stale|remapped|undersized[active|clean|down|rey|splitting| OSD上的PGcephpgls-by-osd<osdname(id|osd.id)> plete|stale|remapped|undersized[active|clean|down|rey|splitting| 显示特定池的PGcephpgls-by-pool<poolstr>{<int>}{active| plete|stale|remapped|undersized[active|clean|down|rey|splitting| OSDcephpgls-by-primary<osdname(id|osd.id)> plete|stale|remapped|undersized[active|clean|down|rey|splitting| 显示PGOSDcephpgmap修复特定的PGcephpgrepair清理特定的PGcephpgscrub启动PG创建的触发器(不清楚作用cephpg设置一个PGcephpgset_full_ratio<float[0.0-设置一个PGcephpgset_nearfull_ratio<float[0.0-显示PGcephpg健康状况cephhealth集群状态ceph认证mandaddaddsauthenticationinfoforaparticularentityfrominputorrandomkeyifnoinputisgivenand/oranycapsspecifiedinthe用法cephauthadd<entity>{<caps>mandcapsupdatescapsfornamefromcapsspecifiedinthecephauthcaps<entity><caps>manddeldeletesallcapsforname.cephauthdelmandexportwriteskeyringforrequestedentity,ormasterkeyringifcephauthexportmandgetwriteskeyringfilewithrequestedcephauthgetmandget-keydisysrequestedcephauthget-key get-or-createaddsauthenticationinfoforaparticularentityfrominputfile,orrandomkeyifnoinputgivenand/oranycapsspecifiedinthecommand.cephauthget-or-create<entity>{<caps>mandget-or-create-keygetsoraddskeyfornamefromsystem/capspairsspecifiedinthecommand.Ifkeyalreadyexists,anygivencapsmustmatchtheexistingcapsforthatkey.cephauthget-or-create-key<entity>{<caps>mandimportreadskeyringfrominputcephauthmandlistlistsauthenticationcephauthmandprint-keydisysrequestedcephauthprint-keymandprint_keydisysrequestedcephauthprint_key压缩压缩monitor配置数据的空间cephManageconfigurationkey.Itusessome manddeldeletesconfigurationcephconfig-keydelmandexistschecksforconfigurationkeyscephconfig-keyexistsmandgetgetstheconfigurationcephconfig-keygetmandlistlistsconfigurationcephconfig-keymandputputsconfigurationkeyandcephconfig-keyput<key>文件系统MANceph堆信息显示heap使用信息(仅仅在tcmalloc编译模式下可用cephheap配置注入向monitorcephinjectargs<injected_args>日志Logdtexttothemonitorlog.cephlog<logtext>暂无,请参考man群(不清楚干什么用的cephquorum群状态显示monitorceph报告集群状态cephreport{<tags>Scrubsthemonitorstores.cephscrub强制同步 强制同步和清理monitorcephsync{--yes-i-really-mean-it}{--i-know-what-i-am-发送消息(cephl<name(type.id)><args>显示版本显示MONceph-i-o-cceph.conf,----id_ID,--user进行认证的客户端ID--name_NAME,-n--cluster--admin-daemonadmin-socket--admin-socket-s,---w,--调试--watch-消息--watch-安全--watch-告警--watch-错误--version,-------connect-timeout4.3池管理(rados)rados[-mmonaddr][mkpool|rmpoolfoo][-p|--poolpool][-s|--snapsnap][-iinfile][-ooutfile]command显示池列表创建一个池mkpool删除一个对象操作接口,用于从获取某个对象的数据,并写入指定的文件。getnamerados–pzsngetname在池创建一个对象,并用指定的文件内容填充。命令格式如下putnamerados–pzsnputname移除池中的某个对象,格式如下rmrados–pzsnrm列出某个池中的对象,并将其写入指定的文件中,格式如下ls列出某个池中的快照列表clonedataamedstname--object-locatorCloneobjectbytedatafromametodstname.Bothobjectsmustbestoredwiththelocatorkeykey(usuallyeither ameordstname).Objectattributesandomapkeysarenotcopiedorcloned.mksnaprmsnaprmsnapbenchsecondsmode[-bobjsize][-tthreadswrite,seq,rand。seqrand是读基准测试,也即顺序读--no-cleanup进行写基准的测试。4MB16。Listallthekeysstoredintheobjectmapofobjectname.listomapvalsnameListallkey/valuepairsstoredintheobjectmapofobjectThevaluesaredumpedingetomapvalnameDumpthehexadecimalvalueofkeyintheobjectmapof

setomapvalnamekeySetthevalueofkeyintheobjectmapofobjectname.rmomapkeynamekeyRemovekeyfromtheobjectmapofobjectname.getomapheadernameDumpthehexadecimalvalueoftheobjectmapheaderofobjectsetomapheadernamevalueSetthevalueoftheobjectmapheaderofobject-ppool,--pool要操作的池对象,很多命令都需要该选项-ssnap,--snap从给定的池快照数据,该选项在快照读操作中都可以使用-i-o-cceph.conf,--动时用于确定monitor的地址。-m连接该参数指定的monitorrados获取池foo的对象列表rados-pfools向池foo中写入一个对象rados-pfooputmyobject为池foo创建一个快照rados-pfoomksnap删除池foo中的一个对象rados-pfoormrados-pfoo-smysnapgetmyobjectrbd是对RBDLinuxrbd驱动或则Qemu/KVM在RADOS对象中。rbd[-cceph.conf][-mmonaddr][-p|--poolpool]--sizesize][--orderbits][command...显示池中的RBD镜像列表。使用参数-l可以获取更详细的信息ls[-l|--long][pool-info[image-rbdsize--stripe-unit和--stripe-count参数是可选的,但必须同时使用。create[image-父镜像保证一致,大小也与父镜像保持一致。--stripe-unit--stripe-count参数2(?clone[parent-snapname][image-flatten[image-children[image---allow-shrinkresize[image-name][--allow-rm[image-导出一个镜像到指定export[image-name][dest-(1<<orderimport[path][dest-export-diff[image-name][dest-path][--from-snap(stdin,并(stdoutrbdmerge-difffirstsecond-|rbdmerge-diff-third1的情况(stripe_count。命merge-diff[first-diff-path][second-diff-path][merged-diff-import-diff[src-path][image-将某个镜像从某个快照开始或者镜像创建时开始的数据,以字节的形式diff[image-name][--from-snapcp[src-image][dest-mv[src-image][dest-snapsnapls[image-snapsnapcreate[image-rbd-pzsnsnapcreateimg_test--snapsnapsnaprollback[image-snapsnaprm[image-snapsnappurge[image-snap(请参考rbd克隆相关内容。在做克隆的时候,快照必须被保护起来。保护意snapprotect[image-snapsnapunprotect[image-rbdmap[image-name][-o|--optionsmap-options][--read-unmap[device-status[image-rbdstatusimg_test-plocklocklist[image-lockIDlockadd[image-name][lock-lockIDlocklslockremove[image-name][lock-id]--io-threads16,io-total1GBbench-write[image-name]--io-size[io-size-in-bytes]--io-threads[num-ios-in-flight]--io-total[total-bytes-to-write]除了使用--pool和--snap两个参数之外,镜像名称可以包含池名称和[pool/]image-因此,在镜像名称中包含斜线是的RDBCeph(RADOSorder对象的大小,对象的大小通过一个2的幂的值指定,也即定义为2^[order]22,stripe_unitstrip_count条带数量,当写入数据到[strip_count]个对象之后,将会重新返回第一个对象写另外一个条带,一直到对象达到其最大值(order值strip_countv0.53,并且镜像为第二种格式(format2也就是说默认情况下块设备数(顺序写是一个对象一个对象来的,fsid=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeeeFSIDip=a.b.c.d[:p]–客户端连接用的IP地址和端,可选share–使能多个客户端间共享映射(缺省配置(map为何物noshare–多个客户端间共享映射crc–使能写数据的CRC32校验(缺省配置nocrc使能写数据的CRC32osdkeepalive=x-OSDkeepalive超时时间(5秒osd_idle_ttl=xOSD空闲TTL(60秒rw–映射镜像的读写(缺省设置ro–映射镜像只读,等价于--read-only1)100GBrbd-pmypoolcreatemyimage--size或者另外式rbdcreatemypool/myimage--sizerbdcreatemypool/myimagesize102400order23rbdrmmypool/myimagerbdsnapcreatemypool/myimage@mysnap4)创建一个被保护快照的COW克隆rbdclonemypool/myimage@mysnap5)rbdchildrenmypool/myimage@mysnaprbdsnaprmrbdmapmypool/myimage--idadmin--keyfilerbdunmaprbdimport--image-format2imagemypool/parentrbdsnapcreate--snapsnapnamemypool/parentrbdsnapprotectmypool/parent@snaprbdclonemypool/parent@snap创建一个比较小的stripe_unit适配写IOrbd-pmypoolcreatemyimage--size102400--stripe-unit65536--count首先导出该池,然后以期望的池格式导入rbdexportmypool/myimage@snaprbdimport--image-format2/tmp/imgrbdlockaddmypool/myimagerbdlockremovemypool/myimagemylockid-cceph.conf,--动时用于确定monitor的地址。-m连接该参数指定的monitor-ppool,--pool要操作的池对象,很多命令都需要该选项--no---image-format1 1–RBD镜像时使用原始的格式。改格式能够与所有的librbd版本和内核rbd模块兼容,但是不支持诸如克隆等特性。format2–使用第二版rbd3.11以上的内核版本支持(除了条带化。该版本支持克隆及扩展性的特性。--sizesize-in-定义rbd镜像的大小,单位是--order1order。默认22(4MB。--stripe-unitsize-in-4.4.5--stripe-count定义条带的对象的数量。具体请参考4.4.5--snap--id指定map相关命令的用户名(非前缀--keyfilemap相关命令操作时,指定一个包含秘钥的文件。如果未指定则.admin做为缺省值使用。--keyringmap相关命令操作时,指定包含秘钥的一个秘钥环文件。如果--shared命令lockadd的选项,使用该选项允许多个客户端锁同一个镜像,但必时同一个镜像的情况下,例如虚拟机迁移,集群文件系统等。--format定义输出格式(缺省:in,json,使用json或者xml-omap-options,--optionsmap-的挂在选项将镜像映射为只读模式,等价于-oro--image-features创建一个镜像时,指定RBD2+1:layeringsupport+2:striv2support+4:exclusivelockingsupport+8:objectmapsupportceph集群的算法由两个守护进程实现,分别是Ceph监视器和CephCephOSDCRUSHlibradosceph5.1(,CephMON如前文所述,Ceph的Monitors节点着“集群映射图”的一致拷贝,因此客户端通过该映射图可以直接获得OSD守护进程及数据放置的位置。CephMonitor建立连接。CephMonitorsmaintaina“mastercopy”oftheclustermap,whichmeansaCephcandeterminethelocationofallCephMonitors,CephOSDDaemons,andCephMetadataServersjustbyconnectingtooneCephMonitorandretrievingacurrentclustermap.BeforeCephscanreadfromorwritetoCephOSDDaemonsorCephMetadataServers,theymustconnecttoaCephMonitorfirst.WithacurrentcopyoftheclustermapandtheCRUSHalgorithm,aCephcancomputethelocationforanyobject.TheabilitytocomputeobjectlocationsallowsaCephtotalkdirectlytoCephOSDDaemons,whichisaveryimportantaspectofCeph’shighscalabilityandperformance.SeeScalabilityandHighAvailabilityforadditionaldetails.TheprimaryroleoftheCephMonitoristomaintainamastercopyoftheclustermap.CephMonitorsalsoprovideauthenticationandloggingservices.CephMonitorswriteallchangesinthemonitorservicestoasinglePaxosinstance,andPaxoswritesthechangestoakey/valuestoreforstrongconsistency.CephMonitorscanquerythemostrecentversionoftheclustermapduringsyncoperations.CephMonitorsleveragethekey/valuestore’ssnapshotsanditors(usingleveldb)toperformstore-widesynchronization.Deprecatedsinceversionversion:5.2MONMap5.2.2.1池创建立连接,并调用pool_create进行池的创建,具体时序如图所示。,如时序图所示池的创建最终是客户端通过网络发消息给MON节点(如MONMON,5.3cephx5.2.2.2池销5.2.2.15.2.2.1集群的管理命令通常被封装为不同种类的消息CephCephlibrados其次,librados过网络对Ceph集群进行数据的。(target3.xOSD_calc_target具5.4由上图可以看到,Ceph集群端有一个同样的通信类对数据进行接收,该类基于机制实现,当有数据到时,可以触发数据的处理。消息首先到达OSD类进行分类,然后将消息放入一个工作队列中。此时MONOSDCrush如下文字来自文档,Ceph主要依赖Ceph客户端和OSD守护进程,因为这两个组5个图共同描述,也即“集群运行图”。CephdependsuponCephsandCephOSDDaemonshavingknowledgeoftheclustertopology,whichisinclusiveof5mapscollectivelyreferredtoasthe“ClusterMap”:TheMonitorMap:Containstheclusterfsid,theposition,nameaddressandportofeachmonitor.Italsoindicatesthecurrentepoch,whenthemapwascreated,andthelasttimeitchanged.Toviewamonitormap,executecephmondump.TheOSDMap:Containstheclusterfsid,whenthemapwascreatedandlastmodified,alistofpools,replicasizes,PGnumbers,alistofOSDsandtheirstatus(e.g.,up,in).ToviewanOSDmap,executecephosddump.ThePGMap:ContainsthePGversion,itstimestamp,thelastOSDmapepoch,thefullratios,anddetailsoneachcementgroupsuchasthePGID,theUpSet,theActingSet,thestateofthePG(e.g.,active+clean),anddatausagestatisticsforeachpool.TheCRUSHMap:Containsalistofstoragedevices,thefailurehierarchy(e.g.,device,host,rack,row,room,etc.),andrulesfortraversingthehierarchywhenstoringdata.ToviewaCRUSHmap,executecephosdgetcrushmap-o{filename};then,pileitbyexecutingcrushtool-d{comp-crushmap-filename}-o crushmap-filename}.Youcanview piledmapinatexteditororwithTheMDSMap:ContainsthecurrentMDSmapepoch,whenthemapwascreated,andthelasttimeitchanged.Italsocontainsthepoolforstoringmetadata,alistofmetadataservers,andwhichmetadataserversareupandin.ToviewanMDSmap,executecephmdsEachmapmaintainsani tivehistoryofitsoperatingstatechanges.CephMonitorsmaintainamastercopyoftheclustermapincludingtheclustermembers,state,changes,andtheoverallhealthoftheCephStorageCluster.MonitorOSD该图描述了OSD的分布情况及运行状态。同时,该图描述了池的属性,例如的数量,副本数量和crushPG其中包含池的ID,对象的数量等信息,其中池的ID是一个比较重要的信其次,该图中包含OSD该图中包含OSD再次,包含PG的详细信息,PG名规则是POOL_ID.PG_ID,也即PG的标示中包含池ID的信息。PGMapPG所运行的OSD的集合信息以及初始OSDCRUSHCrushDescription:区分一条规则属于某个规则集的。给池设置规则集后激活Purpose: Default: 为硬盘(的)或RAID写一条规则Purpose: Default:ValidValues:Currentlyonly CRUSH Purpose:Default:1 CRUSH Purpose:Default:10steptake<bucket- Purpose:Example:steptakestepchoosefirstn{num}type{bucket-选取指定类型桶的数量,这个数字通常是池的副本数(即poolsize如果{num}==0选择pool-num-replicas个桶(所有可用的;{num0&&pool-num-replicas就选择那么多的桶;如果{num}<0它意为pool-num-replicas-{num}。steptakestepchoosestepchoosefirstn1typestepchooseleaffirstn{num}type{bucket-选择{bucket-type}类型的一堆桶,并从各桶的里选择一个叶子节点。集合内桶的数量通常是池的副本数(即poolsize{num0pool-num-replicas个桶(所有可用的;如果{num}>0&&<pool-num-replicas就选择那么多的桶;如果{num}<0它意为pool-num-replicas-{num}。Followssteptakeorstepchoose.stepchooseleaffirstn0typestep Purpose:规则掩码的一个组件。Prerequisite:Followsstepchoose.Example:stepemitMDS以部署的虚拟机环境的zsn_t

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论