网络存储的可靠性课程设计论文.docx

上传人:b****5 文档编号:6635189 上传时间:2023-01-08 格式:DOCX 页数:10 大小:81.92KB
下载 相关 举报
网络存储的可靠性课程设计论文.docx_第1页
第1页 / 共10页
网络存储的可靠性课程设计论文.docx_第2页
第2页 / 共10页
网络存储的可靠性课程设计论文.docx_第3页
第3页 / 共10页
网络存储的可靠性课程设计论文.docx_第4页
第4页 / 共10页
网络存储的可靠性课程设计论文.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

网络存储的可靠性课程设计论文.docx

《网络存储的可靠性课程设计论文.docx》由会员分享,可在线阅读,更多相关《网络存储的可靠性课程设计论文.docx(10页珍藏版)》请在冰豆网上搜索。

网络存储的可靠性课程设计论文.docx

网络存储的可靠性课程设计论文

 

计算机系统结构课程论文

题目

网络存储的可靠性

学院

物电学院

专业

计算机软件与理论

摘要

随着信息技术的不断发展,数据日益成为人们口常生活中重要资源。

爆炸式增长的数据必然带来存储设备的持续增加。

为了减少本地存储压力,云储存正成为时尚。

目前,海量数据存储环境下的现代数据中心的存储节点规模少则几万多则几十万,但在规模巨大的存储环境系统中,磁盘损毁或者存储节点失效己成为一种常态行为;与此同时,因网络连接设备或者存储节点其它元器件造成的数据不可访问或者丢失现象也时有发生。

为了满足口益扩展的数据存储需求,人们对数据存储的可靠性提出了更高的要求,如何实现海量数据在网络存储中低冗余度高可靠性存储己经成为业界面临的一个巨大挑战。

因而,本文网络存储中低冗余度高可靠性海量数据存储系统的关键问题,在总结了当今数据可靠性增强理论和海量数据存储系统基本架构的基础上,对基于纠删码的数据分布策略研究进行一定介绍。

在存储系统中,提出了基于纠删码的数据冗余分布模型,研究了涉及到的数据读写,恢复算法等关键技术。

通过理论分析得出了这种冗余方案对提高系统可靠性更有优势:

要使数据达到相同的可用性,基于纠删码方案只需要较低的冗余度;同样在相同的冗余度情况下,基于纠删码冗余方案的数据有更高的可用性。

关键字:

可靠性;网络存储;海量数据;纠删码

一、绪论

近年来,随着云计算、物联网、社交网络等新兴技术的迅猛发展,无所不在的移动设备、无线射频识别标签、无线传感器等每分每秒都在产生感知世界的信息。

数以亿计用户的互联网服务时时刻刻都在产生新的数据,同时记录人们生活的历史信息也呈现爆炸式增长。

数据的快速增长必然带来存储设备的持续增加。

同时,为了满足口益扩展的数据存储需求,数据存储系统的体系结构也在不断发展与变化,从传统的集中式存储到分布式存储,近几年还出现了云存储等新型海量数据存储模式。

2008年2月,几千个构建在亚马逊EC2和S3上的小型网站因数据中心宕机而受到影响;次年三月,谷歌公司的Docs出现系统故障,随后,联邦商务委员会被请求调查此事,以确定谷歌的云计算服务对客户的隐私与安全可能带来的隐患。

可见,数据的丢失或失效,会给人们带来不可估量的损失。

进入20世纪以后,随着网络技术的持续发展、各种信息服务形式的不断出现、所需存储的数据呈现爆炸式增长,有研究者开始利用普通的PC机来构建大规模的存储系统,最为典型的是Google的GFS,例如,2004年Google的集群中的PC机节点达到18000台,每台PC越挂载两个磁盘。

该技术的出现,使得人们对存储系统多了一种选择。

现在,很多研究者和大型企业开始构建利用普通计算机硬件搭建的数据存储平台,如ApacheHadoop开源项目,Facebook的Cassandra系统、淘宝的TFS(Taofilesystem)。

在存储系统中,特别是大规模数据存储系统中,系统会因为这样或那样的问题出现数据的暂时不可用或者丢失损毁现象。

从数据存储系统的组成上看,不论是DAS,NAS,SAN构建的小型存储系统,还是大规模分布式集群系统乃至超大规模数据中心,其基本存储运算单元都可以分为三个部分:

