




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
分布式塊存儲(chǔ)介紹2023/2/51分布式塊存儲(chǔ)概念:采用分布式技術(shù):多存儲(chǔ)節(jié)點(diǎn);操作:塊;2023/2/52概念1分布式分布式系統(tǒng):硬件或軟件組件分布在網(wǎng)絡(luò)計(jì)算機(jī)上且通過(guò)消息傳遞進(jìn)行通信和動(dòng)作協(xié)調(diào)的協(xié)調(diào)。特征:并發(fā)性異構(gòu)性可伸縮性透明性2023/2/53概念2塊存儲(chǔ)塊設(shè)備:各類(lèi)磁盤(pán);塊層:linux存儲(chǔ)虛擬化RAIDQemu虛擬盤(pán)2023/2/54概念3網(wǎng)絡(luò)存儲(chǔ)NAS(NetworkAttachedStorage-網(wǎng)絡(luò)附加存儲(chǔ))即將存儲(chǔ)設(shè)備通過(guò)標(biāo)準(zhǔn)的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)(例如以太網(wǎng)),連接到一群計(jì)算機(jī)上。NAS是部件級(jí)的存儲(chǔ)方法,它的重點(diǎn)在于幫助工作組和部門(mén)級(jí)機(jī)構(gòu)解決迅速增加存儲(chǔ)容量的需求。DAS(DirectAttachedStorage-直接附加存儲(chǔ))是指將存儲(chǔ)設(shè)備通過(guò)SCSI接口或光纖通道直接連接到一臺(tái)計(jì)算機(jī)上。DAS產(chǎn)品包括存儲(chǔ)器件和集成在一起的簡(jiǎn)易服務(wù)器,可用于實(shí)現(xiàn)涉及文件存取及管理的所有功能。SAN(StorageAreaNetwork-存儲(chǔ)局域網(wǎng)絡(luò))通過(guò)光纖通道連接到一群計(jì)算機(jī)上。在該網(wǎng)絡(luò)中提供了多主機(jī)連接,但并非通過(guò)標(biāo)準(zhǔn)的網(wǎng)絡(luò)拓?fù)洹AN專(zhuān)注于企業(yè)級(jí)存儲(chǔ)的特有問(wèn)題,主要用于存儲(chǔ)量大的工作環(huán)境。2023/2/552023/2/562023/2/57實(shí)例分析
——開(kāi)源分布式塊存儲(chǔ)sheepdog開(kāi)源的分布式塊存儲(chǔ):2009年由日本NTT實(shí)驗(yàn)室MORITAKAZUTAKA創(chuàng)建的專(zhuān)為虛擬機(jī)(QEMU/KVM虛擬機(jī))提供塊存儲(chǔ),但并不完全拘泥于虛擬機(jī),可提供一個(gè)虛擬的塊設(shè)備無(wú)單節(jié)點(diǎn)失效:如果一個(gè)節(jié)點(diǎn)失敗,其數(shù)據(jù)可由其他節(jié)點(diǎn)得到。低運(yùn)維開(kāi)銷(xiāo):零配置;對(duì)內(nèi)核文件系統(tǒng)無(wú)特性假設(shè);節(jié)點(diǎn)變化無(wú)須人工參與即可恢復(fù);數(shù)據(jù)動(dòng)態(tài)均衡負(fù)載;支持虛擬機(jī)的熱遷移、鏡像快照、模版&克隆、集群快照;計(jì)算節(jié)點(diǎn)和數(shù)據(jù)節(jié)點(diǎn)混合模式線(xiàn)性擴(kuò)展,支持上千級(jí)別節(jié)點(diǎn)2023/2/58Sheepdogcluster2023/2/59整體架構(gòu)2023/2/5102023/2/511整體架構(gòu)Sheepdog是一個(gè)分布式存儲(chǔ)系統(tǒng),它為sheepdog客戶(hù)端(QEMU塊設(shè)備驅(qū)動(dòng))提供一個(gè)objectstorage(對(duì)象存儲(chǔ)),(類(lèi)似于簡(jiǎn)單的key-value接口)。objectstorage:sheepdog并不是一般通用的文件系統(tǒng)。Sheepdog守護(hù)線(xiàn)程(sheep)為QEMU創(chuàng)建一個(gè)分布式的對(duì)象存儲(chǔ)系統(tǒng)。對(duì)象可以存放在存儲(chǔ)系統(tǒng)中。對(duì)象是大小可伸縮的,并且有一個(gè)全局唯一標(biāo)識(shí)。我們通過(guò)指定對(duì)象標(biāo)識(shí)來(lái)進(jìn)行讀寫(xiě)刪除等操作。對(duì)象存儲(chǔ)包括gateway和對(duì)象管理。Gateway:gateway接受QEMU發(fā)送來(lái)的I/O請(qǐng)求(objectid,offset,length,operationtype),并根據(jù)一致性哈希算法來(lái)計(jì)算目標(biāo)節(jié)點(diǎn),然后將請(qǐng)求發(fā)送至目標(biāo)節(jié)點(diǎn)。Objectmanager:objectmanager接受到gateway發(fā)送來(lái)的I/O請(qǐng)求,并對(duì)它的磁盤(pán)上進(jìn)行讀寫(xiě)操作。Clustermanager:它管理nodemembership(節(jié)點(diǎn)之間的關(guān)系)例如,檢測(cè)失敗或添加的節(jié)點(diǎn)和通知節(jié)點(diǎn)的變化,并且管理一些保持節(jié)點(diǎn)一致性的操作,例如vdi創(chuàng)建以及快照等。目前我們采用corosyncclusterengine作為clustermanager。QEMUblockdriver:它將一個(gè)VM鏡像分成固定大小的object(4MB)并通過(guò)gateway將它們存放在objectstorage。2023/2/512節(jié)點(diǎn)內(nèi)部2023/2/513ObjectStorage每個(gè)對(duì)象都有一個(gè)全局唯一的64位標(biāo)識(shí),對(duì)象可以存在多個(gè)節(jié)點(diǎn)上。QEMUblockdriver并不關(guān)心對(duì)象的存儲(chǔ)位置。對(duì)象存儲(chǔ)系統(tǒng)負(fù)責(zé)管理對(duì)象的存儲(chǔ)位置。Object類(lèi)型:dataobject、vdiobject(虛擬盤(pán)鏡像)、vmstateobject(運(yùn)行的虛擬機(jī)的虛擬機(jī)狀態(tài)鏡像,用來(lái)做快照)、vdiattrobject(每個(gè)虛擬盤(pán)的屬性,屬性為key-value風(fēng)格,類(lèi)似于常用文件系統(tǒng)的擴(kuò)展屬性)ObjectID規(guī)范:0-31(32bits):objecttypespecificspace32-55(24bits):vdiid對(duì)VDI名計(jì)算hash值得到56-59(4bits):reserved60-63(4bits):objecttypeidentifierobjecttypetheusageoflower32bitsdataobjecttheindexnumberinthevirtualdiskimagevdiobjectnotused(filledwithzero)vmstateobjecttheindexnumberinthevmstateimagevdiattrobjectsthehashvalueofthekeyname2023/2/514Object格式:Dataobject:虛擬盤(pán)鏡像的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:只允許一個(gè)VM讀寫(xiě)此對(duì)象而其他VMs不能訪(fǎng)問(wèn);Read-onlyobjects:可讀但不能寫(xiě)這是指虛擬機(jī)不能同一時(shí)間共享同一卷(volume)。這避免了寫(xiě)寫(xiě)沖突,簡(jiǎn)化了sheepdog系統(tǒng)的實(shí)現(xiàn)。2023/2/516GatewayWheretostoreobjects
consistenthashing:增刪節(jié)點(diǎn)不會(huì)對(duì)對(duì)象映射產(chǎn)生改變;I/O負(fù)載平衡Replication寫(xiě)沖突WriteI/Oflow
所有副本必須成功更新ReadI/Oflow
對(duì)象一致性:節(jié)點(diǎn)失效造成副本不一致。RetryingI/Orequests
epoch:歷史版本號(hào)2023/2/517ObjectmanagerPathnamerule:存放路徑/store_dir/obj/[epochnumber]/[objectID]Writejournaling寫(xiě)日志
如果sheep守護(hù)線(xiàn)程在寫(xiě)操作的時(shí)候失敗,則只有部分對(duì)象會(huì)更新。1.createajournalfile"/store_dir/journal/[epoch]/[vdiobjectid]"2.writeadatatothejournalfilefirst3.writeadatatothevdiobject4.removethejournalfile2023/2/518Clustermanager一般sheepdog客戶(hù)端獨(dú)立訪(fǎng)問(wèn)他們的鏡像。而且一些VDI操作(克隆、創(chuàng)建VDI)必須唯一的執(zhí)行,因?yàn)檫@些操作更新全局信息。Corosyncclusterengine2023/2/519QEMUBlockDriverSheepdog卷被分成4MB的dataobjects。只有被寫(xiě)過(guò)的才分配。Open:QEMU塊設(shè)備驅(qū)動(dòng)通過(guò)gateway讀一個(gè)vdi對(duì)象bdrv_open()Read/wrte:根據(jù)請(qǐng)求扇區(qū)的偏移和大小計(jì)算dataobjectid,然后將請(qǐng)求發(fā)送到gateway。如果塊設(shè)備驅(qū)動(dòng)發(fā)送寫(xiě)請(qǐng)求至某個(gè)不屬于當(dāng)前VDI的數(shù)據(jù)對(duì)象,則塊設(shè)備驅(qū)動(dòng)發(fā)送Cow請(qǐng)求來(lái)分配一個(gè)新的數(shù)據(jù)對(duì)象寫(xiě)快照vdi:對(duì)QEMU附加一個(gè)快照VDI,當(dāng)塊設(shè)備驅(qū)動(dòng)第一次將寫(xiě)請(qǐng)求發(fā)送到塊設(shè)備vdi時(shí),則塊設(shè)備驅(qū)動(dòng)創(chuàng)建一個(gè)寫(xiě)的writeableVDI作為快照的孩子,然后發(fā)送請(qǐng)求到這個(gè)新的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]每個(gè)文件包含此epoch的節(jié)點(diǎn)信息表(IPaddress,portnumber,thenumberofvirtualnodes)Recoveryprocess1.ReceiveallstoredobjectIDsfromallnodes2.Calculatewhichobjectstohave3.CreatetheobjectIDslistfile"/store_dir/obj/[thecurrentepoch]/list"4.SendareadrequeststogetobjectswhoseIDisinthelistfile.Therequestsaresenttothenodewhichhadtheobjectatthepreviousepoch.5.Storetheobjecttothecurrentepochdirectory2023/2/522ProtocolSheepdog請(qǐng)求頭包含固定大小的header(48位)和可變的數(shù)據(jù)段。Header包括協(xié)議版本,操作代碼,epoch號(hào),數(shù)據(jù)長(zhǎng)度等。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線(xiàn)程模型兩種上下文主線(xiàn)程上下文
接收請(qǐng)求,喚醒處理函數(shù)
group_handler(),處理節(jié)點(diǎn)變化和廣播消息
client_handler(),處理IO和數(shù)據(jù)恢復(fù)、遷移等請(qǐng)求
工作線(xiàn)程上下文
12個(gè),其中4個(gè)專(zhuān)門(mén)處理IO請(qǐng)求,4個(gè)專(zhuān)門(mén)處理gateway請(qǐng)求2023/2/527邏輯處理模型兩種上下文,主線(xiàn)程同工作線(xiàn)程無(wú)競(jìng)爭(zhēng)的全局變量將請(qǐng)求處理邏輯中需要串行化的邏輯放到主線(xiàn)程中,可以并行的邏輯放到工作線(xiàn)程中
多線(xiàn)程、無(wú)鎖的節(jié)點(diǎn)變化處理邏輯、數(shù)據(jù)恢復(fù)、遷移邏輯
復(fù)雜的分布式算法簡(jiǎn)單化,根除死鎖的可能性
容易檢驗(yàn)算法的正確性2023/2/528節(jié)點(diǎn)管理Sheepdog只提供節(jié)點(diǎn)變化后的處理機(jī)制
節(jié)點(diǎn)變化的檢測(cè)依賴(lài)外部實(shí)現(xiàn)
消息機(jī)制依賴(lài)外部實(shí)現(xiàn)
節(jié)點(diǎn)變化消息
節(jié)點(diǎn)廣播消息支持兩種模型
全對(duì)稱(chēng)(依賴(lài)corosync,運(yùn)行于sheepdog的地址空間)
缺點(diǎn):規(guī)模小<100
優(yōu)點(diǎn):無(wú)需配置
單獨(dú)的控制集群(依賴(lài)Accord*或者Zookeeper,運(yùn)行于獨(dú)立的地址空間)
缺點(diǎn):需要配置控制集群
優(yōu)點(diǎn):規(guī)模大>10002023/2/529節(jié)點(diǎn)變化的處理節(jié)點(diǎn)加入時(shí),內(nèi)部邏輯需要一個(gè)特殊的master節(jié)點(diǎn)來(lái)處理新節(jié)點(diǎn)是否可以加入
集群主動(dòng)或被動(dòng)關(guān)閉后,重新啟動(dòng)集群,也是節(jié)點(diǎn)變化的處理過(guò)程每個(gè)節(jié)點(diǎn)都有一致的成員視圖目前可以處理多個(gè)節(jié)點(diǎn)同時(shí)離開(kāi)或者加入的事件(比如同時(shí)有A,B加入,C離開(kāi))2023/2/530節(jié)點(diǎn)加入節(jié)點(diǎn)加入
分成兩個(gè)階段
1.新加入的節(jié)點(diǎn)發(fā)送加入請(qǐng)求
2.master節(jié)點(diǎn)檢查系統(tǒng)狀態(tài),核查能否加入,如果能,則廣播一個(gè)新的視圖,各個(gè)節(jié)點(diǎn)更新視圖和狀態(tài)3.新節(jié)點(diǎn)加入時(shí),在節(jié)點(diǎn)1和2之間master節(jié)點(diǎn)離開(kāi),mastership自動(dòng)轉(zhuǎn)移,不會(huì)影響系統(tǒng)運(yùn)行
新的master節(jié)點(diǎn)繼續(xù)檢查狀態(tài)以及廣播視圖2023/2/531節(jié)點(diǎn)離開(kāi)節(jié)點(diǎn)離開(kāi)
外部的節(jié)點(diǎn)檢測(cè)機(jī)制發(fā)送成員變化視圖
各個(gè)節(jié)點(diǎn)更新視圖和狀態(tài)當(dāng)多個(gè)節(jié)點(diǎn)變化事件發(fā)生時(shí),外部檢測(cè)機(jī)制確保離開(kāi)和加入的消息的順序一致
剩下的節(jié)點(diǎn)和新加入的節(jié)點(diǎn)看見(jiàn)一致的視圖
比如集群有(A,B,C,D)四個(gè)節(jié)點(diǎn),E在加入的同時(shí)D因事故離開(kāi),則(A,B,C,E)四個(gè)節(jié)點(diǎn)都將看到最終如下的視圖
-{member(A,B,C,E),join(E),left(D)}
產(chǎn)生一個(gè)還是多個(gè)視圖變化消息跟外部檢測(cè)機(jī)制相關(guān)2023/2/532虛擬節(jié)點(diǎn)與一致性哈希Sheepdog采用虛擬節(jié)點(diǎn)和一致性哈希存儲(chǔ)塊對(duì)象
節(jié)點(diǎn)和數(shù)據(jù)都放到哈希環(huán)上
一個(gè)物理節(jié)點(diǎn)分散成多個(gè)節(jié)點(diǎn)均勻到環(huán)上2023/2/533節(jié)點(diǎn)變化的影響節(jié)點(diǎn)加入,數(shù)據(jù)需要重新均衡
-虛擬節(jié)點(diǎn)和一致性哈希算法保證
數(shù)據(jù)均勻分布在各個(gè)物理節(jié)點(diǎn)
很大程度上減少數(shù)據(jù)遷移節(jié)點(diǎn)離開(kāi),數(shù)據(jù)拷貝需要恢復(fù),保證數(shù)據(jù)冗余度
-通過(guò)節(jié)點(diǎn)變化的歷史信息恢復(fù)數(shù)據(jù)2023/2/534數(shù)據(jù)管理虛擬機(jī)鏡像被切分為4M大小的對(duì)象對(duì)象稀疏存儲(chǔ)每個(gè)對(duì)象由唯一的64位數(shù)字索引每個(gè)對(duì)象有多個(gè)拷貝負(fù)值到節(jié)點(diǎn)上2023/2/535數(shù)據(jù)的讀寫(xiě)由于一個(gè)鏡像只有一個(gè)虛擬機(jī)操作,所以更新拷貝時(shí)可以并行執(zhí)行寫(xiě)操作讀一個(gè)對(duì)象,可以從任何一個(gè)拷貝中返回2023/2/536拷貝修復(fù)分布式系統(tǒng)中,拷貝的修復(fù)通常有兩種
急修復(fù):收到節(jié)點(diǎn)離開(kāi)消息,立即進(jìn)行修復(fù)
優(yōu)點(diǎn):簡(jiǎn)單
缺點(diǎn):當(dāng)離開(kāi)的節(jié)點(diǎn)回來(lái)之后,造成帶寬的浪費(fèi)
懶修復(fù):
優(yōu)點(diǎn):能區(qū)分節(jié)點(diǎn)的臨時(shí)錯(cuò)誤和永久錯(cuò)誤,減少帶寬的浪費(fèi)
缺點(diǎn):增加算法邏輯復(fù)雜度
-如何處理關(guān)于臨時(shí)離開(kāi)節(jié)點(diǎn)的數(shù)據(jù)請(qǐng)求2023/2/537拷貝修復(fù)邏輯對(duì)象的時(shí)間軌跡
-用epoch來(lái)記錄每個(gè)發(fā)生節(jié)點(diǎn)變化的新視圖
-通過(guò)epoch來(lái)區(qū)分不同時(shí)間的數(shù)據(jù)對(duì)象
-每個(gè)對(duì)象都有一個(gè)以epoch為點(diǎn)的時(shí)間軌跡
init:(A,B,C),3個(gè)拷貝
2023/2/538Sheepdog面臨的主要問(wèn)題多個(gè)節(jié)點(diǎn)變化:
節(jié)點(diǎn)加入時(shí),有其他節(jié)點(diǎn)當(dāng)?shù)?/p>
擴(kuò)容,縮容等數(shù)據(jù)平衡,節(jié)點(diǎn)存儲(chǔ)權(quán)重:
虛擬節(jié)點(diǎn)和一致性哈希減少恢復(fù)時(shí)間和數(shù)據(jù)遷移節(jié)點(diǎn)變化時(shí)對(duì)虛擬機(jī)IO的影響
本地緩存模式,幾乎無(wú)影響
無(wú)本地緩存,需要等待對(duì)象恢復(fù)大規(guī)模節(jié)點(diǎn)的擴(kuò)展性
目標(biāo)是上幾千節(jié)點(diǎn)的規(guī)模內(nèi)部算法的擴(kuò)展性專(zhuān)門(mén)的節(jié)點(diǎn)控制集群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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 輔導(dǎo)員考試組織活動(dòng)技能試題及答案
- 發(fā)電廠(chǎng)熱力系統(tǒng)-主凝結(jié)水系統(tǒng)(熱力發(fā)電廠(chǎng)課件)
- 2024年秘書(shū)證考試分析總結(jié)試題及答案
- 2024年知識(shí)考點(diǎn)福建事業(yè)單位考試試題及答案
- 園藝師行業(yè)標(biāo)準(zhǔn)解讀試題及答案
- 園藝師發(fā)展中的機(jī)遇與挑戰(zhàn)試題及答案
- 平穩(wěn)備考心態(tài)福建事業(yè)單位考試試題及答案
- 2024年農(nóng)藝師考試復(fù)習(xí)課堂的組織與安排試題及答案
- 農(nóng)業(yè)職業(yè)經(jīng)理人考試的應(yīng)對(duì)策略與試題及答案
- 《AIGC 新媒體文案寫(xiě)作》期末考試試卷及答案一
- 《強(qiáng)化學(xué)習(xí)理論與應(yīng)用》環(huán)境
- 美麗的西雙版納
- 冷鐓模具設(shè)計(jì)培訓(xùn)資料課件-002
- 橋式起重機(jī)司機(jī)(中級(jí))職業(yè)技能鑒定考試題庫(kù)(職校培訓(xùn))
- 第5章庫(kù)存控制
- 中班數(shù)學(xué)給春天的信
- 腦卒中的癥狀識(shí)別及院前急救
- GB/T 17622-2008帶電作業(yè)用絕緣手套
- 葉斑病的診斷與防治
- 高效液相色譜簡(jiǎn)介及操作課件
- 東榮一礦12 Mta的新井設(shè)計(jì)礦井沖擊礦壓及防治措施至煤柱設(shè)計(jì)智能演變
評(píng)論
0/150
提交評(píng)論