为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > 分布式块存储介绍

分布式块存储介绍

2022-05-03 44页 ppt 2MB 0阅读

用户头像 个人认证

is_604815

有丰富的人事工作经验,对人事运作流程有较深的认识。

举报
分布式块存储介绍分布式块存储介绍分布式块存储概念:采用分布式技术:多存储节点;操作:块;概念1分布式分布式系统:硬件或软件组件分布在网络计算机上且通过消息传递进行通信和动作协调的协调。特征:并发性异构性可伸缩性透明性概念2块存储块设备:各类磁盘;块层:linux存储虚拟化RAIDQemu虚拟盘概念3网络存储NAS(NetworkAttachedStorage-网络附加存储)即将存储设备通过标准的网络拓扑结构(例如以太网),连接到一群计算机上。NAS是部件级的存储方法,它的重点在于帮助工作组和部门级机构解决迅速增加存储容量的需求。DAS(Dir...
分布式块存储介绍
分布式块存储介绍分布式块存储概念:采用分布式技术:多存储节点;操作:块;概念1分布式分布式系统:硬件或软件组件分布在网络计算机上且通过消息传递进行通信和动作协调的协调。特征:并发性异构性可伸缩性透明性概念2块存储块设备:各类磁盘;块层:linux存储虚拟化RAIDQemu虚拟盘概念3网络存储NAS(NetworkAttachedStorage-网络附加存储)即将存储设备通过的网络拓扑结构(例如以太网),连接到一群计算机上。NAS是部件级的存储,它的重点在于帮助工作组和部门级机构解决迅速增加存储容量的需求。DAS(DirectAttachedStorage-直接附加存储)是指将存储设备通过SCSI接口或光纤通道直接连接到一台计算机上。DAS产品包括存储器件和集成在一起的简易服务器,可用于实现涉及文件存取及管理的所有功能。SAN(StorageAreaNetwork-存储局域网络)通过光纤通道连接到一群计算机上。在该网络中提供了多主机连接,但并非通过标准的网络拓扑。SAN专注于企业级存储的特有问题,主要用于存储量大的工作环境。实例分析——开源分布式块存储sheepdog开源的分布式块存储:2009年由日本NTT实验室MORITAKAZUTAKA创建的专为虚拟机(QEMU/KVM虚拟机)提供块存储,但并不完全拘泥于虚拟机,可提供一个虚拟的块设备无单节点失效:如果一个节点失败,其数据可由其他节点得到。低运维开销:零配置;对内核文件系统无特性假设;节点变化无须人工参与即可恢复;数据动态均衡负载;支持虚拟机的热迁移、镜像快照、模版&克隆、集群快照;计算节点和数据节点混合模式线性扩展,支持上千级别节点Sheepdogcluster整体架构整体架构Sheepdog是一个分布式存储系统,它为sheepdog客户端(QEMU块设备驱动)提供一个objectstorage(对象存储),(类似于简单的key-value接口)。objectstorage:sheepdog并不是一般通用的文件系统。Sheepdog守护线程(sheep)为QEMU创建一个分布式的对象存储系统。对象可以存放在存储系统中。对象是大小可伸缩的,并且有一个全局唯一标识。我们通过指定对象标识来进行读写删除等操作。对象存储包括gateway和对象管理。Gateway:gateway接受QEMU发送来的I/O请求(objectid,offset,length,operationtype),并根据一致性哈希算法来计算目标节点,然后将请求发送至目标节点。Objectmanager:objectmanager接受到gateway发送来的I/O请求,并对它的磁盘上进行读写操作。Clustermanager:它管理nodemembership(节点之间的关系)例如,检测失败或添加的节点和通知节点的变化,并且管理一些保持节点一致性的操作,例如vdi创建以及快照等。目前我们采用corosyncclusterengine作为clustermanager。QEMUblockdriver:它将一个VM镜像分成固定大小的object(4MB)并通过gateway将它们存放在objectstorage。节点内部ObjectStorage每个对象都有一个全局唯一的64位标识,对象可以存在多个节点上。QEMUblockdriver并不关心对象的存储位置。对象存储系统负责管理对象的存储位置。Object类型:dataobject、vdiobject(虚拟盘镜像)、vmstateobject(运行的虚拟机的虚拟机状态镜像,用来做快照)、vdiattrobject(每个虚拟盘的属性,属性为key-value风格,类似于常用文件系统的扩展属性)ObjectID:0-31(32bits):objecttypespecificspace32-55(24bits):vdiid对VDI名计算hash值得到56-59(4bits):reserved60-63(4bits):objecttypeidentifierobjecttypetheusageoflower32bitsdataobjecttheindexnumberinthevirtualdiskimagevdiobjectnotused(filledwithzero)vmstateobjecttheindexnumberinthevmstateimagevdiattrobjectsthehashvalueofthekeynameObject格式:Dataobject:虚拟盘镜像的chunkVdiobject:structsheepdog_inode{charname[SD_MAX_VDI_LEN];/*thenameofthisVDI*/chartag[SD_MAX_VDI_TAG_LEN];/*thesnapshottagname*/uint64_tctime;/*creationtimeofthisVDI*/uint64_tsnap_ctime;/*thetimesnapshotistaken*/uint64_tvm_clock_nsec;/*vmclock(usedforlivesnapshot)*/uint64_tvdi_size;/*thesizeofVDI*/uint64_tvm_state_size;/*thesizeofvmstate(usedforlivesnapshot)*/uint16_tcopy_policy;/*reserved*/uint8_tnr_copies;/*thenumberofobjectredundancy*/uint8_tblock_size_shift;/*infoaboutthesizeofthedataobject*/uint32_tsnap_id;/*thesnapshotid*/uint32_tvdi_id;/*thevdiid*/uint32_tparent_vdi_id;/*theparentsnapshotvdiidofthisVDI*/uint32_tchild_vdi_id[MAX_CHILDREN];/*thechildrenVDIsofthisVDI*/uint32_tdata_vdi_id[MAX_DATA_OBJS];/*thedataobjectIDsthisVDIcontains*/};Vmstateobject:chunkVdiattrobject:ThefirstSD_MAX_VDI_ATTR_KEY_LENbytes(256bytes)isthekeynameofthisattribute.Therestoftheobjectisthevalueofthisattribute.Read-only/writableobjectsWritable:只允许一个VM读写此对象而其他VMs不能访问;Read-onlyobjects:可读但不能写这是指虚拟机不能同一时间共享同一卷(volume)。这避免了写写冲突,简化了sheepdog系统的实现。GatewayWheretostoreobjectsconsistenthashing:增删节点不会对对象映射产生改变;I/O负载平衡Replication写冲突WriteI/Oflow所有副本必须成功更新ReadI/Oflow对象一致性:节点失效造成副本不一致。RetryingI/Orequestsepoch:历史版本号ObjectmanagerPathnamerule:存放路径/store_dir/obj/[epochnumber]/[objectID]Writejournaling写日志如果sheep守护线程在写操作的时候失败,则只有部分对象会更新。1.createajournalfile"/store_dir/journal/[epoch]/[vdiobjectid]"2.writeadatatothejournal3.writeadatatothevdiobject4.removethejournalfileClustermanager一般sheepdog客户端独立访问他们的镜像。而且一些VDI操作(克隆、创建VDI)必须唯一的执行,因为这些操作更新全局信息。CorosyncclusterengineQEMUBlockDriverSheepdog卷被分成4MB的dataobjects。只有被写过的才分配。Open:QEMU块设备驱动通过gateway读一个vdi对象bdrv_open()Read/wrte:根据请求扇区的偏移和大小计算dataobjectid,然后将请求发送到gateway。如果块设备驱动发送写请求至某个不属于当前VDI的数据对象,则块设备驱动发送Cow请求来分配一个新的数据对象写快照vdi:对QEMU附加一个快照VDI,当块设备驱动第一次将写请求发送到块设备vdi时,则块设备驱动创建一个写的writeableVDI作为快照的孩子,然后发送请求到这个新的VDI。VDI操作Lookupcalculateavdiidfromthehashvalueofthevdinamecalculateavdiobjectidfromthevdiidsendareadrequesttothevdiobjectifthevdiisnottherequestedone,incrementthevdiidandretrytosendareadrequest快照和克隆1.readatargetVDI2.createanewVDIwhichhasthesamecontentasthetargetobjectVDI3.setthe''parent_vdi_id''ofthenewVDItothetargetVDIid4.setthe''child_vdi_id''ofthetargetVDItothenewVDIid5.setthe''snap_ctime''ofthetargetVDItothecurrenttimethen,thenewvdibecomesthecurrentvdiobject.DeletereclaimingofunuseddataobjectsisnotinvokeduntilallrelevantVDIobjects(allrelativesnapshotVDIsandclonedVDIs)aredeleted。AfterallrelevantVDIsaredeleted,SheepdogdeletesalldataobjectsoftheVDIs,andsetthenullstringtothenameofthevdiobjects.ObjectrecoveryEpoch:nodemembership的历史信息,路径为/store_dir/epoch/[epochnumber]每个文件包含此epoch的节点信息(IPaddress,portnumber,thenumberofvirtualnodes)Recoveryprocess1.ReceiveallstoredobjectIDsfromallnodes2.Calculatewhichobjectstohave3.CreatetheobjectIDslistfile"/store_dir/obj/[thecurrentepoch]/list"4.SendareadrequeststogetobjectswhoseIDisinthelistfile.Therequestsaresenttothenodewhichhadtheobjectatthepreviousepoch.5.StoretheobjecttothecurrentepochdirectoryProtocolSheepdog请求头包含固定大小的header(48位)和可变的数据段。Header包括版本,操作代码,epoch号,数据长度等。Betweensheep和qemubetweensheepandcollieoperationcodedescriptionSD_OP_DEL_VDIDeletetherequestedVDI.SD_OP_GET_NODE_LISTGetthelistofsheepdognodes.SD_OP_GET_VM_LISTNotusednow.SD_OP_MAKE_FSCreateasheepdogcluster.SD_OP_SHUTDOWNStopasheepdogcluster.SD_OP_STAT_SHEEPGetinformationaboutlocaldiskusage.SD_OP_STAT_CLUSTERGetinformationaboutthesheepdogclusterSD_OP_KILL_NODEAbortthesheepdaemon.SD_OP_GET_VDI_ATTRGetavdiattrobjectid.betweensheepsoperationcodedescriptionSD_OP_REMOVE_OBJRemovestheobject.SD_OP_GET_OBJ_LISTGetthelistofobjectIDswhicharestoredonthetargetnode.Sheepdog线程模型两种上下文主线程上下文接收请求,唤醒处理函数group_handler(),处理节点变化和广播消息client_handler(),处理IO和数据恢复、迁移等请求工作线程上下文12个,其中4个专门处理IO请求,4个专门处理gateway请求逻辑处理模型两种上下文,主线程同工作线程无竞争的全局变量将请求处理逻辑中需要串行化的逻辑放到主线程中,可以并行的逻辑放到工作线程中多线程、无锁的节点变化处理逻辑、数据恢复、迁移逻辑复杂的分布式算法简单化,根除死锁的可能性容易检验算法的正确性节点管理Sheepdog只提供节点变化后的处理机制节点变化的检测依赖外部实现消息机制依赖外部实现节点变化消息节点广播消息支持两种模型全对称(依赖corosync,运行于sheepdog的地址空间)缺点:规模小<100优点:无需配置单独的控制集群(依赖Accord*或者Zookeeper,运行于独立的地址空间)缺点:需要配置控制集群优点:规模大>1000节点变化的处理节点加入时,内部逻辑需要一个特殊的master节点来处理新节点是否可以加入集群主动或被动关闭后,重新启动集群,也是节点变化的处理过程每个节点都有一致的成员视图目前可以处理多个节点同时离开或者加入的事件(比如同时有A,B加入,C离开)节点加入节点加入分成两个阶段1.新加入的节点发送加入请求2.master节点检查系统状态,核查能否加入,如果能,则广播一个新的视图,各个节点更新视图和状态3.新节点加入时,在节点1和2之间master节点离开,mastership自动转移,不会影响系统运行新的master节点继续检查状态以及广播视图节点离开节点离开外部的节点检测机制发送成员变化视图各个节点更新视图和状态当多个节点变化事件发生时,外部检测机制确保离开和加入的消息的顺序一致剩下的节点和新加入的节点看见一致的视图比如集群有(A,B,C,D)四个节点,E在加入的同时D因事故离开,则(A,B,C,E)四个节点都将看到最终如下的视图-{member(A,B,C,E),join(E),left(D)}产生一个还是多个视图变化消息跟外部检测机制相关虚拟节点与一致性哈希Sheepdog采用虚拟节点和一致性哈希存储块对象节点和数据都放到哈希环上一个物理节点分散成多个节点均匀到环上节点变化的影响节点加入,数据需要重新均衡-虚拟节点和一致性哈希算法保证数据均匀分布在各个物理节点很大程度上减少数据迁移节点离开,数据拷贝需要恢复,保证数据冗余度-通过节点变化的历史信息恢复数据数据管理虚拟机镜像被切分为4M大小的对象对象稀疏存储每个对象由唯一的64位数字索引每个对象有多个拷贝负值到节点上数据的读写由于一个镜像只有一个虚拟机操作,所以更新拷贝时可以并行执行写操作读一个对象,可以从任何一个拷贝中返回拷贝修复分布式系统中,拷贝的修复通常有两种急修复:收到节点离开消息,立即进行修复优点:简单缺点:当离开的节点回来之后,造成带宽的浪费懒修复:优点:能区分节点的临时错误和永久错误,减少带宽的浪费缺点:增加算法逻辑复杂度-如何处理关于临时离开节点的数据请求拷贝修复逻辑对象的时间轨迹-用epoch来记录每个发生节点变化的新视图-通过epoch来区分不同时间的数据对象-每个对象都有一个以epoch为点的时间轨迹init:(A,B,C),3个拷贝Sheepdog面临的主要问题多个节点变化:节点加入时,有其他节点当掉扩容,缩容等数据平衡,节点存储权重:虚拟节点和一致性哈希减少恢复时间和数据迁移节点变化时对虚拟机IO的影响本地缓存模式,几乎无影响无本地缓存,需要等待对象恢复大规模节点的扩展性目标是上几千节点的规模内部算法的扩展性专门的节点控制集群安装sheepdogRequirementsOneormorex86-64machines.Linuxkernel2.6.27orlaterglibc2.9orlaterThecorosyncandcorosynclibpackage.QEMU0.13orlaterCompile-timedependenciesGNUAutotoolspkg-configcorosyncdevelpackagegit(whencompilingfromsourcerepo)liburcuoptional:fuse-devel(forsheepfs)InstallCompileorinstalltheCorosyncpackagesFordebianpackagebasedsystems:$sudoaptitudeinstallcorosynclibcorosync-devForRPMpackagebasedsystems:$sudoyuminstallcorosynclib-develDownload,buildandinstallQEMUwithSheepdogsupport$gitclonegit://git.sv.gnu.org/qemu.git$cdqemu$./configure$sudomakeinstall$cd..Download,buildandinstalltheSheepdogserverandcommandlinetools$gitclonegit://github.com/collie/sheepdog.git$cdsheepdog$./autogen.sh$./configure$sudomakeinstall$cd..UsageSetupSheepdog$sudo/etc/init.d/sheepdogstartOr;$sudosheep/var/lib/sheepdog1.Formatsheepdogcluster$collieclusterformat--copies=32.Checkclusterstate$collienodelistIdxNodeid(FNV-1a)-Host:Port------------------------------------------------00308164db75cff7e-10.68.13.15:7000103104d8b4315c8e4-10.68.13.1:700020ab18c565bc14aea-10.68.13.3:700030c0d27f0ac395f5d-10.68.13.16:70004127ee4802991f308-10.68.13.13:70005135ff2beab2a9809-10.68.14.5:7000617bd6240eab65870-10.68.14.4:700071cf35757cbf47d7b-10.68.13.10:700081df9580b8960a992-10.68.13.11:7000929307d3fa5a04f78-10.68.14.12:70001029dcb3474e31d4f3-10.68.14.15:7000
/
本文档为【分布式块存储介绍】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索