首先是由磁盘搭建的基础存储设备,它是数据存储的物质基础;其次是系统中心网络,它是连接存储资源和计算资源的神经中枢。

最后是计算设备和系统管理软件,它负责计算任务的完成和系统节点的管理和监测。

一方面是存储数据量的爆炸式增长对基础存储设备规模上的需求,一方面是大规模海量数据存储系统频繁的失效行为,另一方面是数据的丢失给数据拥有者和使用者带来的巨大损失,这一切使得数据存储系统的可靠性成为海量数据存储面临的一个函待解决的重要挑战。

当然,系统的可靠性问题可以通过单纯增加硬件冗余的方式加以解决,但这样带来的硬件成本太高,本文则从数据管理与组织的角度探讨应对海量数据存储系统中数据的可靠性问题。

二、存储系统的可靠性

在一个拥有规模约为4000个结点的数据中心内,平均每天会有四个磁盘失效。

Google公司的研究人员统计了其数据中心的磁盘损毁情况,系统中每年有1.7%至8.6%的磁盘会出现故障。

而根据卡内基梅隆大学的统计数据显示,某些系统中磁盘每年的替换率约为13%。

于是,每年中,几十甚至上百的磁盘损毁对于由成千上万个磁盘组成的PB级系统来讲是一种很平常的事;而对于规模更大的EB级存储系统,每年会有几万甚至十几万的磁盘发生损毁。

计算机除了容量、速度和价格外,人们有时更关心存储外设的可靠性能。

因为软件系统的崩溃可以通过重新安装操作系统和应用程序来实现,但是用户的数据是不能够丢失的。

所以存储设备应该无条件地保护好用户的数据。

故障、错误和失效存在着如下关系:

①一个故障可能会导致一个或者多个错误。

②错误通常具有以下特性:

错误具有两种状态:

潜在状态和有效状态,并且会相互转换。

