




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
分布式塊存儲介紹2023/2/51分布式塊存儲概念:采用分布式技術:多存儲節點;操作:塊;2023/2/52概念1分布式分布式系統:硬件或軟件組件分布在網絡計算機上且通過消息傳遞進行通信和動作協調的協調。特征:并發性異構性可伸縮性透明性2023/2/53概念2塊存儲塊設備:各類磁盤;塊層:linux存儲虛擬化RAIDQemu虛擬盤2023/2/54概念3網絡存儲NAS(NetworkAttachedStorage-網絡附加存儲)即將存儲設備通過標準的網絡拓撲結構(例如以太網),連接到一群計算機上。NAS是部件級的存儲方法,它的重點在于幫助工作組和部門級機構解決迅速增加存儲容量的需求。DAS(DirectAttachedStorage-直接附加存儲)是指將存儲設備通過SCSI接口或光纖通道直接連接到一臺計算機上。DAS產品包括存儲器件和集成在一起的簡易服務器,可用于實現涉及文件存取及管理的所有功能。SAN(StorageAreaNetwork-存儲局域網絡)通過光纖通道連接到一群計算機上。在該網絡中提供了多主機連接,但并非通過標準的網絡拓撲。SAN專注于企業級存儲的特有問題,主要用于存儲量大的工作環境。2023/2/552023/2/562023/2/57實例分析
——開源分布式塊存儲sheepdog開源的分布式塊存儲:2009年由日本NTT實驗室MORITAKAZUTAKA創建的專為虛擬機(QEMU/KVM虛擬機)提供塊存儲,但并不完全拘泥于虛擬機,可提供一個虛擬的塊設備無單節點失效:如果一個節點失敗,其數據可由其他節點得到。低運維開銷:零配置;對內核文件系統無特性假設;節點變化無須人工參與即可恢復;數據動態均衡負載;支持虛擬機的熱遷移、鏡像快照、模版&克隆、集群快照;計算節點和數據節點混合模式線性擴展,支持上千級別節點2023/2/58Sheepdogcluster2023/2/59整體架構2023/2/5102023/2/511整體架構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。2023/2/512節點內部2023/2/513ObjectStorage每個對象都有一個全局唯一的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)vmstateobjecttheindexnumberinthevmstateimagevdiattrobjectsthehashvalueofthekeyname2023/2/514Object格式: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.2023/2/515Read-only/writableobjectsWritable:只允許一個VM讀寫此對象而其他VMs不能訪問;Read-onlyobjects:可讀但不能寫這是指虛擬機不能同一時間共享同一卷(volume)。這避免了寫寫沖突,簡化了sheepdog系統的實現。2023/2/516GatewayWheretostoreobjects
consistenthashing:增刪節點不會對對象映射產生改變;I/O負載平衡Replication寫沖突WriteI/Oflow
所有副本必須成功更新ReadI/Oflow
對象一致性:節點失效造成副本不一致。RetryingI/Orequests
epoch:歷史版本號2023/2/517ObjectmanagerPathnamerule:存放路徑/store_dir/obj/[epochnumber]/[objectID]Writejournaling寫日志
如果sheep守護線程在寫操作的時候失敗,則只有部分對象會更新。1.createajournalfile"/store_dir/journal/[epoch]/[vdiobjectid]"2.writeadatatothejournalfilefirst3.writeadatatothevdiobject4.removethejournalfile2023/2/518Clustermanager一般sheepdog客戶端獨立訪問他們的鏡像。而且一些VDI操作(克隆、創建VDI)必須唯一的執行,因為這些操作更新全局信息。Corosyncclusterengine2023/2/519QEMUBlockDriverSheepdog卷被分成4MB的dataobjects。只有被寫過的才分配。Open:QEMU塊設備驅動通過gateway讀一個vdi對象bdrv_open()Read/wrte:根據請求扇區的偏移和大小計算dataobjectid,然后將請求發送到gateway。如果塊設備驅動發送寫請求至某個不屬于當前VDI的數據對象,則塊設備驅動發送Cow請求來分配一個新的數據對象寫快照vdi:對QEMU附加一個快照VDI,當塊設備驅動第一次將寫請求發送到塊設備vdi時,則塊設備驅動創建一個寫的writeableVDI作為快照的孩子,然后發送請求到這個新的VDI。2023/2/520VDI操作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.2023/2/521ObjectrecoveryEpoch:nodemembership的歷史信息,路徑為/store_dir/epoch/[epochnumber]每個文件包含此epoch的節點信息表(IPaddress,portnumber,thenumberofvirtualnodes)Recoveryprocess1.ReceiveallstoredobjectIDsfromallnodes2.Calculatewhichobjectstohave3.CreatetheobjectIDslistfile"/store_dir/obj/[thecurrentepoch]/list"4.SendareadrequeststogetobjectswhoseIDisinthelistfile.Therequestsaresenttothenodewhichhadtheobjectatthepreviousepoch.5.Storetheobjecttothecurrentepochdirectory2023/2/522ProtocolSheepdog請求頭包含固定大小的header(48位)和可變的數據段。Header包括協議版本,操作代碼,epoch號,數據長度等。2023/2/523Betweensheep和qemu2023/2/524betweensheepandcollieoperationcodedescriptionSD_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.2023/2/525betweensheepsoperationcodedescriptionSD_OP_REMOVE_OBJRemovestheobject.SD_OP_GET_OBJ_LISTGetthelistofobjectIDswhicharestoredonthetargetnode.2023/2/526Sheepdog線程模型兩種上下文主線程上下文
接收請求,喚醒處理函數
group_handler(),處理節點變化和廣播消息
client_handler(),處理IO和數據恢復、遷移等請求
工作線程上下文
12個,其中4個專門處理IO請求,4個專門處理gateway請求2023/2/527邏輯處理模型兩種上下文,主線程同工作線程無競爭的全局變量將請求處理邏輯中需要串行化的邏輯放到主線程中,可以并行的邏輯放到工作線程中
多線程、無鎖的節點變化處理邏輯、數據恢復、遷移邏輯
復雜的分布式算法簡單化,根除死鎖的可能性
容易檢驗算法的正確性2023/2/528節點管理Sheepdog只提供節點變化后的處理機制
節點變化的檢測依賴外部實現
消息機制依賴外部實現
節點變化消息
節點廣播消息支持兩種模型
全對稱(依賴corosync,運行于sheepdog的地址空間)
缺點:規模小<100
優點:無需配置
單獨的控制集群(依賴Accord*或者Zookeeper,運行于獨立的地址空間)
缺點:需要配置控制集群
優點:規模大>10002023/2/529節點變化的處理節點加入時,內部邏輯需要一個特殊的master節點來處理新節點是否可以加入
集群主動或被動關閉后,重新啟動集群,也是節點變化的處理過程每個節點都有一致的成員視圖目前可以處理多個節點同時離開或者加入的事件(比如同時有A,B加入,C離開)2023/2/530節點加入節點加入
分成兩個階段
1.新加入的節點發送加入請求
2.master節點檢查系統狀態,核查能否加入,如果能,則廣播一個新的視圖,各個節點更新視圖和狀態3.新節點加入時,在節點1和2之間master節點離開,mastership自動轉移,不會影響系統運行
新的master節點繼續檢查狀態以及廣播視圖2023/2/531節點離開節點離開
外部的節點檢測機制發送成員變化視圖
各個節點更新視圖和狀態當多個節點變化事件發生時,外部檢測機制確保離開和加入的消息的順序一致
剩下的節點和新加入的節點看見一致的視圖
比如集群有(A,B,C,D)四個節點,E在加入的同時D因事故離開,則(A,B,C,E)四個節點都將看到最終如下的視圖
-{member(A,B,C,E),join(E),left(D)}
產生一個還是多個視圖變化消息跟外部檢測機制相關2023/2/532虛擬節點與一致性哈希Sheepdog采用虛擬節點和一致性哈希存儲塊對象
節點和數據都放到哈希環上
一個物理節點分散成多個節點均勻到環上2023/2/533節點變化的影響節點加入,數據需要重新均衡
-虛擬節點和一致性哈希算法保證
數據均勻分布在各個物理節點
很大程度上減少數據遷移節點離開,數據拷貝需要恢復,保證數據冗余度
-通過節點變化的歷史信息恢復數據2023/2/534數據管理虛擬機鏡像被切分為4M大小的對象對象稀疏存儲每個對象由唯一的64位數字索引每個對象有多個拷貝負值到節點上2023/2/535數據的讀寫由于一個鏡像只有一個虛擬機操作,所以更新拷貝時可以并行執行寫操作讀一個對象,可以從任何一個拷貝中返回2023/2/536拷貝修復分布式系統中,拷貝的修復通常有兩種
急修復:收到節點離開消息,立即進行修復
優點:簡單
缺點:當離開的節點回來之后,造成帶寬的浪費
懶修復:
優點:能區分節點的臨時錯誤和永久錯誤,減少帶寬的浪費
缺點:增加算法邏輯復雜度
-如何處理關于臨時離開節點的數據請求2023/2/537拷貝修復邏輯對象的時間軌跡
-用epoch來記錄每個發生節點變化的新視圖
-通過epoch來區分不同時間的數據對象
-每個對象都有一個以epoch為點的時間軌跡
init:(A,B,C),3個拷貝
2023/2/538Sheepdog面臨的主要問題多個節點變化:
節點加入時,有其他節點當掉
擴容,縮容等數據平衡,節點存儲權重:
虛擬節點和一致性哈希減少恢復時間和數據遷移節點變化時對虛擬機IO的影響
本地緩存模式,幾乎無影響
無本地緩存,需要等待對象恢復大規模節點的擴展性
目標是上幾千節點的規模內部算法的擴展性專門的節點控制集群2023/2/539安裝sheepdog/collie/sheepdog/wiki/Getting-StartedRequirementsOneormorex86-64machines.Linuxkernel2.6.27orlaterglibc2.9orlaterThecorosyncandcorosynclibpackage.QEMU0.13orlaterCompile-timedependenciesGNUAutotoolspkg-configcorosyncdevelpackagegit(whencompilingfromsourcerepo)liburcuoptional:fuse-devel(forsheepfs)2023/2/540Install
CompileorinstalltheCorosyncpackages
Fordebianpackagebasedsystems:$sudoaptitudeinstallcorosynclibcorosync-devForRPMpackagebasedsystems:$sudoyuminstallcorosynclib-develDownload,buildandinstallQEMUwithSheepdogsupport$gitclonegit:///qemu.git$cdqemu$./configure$sudomakeinstall$cd..2023/2/541Download,buildandinstalltheSheepdogserverandcommandlinetools
$gitclonegit:///collie/sheepdog.git$cdsheepdog$./autogen.sh$./configure$sudomakeinstall$cd..2023/2/542UsageSetupSheepdog$sudo/etc/init.d/sheepdogstartOr;$sudosheep/var/lib/sheepdog1.Formatsheepdogcluster$collieclusterformat--copies=32.Checkcluster
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權】 IEC 61058-1:2000+AMD1:2001 CSV FR-D Switches for appliances - Part 1: General requirements
- 【正版授權】 IEC 60669-1:1998+AMD1:1999 CSV EN-D Switches for household and similar fixed-electrical installations - Part 1: General requirements
- 【正版授權】 IEC 60335-2-73:2002+AMD1:2006 CSV EN-D Household and similar electrical appliances - Safety - Part 2-73: Particular requirements for fixed immersion heaters
- 【正版授權】 IEC 60245-8:1998+AMD1:2003 CSV FR-D Rubber insulated cables - Rated voltages up to and including 450/750 V - Part 8: Cords for applications requiring high flexibility
- 少先隊輔導員培訓方案
- 小班小球快跑課件
- 護理上門服務方案
- 2025年銷售公司年度工作方案演講稿
- 2025年學校一班級班務工作方案
- 2025年典型的婚禮策劃方案范本
- 2024屆上海市部分區高三下學期二模英語試題匯編:完形填空
- 中華人民共和國各級人民代表大會常務委員監督法宣貫培訓2024
- 2023護理重癥培訓班結業理論考核試題題庫及答案
- 技術服務和售后服務內容及措施
- 車輛維護手冊:車輛故障排查指南
- 四年級下冊英語(人教PEP)高頻考點每日一練
- 2024專利代理人考試真題及答案
- 重慶旅游課件教學課件
- 《機動車駕駛人考試場地布局規劃指南》編制說明
- 《大數據財務分析》教學大綱
- 狀語從句(練習)-2025年高考英語一輪復習(新教材新高考)
評論
0/150
提交評論