潜在的错误可能通过激活(activate而有效。

有效错误的影响可以从一个部件传送到另外一个部件,这样就会产生新的错误。

因此,有效错误要么是被激活的潜在错误,要么是由于错误传递而产生的新错误。

③如果错误影响到部件正常的服务时,部件就发生了失效。

④系统中的所有部件的故障、错误和失效均存在这样的关系。

对于故障产生的原因,可以归纳为以下4种;

①硬件故障(hardwarefaults):

设备失效产生的故障。

②设计故障(designfaults):

大部分这种故障由软件引起,小部分由硬件引起。

③操作故障(operationfaults):

由于用户操作的失误引起的故障。

④环境故障(environmentfaults):

由于火灾、洪水、地震等引起的故障。

系统可靠性是指系统从初始状态开始一直提供服务的能力,可靠性通常用平均无故瘴时间(MeanTimeToFailure,MTTF`)来衡量。

提高系统可靠性的方法包括有效构建方法(validconstruction)以及纠错方法(errorcorrection)。

有效构建指的是在构建系统的过程中消除故障隐患,这样建立起来的系统就不会出现故障。

纠错方法指的是在系统构建中设计容错部件,即使出现故障,也可以通过容错信息保证系统正常工作。

具体来说,可以把提高系统可靠性的方法分为:

①故障避免技术(faultavoidance):

通过合理构建系统来避免故障的出现。

②故障容忍技术(faulttolerance):

通过冗余措施,虽然可能出现故障,但是可以通过冗余信息保证服务仍然能够正常进行。

③错误消除技术(errorremoval):

通过验证,最大限度地减少潜在的错误。

④错误预报技术(errorforecasting):

通过分析,预报错误的出现。

为保证冗余信息在出现错误时不失效,通常需要将其存放在与错误部件不同的部件中。

这种方法的典型应用就是冗余磁盘阵列。

三、网络存储可靠性的增强策略

可靠性问题是伴随着系统复杂化而出现的问题,系统可靠性研究也己从最初的军事领域扩展到国民经济领域。

随着数据的爆炸式增长,存储系统规模的持续扩大,数据可靠性己是分布式存储研究领域的一项关键技术,良好的容错技术在提高系统可靠性的同时还可以提高数据的访问效率。

数据可靠性技术的研究对于构建海量数据存储系统具有重要的意义。

3.1传统的复制备份策略

增加数据冗余是实现数据可靠性的一般途径,当数据出现部分失效时,客户

可以通过访问冗余数据满足自己的需求。

数据冗余提高了系统数据可靠性,但也

增加了对存储资源的需求,特别是随着时间而成线性增长的管理费用及相关能耗,因此,面对海量数据存储需求的分布式系统在保证数据可靠性的前提下,如何提高系统的存储效率是降低相关成本的关键。

目前,最为常用的数据可靠性增强技术主要为基于镜像备份的可靠性增强策略,虽然从具体实现的角度,镜像备份与复制策略在技术细节上有些区别,但从逻辑实质上来讲这两种策略具有统一性,在本文中统称为复制备份策略。

基于多备份的可靠性增强技术简单直观,易于实现部署。

该种策略需要把多个相同的数据副本分存到不同的存储节点上。

显然该策略存储空间开销很大。

备份冗余是最简单也是分布式存储系统中应用最广的一类数据冗余模式。

冗余数据是原文件的多个副本,假定副本数为k,这k个副本被存储到系统的k个不同的节点中,由任意一个节点的副本都能得到原文件;当有一个节点发生故障时,由未发生故障的任意一个节点中的数据都能修复出丢失数据。

对于k个副本的备份冗余,系统允许某一时刻至多有k-1个节点发生故障。

该策略可根据复制备份时机分为静态复制策略和动态复制策略。

又可根据副本放置次序分为随机放置策略和顺序放置策略。

(1)复制备份策略的数据冗余问题

由于存储系统中数据的损毁可以分为随机损毁和关联损毁[‘2]。

对于复制备份策略而言,顺序放置策略和随机放置策略是系统提高数据可靠性的两种主要放置策略。

把文件对象副本按照一定的次序分别放置在不同的节点上称为顺序放置。

该种放置策略对于系统的随机错误具有很好的防护性,因为,当一个放置策略可能产生的排列越多时,那么当系统中发生一个可以导致多个节点同时失效的随机错误产生时,系统中多个副本失效的概率将大大增加。

因此,产生排列数目有限的顺序放置策略对于随机失效模型会有很好的预防性。

随机放置策略是从存储系统中随机的选择若干个存储节点,然后将副本随机的发送到这些选择的节点上。

(2)复制备份策略的负载均衡问题

对于复制而言,随机放置策略比顺序放置能够给系统带来更大的负载均衡,

当然,客户端对数据访问的均等性和存储节点的同构性是随机放置策略可给系统

带来均衡性的前提条件。

但事实上,由于存储数据受欢迎程度不同、存储节点的

计算能力和存储能力也各异,该种策略往往并未达到很好的均衡效果,反而使得

某些数据更加频繁的被访问。

(3)复制备份策略的附加能耗问题

过去,由于传统的分布存储节点和数据的规模较小,对系统数据的冗余度、

基础设施的投入、以及系统在运行过程中所带来的能耗等因素考虑较少,但在海

量数据存储环境下,分布存储的规模巨大,能耗开销也很高,复制备份策略因过

大的系统能耗也受到越来越多的质疑。

3.2低冗余高可靠的编码冗余策略

针对存储系统的数据可靠性问题,近几年来,国内外学者进行了探索和研究,

开辟了一条基于编码冗余策略的存储新路径。

国外主要有IBM的M.Blaum团队、

加州理工的J.Bruck团队,田纳西大学的JS.Plank等团队。

M.Blaum团队与J.Bruck团队主要针对磁盘阵列的可靠性相关技术进行研究。

中科院的王晓京团队针对存储系统数据可靠性问题研究的较早并总结了编码冗余策略在存储系统中的优点。

1、编码冗余在保证系统可靠性的同时能够有效的降低系统内部数据冗余。

在编码冗余存储系统中,编码冗余策略认为系统中的任何存储节点都是对等的关系,而且系统中任何节点中存储的数据都会对重构原文件带来同等的效用,因而,该种策略可以容忍系统中随机节点的失效,即不论是随机损毁还是关联损毁。

更重要的是,在达到完全容许上述两种损毁模型的同时,编码策略的数据冗余量却不超过原数据大小,即小于或等于单份备份的数据冗余量。

这样纠删码冗余策略不仅可以提高系统的可靠性而且大大降低了数据冗余度。

2、由于编码存储系统中的存储节点都存有可以重构出原文件的相关数据,各个节点间便具有天然的对等的关系。

因而,当文件读取时,客户端可以任意选择其中的若干个节点便可获得原文件。

这样,系统便可保证各个节点都具有均等的对外服务能力。

不会因为部分被读取频率较高的文件的聚集而产生负载不均问题。

3、在能耗方面,由于编码冗余利用较低的数据冗余便可提供较高的系统可靠性,因而,与复制策略的存储系统相比,编码冗余策略能够降低系统的硬件投入,且在系统长期的运行过程中,会大大降低因硬件设备运行维护而带来的附加能耗。

近年来,随着数据时代的到来以及计算机计算性能的不断提高,编码冗余策

略受到了越来越多的关注,并有不少理论成果出现,亦有少量的商用的海量数据

存储系统将编码冗余策略引入到其存储系统中来,卡内基梅隆大学并行实验室的

研究人员将RAID-6纠删策略用于云存储文件系统中,系统冗余度从200%降低到25%。

但是,数据冗余度的降低对数据的可靠性及大规模读取带来的影响微乎其微,因而,为了更高的系统可靠性,需要研究更高性能的编码冗余方法。

随着存储数据规模的进一步扩大,人们对数据可靠性的要求进一步提高,编码冗余策略相关理论技术体系的不断完善,编码冗余策略一定会以其数据冗余度低、可靠性高的独特优势被越来越多的应用到未来的存储系统中。

四、基于纠删码的数据分布策略研究

4.1纠删码及其纠删原理

在通信系统中向前纠错码纠正的误码所在的错误位置事先一般是不知道的,而在删除信道中错误的数据帧被遗弃,丢失的数据在数据流中的位置是知道的,这样纠删码比纠错码处理起来容易些。

任意k列组成的子矩阵G’均可逆,则有如下结论:

设G为(n,k)线性纠删码的生成矩阵,若G的任意k列组成的子矩阵G’均可逆,则利用接收到的任意k个数据均可重构原来的k个源数据。

这个结论是我们研究基于纠删码冗余机制的理论基础。

纠删码作为一种FEC(ForwardErrorCorrection)技术以前主要应用在网络传输中避免包的丢失,现在我们把它应用于网络存储系统中,下文使用的是简单的线性纠删码。

4.2基于纠删码的数据冗余分布实现模型

在分布式存储系统中,纠删码可以用来提高系统的可靠性,它有多种实现方式,我们采用线性码实现。

考虑到对于小数据,因为客户端与存储节点的TCP连接时间在整个数据传输中的比重较大,如果分割的块数太多,会导致文件传输率低下,所以并不对其进行分割,而直接复制备份。

对于大小不同的文件,采用不同的分割策略。

这里主要讨论n和k都比较大的情况。

如图1所示,分布式系统中客户节点希望通过网络将数据存储在可以到达的存储节点上。

存储节点可以是一个专用的服务器,带有内存、处理器和一个或者多个磁盘组等;或者它也可以是一个被动的存储设备,带有网络接口,存储接口和内存。

存储设备有一个标准的固定大小的块(比如512字节)作为数据传送的最小单位。

客户节点是一个运行应用程序的计算机,它需要读写存储节点上的数据,有适当的计算能力和比较高的网络带宽。

图1

每个节点有一个网络标识(比如IP地址)来和其它节点交互。

我们假定每个客户节点可以获得提供存储服务的存储节点的网络标识,客户节点可能相互不知道对方,因此两个或多个客户节点可能并发地发起存储操作。

大多数情况下这些操作是针对不同的存储节点。

然而,在极少的情况下,两个并发操作可能是试图访问同一个数据块,这样操作将会发生冲突。

客户节点和存储节点都会发生fail-stop失效从而中止节点的执行,该节点的中止状态可以被其它节点检测到。

如果一个存储节点失效,可能永远无法恢复,这种情况下它上面存储的数据将会丢失。

假定失效不是非常频繁发生的,并且万一发生了,处于暂时降级模式下的系统性能是可以接受的。

纠删码的使用对应用程序而言是透明的,目标应用程序包括操作系统,数据库,分布式文件服务器,或需要块级存储服务等其它高级服务等。

这些应用程序通过支持块级读写的块级接口来访问数据。

4.3关键技术研究

4.31基于纠删码的数据放置策略模型

图2

假设有n个存储节点,客户节点将要存储的数据对象分割成大小相同的k个数据块,并将这k个数据块分布于k个存储节点上,通过纠删码将这k个数据块编码成为n个数据块,这里k

我们把存放实际数据的存储节点称为数据节点,存放的数据块被称为数据块;把存放冗余信息的节点称为校验节点,存放的冗余块被称为冗余块或者校验块;数据块和冗余块(校验块)统称为信息块。

数据对象被分割为rxk个大小相同的数据块。

这些数据块被分为r组,每组包含k个数据块。

然后将每组中的k个数据块编码成n个信息块,这n个信息块被称为一个stripe,如图4.3所示。

stripe的n个信息块中如果有部分块丢失,则只要有任何k个信息块可用,那么基于纠删码我们都可以重构原始的k个数据块。

因此,把信息分布于不同的存储节点上,只要失效的存储节点的个数小于等于n-k,即至少有k个存

储节点中的数据是正确的,那么都可以重构原始的k个数据块。

4.3.2恢复算法

基于纠删码的数据恢复算法的基本思想是从存储节点中读所有的数据块,用纠删码译码算法恢复,然后写回结果。

主要有以下问题:

1)由于未完成的写操作和失效的存储节点造成的数据块可能出现相互不一致。

需要以下机制:

(1)确定一组数据块什么时候是一致的,什么时候是正确的数据,也就是说当使用数据重构时它们能够产生正确的数据,

(2)保证至少有K个或者最终能够获得K个数据是一致的,这里K是纠删码所需要的最少块数。

2)如果客户节点P在执行数据恢复recovery的时候失效,那么恢复操作必须由其他客户节点来完成。

3)写操作和恢复操作的并发可能导致恢复操作恢复的冗余数据块失效。

下边解释如何解决上面的问题:

1)Recentlist.为了知道一组数据块是否相互一致,存储节点记录了过去存储节点写操作的标识符。

更加精确的说,当客户节点P发起写操作,它为写操作挑选一个唯一的标识符tid。

tid与接下来的swap和add操作相关连,当存储节点收到一个这样的写请求,它把这个标识符存储在节点的recentlist变量列表中。

Recovery过程读节点的recentlist来决定哪些数据块是被一致的更新过。

2)基本的恢复过程.Recovery可以被任何客户节点执行,有三个阶段。

(1)获得每个存储节点上的锁。

这些节点通过它们的局部变量lmod维护锁的状态:

lmod=UNL允许swap和add操作,lmod=L1将拒绝这些操作。

使用锁机制有两个目的:

①创门锁定了存储节点上的数据;②防止不同的客户节点并发执行recovery.为了避免死锁,锁需要有顺序编号的。

(2)读所有存储节点的内容和状态,并检查是否有k+slack个一致性的数据块,这里k是纠删码所需要的最少块数。

如果没有,p通过设置lmode=LO来减弱冗余存储节点上的锁,在这种模式下,一些节点允许执行add,但是其他节点仍然被锁定。

在正确的失效限定内,p最终将能够找到足够的一致性数据块。

接下来p尽力在下一个adds发生之前将节点的lmod改回到L1。

如果p没有成功,p重新搜索一致性的数据块,(p最终将会成功因为swap被阻塞,所以新的write将不能发射adds)否则p设置节点的opmode变量为RECONS。

(3)1.p使用找到的一致性的数据块通过纠删码来重构数据;2.p将恢复的数据写到存储节点中;3.p修改节点的opmode为NORM(正常状态);4.p解锁节点。

3)EPOCH.总的来说,epoch是两个恢复过程之间的时期。

写操作时一个epoch执行swap不应该让它的adds在下一个epoch执行,因为recovery己经遗弃了所有一致性的数据块。

因此,

(1)swap返回一个epoch;

(2)recovery增加epoch;(3)p使swap和add在同一个epoch执行;(4)存储节点拒绝上一epoch的add操作。

4)恢复操作的同时发生失效.如果p在recovery时失效,被锁定的节点(lmod={LO,L1})将通过设置lmod=EXP来使这个锁过期。

如果另一个客户节点q看到这样锁模式的节点,q发起recovery。

如果p在结束阶段2之前失效,存储节点的数据还没有改变,于是q的重新恢复是安全的,或者如果p己经设置了节点的opmode为RECONS,当q看到它就忽略阶段2并且在阶段3}q重复p己经做的事情(q获得了p使用的一致性的数据块集,通过读节点变量recons_set)。

前面提到的slack变量保证了q仍然可以发现k个一致性的数据块,尽管会有下一个存储节点失效。

4.4数据存储冗余方案的比较

如果每个对象的可用性要达到0.999,则基于复制策略和基于纠删码策略的需要的冗余度如图BBBB所示。

图3

(1)在相同存储对象可用性的情况下,复制与纠删码的冗余度之比随着存储节点可靠性的增加而减少。

通俗地讲,要想得到相同的存储对象的可靠性,在可靠的存储节点上存储数据,那么利用基于纠删码的方案比基于复制策略的冗余度相差的比较小,但是对于不太可靠的存储节点而言,基于复制策略就必须有更大的冗余度。

(2)在相同的存储节点可用性情况下,复制与纠删码冗余度之比随着存储对象可用性的增加而增加。

在相同的存储节点上存放数据,要提高存储对象的可用性,基于复制策略就必须具有比基于纠删码策略更大的冗余度。

(3)如果固定复制与纠删码的冗余度之比,那么存储对象的可用性随着存储节点可用性的增加而增加。

在确定的数据冗余分布(基于复制和基于纠删码)的情况下,存储对象的可用性基本上取决于存储它的存储节点的可靠性,存储节点比较可靠,在其上存储的对象也会比较可靠。

五、总结

本文先介绍了传统的存储系统可靠性,然后引入网络存储可靠性这个令人担忧的话题。

不同于传统的存储系统可靠性,网络存储由于是大量计算机的集群而对整个系统的可靠性要求更高。

就增强可靠性方面,本文提出了传统的复制备份策略和低冗余高可靠的编码冗余策略两种策略。

然后又提出了基于纠删码的数据冗余分布模型,研究了涉及到的数据读写,恢复算法等关键技术。

基于纠删码的数据冗余分布模型通俗地讲,一个(n,k)纠删码是把k个源数据编码为n(n>k)个数据,使得用这n个数据中任意k个编码数据均可重构原来k个源数据。

它作为一种高效的数据冗余方式我们将其运用于存储系统中。

首先将用户要存放的文件划分成固定大小的数据块,然后利用纠删码编码理论,对其进行冗余编码。

对于k个数据块根据纠删码编码生成n个一样大小并唯一标识的数据块((n>k),存放在相应的存储系统中,这样只要保证网络存储系统中有任意k个数据块是正确的,那么我们就认为这个存储系统就是可靠的。

最后从理论上比较了基于纠删码和复制两种存储冗余分布方案,得到了如下结论:

在相同的存储节点可用性情况下,复制与纠删码冗余度之比随着存储对象可用性的增加而增加;在相同存储对象可用性的情况下,复制与纠删码的冗余度之比随着存储节点可靠性的增加而减少;如果固定复制与纠删码的冗余度之比,那么存储对象的可用性随着存储节点可用性的增加而增加。

 

参考文献

[1]王意洁,孙伟东,周松,裴晓强,李小勇.云计算环境下的分布存储关键技术[J].软件学报.2012(04)

[2]吴素贞.磁盘阵列高可用技术研究[D].华中科技大学2010

[3]蒋海波.海量数据存储系统的高可靠性关键技术研究与应用[D]电子科技大学2013

[4]王克朝.基于冗余机制的存储系统可靠性研究[D]华中科技大学2006

[5]杜芸芸.一种面向纠删码技术的云存储可靠性机制[J].计算机应用与软件.2014(02)

[6]马玮骏,吴海佳,刘鹏.MassCloud云存储系统构架及可靠性机制[J].河海大学学报(自然科学版).2011(03)

[7]吴素贞.磁盘阵列高可用技术研究[D].华中科技大学2010

[8]周旭.面向Internet的大规模分布式存储技术研究[D].电子科技大学2004

[9]魏青松.大规模分布式存储技术研究[D].电子科技大学2004

[10]慕建君,路成业,王新梅.关于纠删码的研究与进展[J].电子与信息学报.2002(09)

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1