1 / 64

面向 Internet 的分布式海量 文件存储系统研究

面向 Internet 的分布式海量 文件存储系统研究. 韩 华 北京大学计算机科学技术系 网络与分布式系统实验室 2002-4-25. 提纲. 引言 “ 燕星1.0 ” 系统 Peer to Peer 基本问题 Peer to Peer 路由算法 – Emergint “ 燕星2.0 ” 系统 相关工作 结论. 第一部分 引言. 研究背景. Internet 发展特征 规模(4:10 8 ),带宽(56 k:10G) , 应用( email、telnet: 电子商务、远程教育) 普及计算( Pervasive Computing) 服务,用户

Download Presentation

面向 Internet 的分布式海量 文件存储系统研究

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 面向Internet的分布式海量文件存储系统研究 韩 华 北京大学计算机科学技术系 网络与分布式系统实验室 2002-4-25

  2. 提纲 • 引言 • “燕星1.0”系统 • Peer to Peer基本问题 • Peer to Peer路由算法 –Emergint • “燕星2.0”系统 • 相关工作 • 结论

  3. 第一部分 引言

  4. 研究背景 • Internet发展特征 • 规模(4:108),带宽(56k:10G),应用(email、telnet:电子商务、远程教育) • 普及计算(Pervasive Computing) • 服务,用户 • 网络存储 vs 本地存储 • 容量大、安全、可靠、方便 • 网络海量文件存储系统

  5. Internet规模与带宽 接入Internet的节点数 (来源于Internet Software Consortium) 末端用户可用Internet带宽 (Neilson定律)

  6. 典型应用 • 手机 • 网络家电 • 个人网上文件夹 • 远程教育平台 • SSP

  7. 技术现状 • FTP • 单服务器 -> 存储容量有限 • 集中式 -> 性能低 • xDrive • Cluster -> 容量大 • 集中式 -> 性能低

  8. 基本问题 • 高性能 • 设计和软件手段 vs 动态性和不可预知性 • 高可扩展性 • Giga -> Peta (1,000,000G)-> Exa • 吞吐率、访问性能 • 安全、可靠 • 易用

  9. 基本思路 • 广域分布文件存储系统 • Cache和以“网络距离”为依据的服务策略 • 合理资源权限管理 • 冗余 • 化整为零 -> 多名字空间

  10. 本文贡献 • “星”型结构 - 中小范围网络文件存储系统 • 多名字空间和权限管理机制 • Peer to Peer路由问题形式化描述 • Peer to Peer路由算法 –Emergint • Peer to Peer海量文件系统设计方案 • 用户可控文件Cache机制 “燕星”系统:“燕星1.0”和“燕星2.0”

  11. 第二部分 “燕星1.0”系统 采用一种“星”型体系结构,将Internet上大量分散的、独立的、异构的文件服务器组织成一个逻辑整体,使其共同对外提供服务。

  12. /doc/a fileserver1:/share/10321 /doc/b create(a) fileserver1:/share/00211 a b open(b) fileserver2:/share/00032 /share/00211 f2 f1 f3 “星”型体系结构 • 名字服务器,文件服务器 • 逻辑文件名,物理文件名 • 特性 • 文件名位置无关 • 支持移动计算 • 良好的可扩展性 • 存储容量 • 网络服务 • 1:100 Name server root misc doc C1 C2 …… fileserver1 fileserver2 fileservern

  13. root root root bin pub material material misc document java item share java share account private C++ Namespace1 Namespace2 Namespace3 多名字空间 • 单名字空间 • NTFS, UFS, NFS, AFS, xFS;面向少量用户、文件共享 • 多名字空间 • 文件相关性[Sollis 85][Neuman 92] • 基于用户的多名字空间 • 方便文件管理 • “联接”实现文件共享

  14. 资源权限管理机制 • 适合多名字空间、扩展UFS • 模型(U,G,P,A,L) • U: 系统管理员、高级用户和二级用户 • G: 用户组 • P: 权限集合, P=R*O • O = {create, delete, modify, read, write, own} • A: 授权操作 • a(ui , uj , p), a(u ,g , p) • 满足L • L: 授权规则, L={l1, l2, … , l9}

  15. sa su1 su2 su3 sun ju11 jun2 ju12 ju13 ju21 ju22 ju31 ju32 jun1 用户文件授权关系 sa向所有的su授权;su只能向属于本名字空间的ju、ju组、其他su和su组授权;ju只能向同在一个名字空间的ju和ju组授权 授权规则 • l1: a(ui , uj , p),a(u , g , p),pp (ui) • …… • l9: a(sui , suj , p), a(sui , sgj , p), p

  16. b n1 n2 网络距离三角原理 |l(n1,b)-l(n2,b)|<=l(n1,n2)<=l(n1,b)+l(n2,b) 文件服务器选择策略 • 负载平衡 • 轮换、随机和空间最大优先 • 网络距离 • 三角原理 • 估测方法[Hotz94] • (b1, b2, …, bm)-> ni:( , , …, )

  17. File Manager Name server File server File server … App App … Client software RMI RMI Local Interface TCP/IP User host “燕星1.0”系统软件体系结构 系统实现 • JDK1.3+XML • 文件Cache • 目录Cache public class Rfile { public RFile(String nameServerIP, String userName, String logicPath); public void openInputStream(); public void openOutputStream(); public bytebuf readbuf(int wantlen); public void writebuf(byte[] buf, int reallen); public void writeClose(); public boolean createNewFile(String ownerName) public boolean delete(); public boolean mkDir(String ownerName); public boolean isExist(); public long lastModified(); public long getLength(); public RFile[] list(); … }

  18. 性能测试(一) • “燕星1.0”vs NFS • GAB • GFS Andrew Benchmark • GAB结果 • 差将近一个数量级 • 原因:网络通讯、Java、应用层与核心层、优化 • 支持存储:实用 • GAB+结果 • 读、写性能相当 NFS与“燕星1.0”性能比较(GAB) NFS与“燕星1.0”性能比较(GAB+)

  19. 性能测试(二) • “燕星1.0”vs FTP • “燕星1.0” 与FTP文件上传、下载性能相当 FTP和“燕星1.0”上传文件性能 FTP和“燕星1.0”下载文件性能

  20. 性能测试(三) • “燕星1.0”性能随文件服务器数变化规律 • 结果:性能几乎保持不变 • 名字服务器的文件服务器管理负载较小 “燕星1.0”性能随文件服务器数量变化的规律(GAB)

  21. 性能测试(四) • “燕星1.0”性能随同时上线用户数变化规律 • 结果:支持同时上线最大用户数>450 (FTP60) • mkdir, write, delete:线性增加 • scandir, read:下降、保持不变(Cache) “燕星1.0”性能随上线用户数量变化的规律(GAB)

  22. “燕星1.0”总结 • “燕星1.0”系统对于中小范围网络用户具有良好的实用性 • 名字服务器是潜在的瓶颈,限制了系统规模 • 需要新的具有高可扩展性的体系结构

  23. 第三部分Peer to Peer基本问题 Peer to Peer网络是一种具有高可扩展性的分布式系统体系结构,Peer to Peer网络的基本问题是Peer to Peer路由问题。

  24. 分布对象定位机制 • 分布式系统重要组成部分 • 决定系统体系结构 • 发展过程 • 集中式 • 层次式 • Peer to Peer网络

  25. 对象名 远程指针 N1 P1 N2 P2 名字服务器 …… Nn Pn 2: resolve 分布对象名字列表 1: bind Client Server 3: access 客户程序 对象1 集中式对象定位机制 • 定位: <OID, P> • 实例 • 名字服务:CORBA, DCOM, RMI • 目录服务:X.500, LDAP, NIS, CORBA Trading Service • 应用系统:Napster, “燕星1.0” • 缺点: • 规模、性能

  26. root NS com edu org cn NS NS NS IBM sun MIT globus edu NS NS NS lcs pku tsinghua NS NS NS NS NS NS NS NS NS cs 层次式对象定位机制 • 层次结构 – 对应于语义层的层次结构 • 实例 • DNS, Globe[Vrije98], Globus[Argonne99],Radar[AT&T99] • 《一种基于分布式LDAP的分布对象定位机制》(Dec.00) • 缺点: • 父节点瓶颈 – 可扩展性、可用性

  27. ns ns ns ns ns ns ns ns ns ns ns ns ns ns Peer to Peer对象定位机制 • 特征 • 节点与节点是平等关系(相对于层次结构) • 负载相同 (性能) • 重要性相同(功能) • 两两能通讯(通过节点转发) • 优势 • 无瓶颈 – 可扩展性好、可用性高 • p2p的对象定位 • 将对象的定位信息<oid,p>分散到各节点上,分配方案:nid=hash(oid)

  28. Peer to Peer网络基本问题 • p2p网络概念 • 连接(hop):两个节点互知对方的IP地址 • 路由表:每个节点上都保存着一个邻居节点IP列表 • 通讯:消息通过连接在p2p网络中的传递 • 消息延迟:消息传递经过的连接数 • P2P网络基本问题 • Peer to Peer网络路由(支持任意两个节点之间通讯 ) • 挑战 • 高可扩展性: 每个节点的邻居节点IP列表要小 • 高效:消息传递平均延迟要小 • 高可用性:每两个节点之间的不同通讯路径要多 • 路由方法->路由表->网络拓扑结构

  29. P2P路由问题形式化描述 • 路由问题 • 针对N个节点,设计一个包含这N个节点的连通图G,使得节点之间度的最大差值(b)尽量小,每个节点的度(d)尽量小,G的直径(r)尽量小,使得边连通度(e)尽量大。 • 作用 • 指导研究新算法 • 评价现有算法性能

  30. 现有的P2P路由算法 • 改进型:树 • b: C --- P2P • d: O(C) --- 可扩展性好 • r: O(logN) --- 高效 • e: O(1) --- 低可用 • 实例:INS(99mit), Arrow(98brown), Gnutella(98) • 经典算法 • b: C --- P2P • d:O(logN) --- 可扩展性好 • m:O(logN) --- 效率高 • r: O(logN) --- 高可用 • 实例:CAN, Pastry, Chord, Tapstry • 直接手段1:完全图 • b: 0 --- P2P • d: O(N) --- 可扩展性差 • r: 1 --- 高效 • e: O(N) --- 高可用 • 实例:Afs, xFS, Farsite, ethernet • 直接手段2:环 • b: 0 --- P2P • d: 2 --- 可扩展性好 • r:O(N) --- 效率低 • e: 2 --- 低可用 • 实例:Token Ring

  31. 一个经典P2P路由算法[Plaxton 1997] • nid • b进制的l位随机生成的整数(b=8, l = 4)l=logbn • 路由表 • l * b * c个表项(c=3) • 若fi,j,k(x)= y,则: • nidy与nidx具有相同i位后缀(左为前) • nidy的倒数第i+1位为j • y是满足上述两个条件且与x节点距离第k近的 • 反向路由表 • 所有指向该节点的路由表项的源节点

  32. (b = 16,l = 4, n = 65536) [Plaxton 1997]路由方法 • x - ***8 - **98 - *598 – 4598 • 延迟 <= 4

  33. [Plaxton 1997]对象定位 p1 p3 4598 • 拓扑结构 • N棵树 • oid:随机生成(6) • oid与nid • end(oid,4)与nid一一对应 • 根节点 • 性质 • 定位最近的对象 p1 p3 0598 1598 F598 p1 p3 *098 *F98 p1 p2 p3 **08 **F8 p1 p3 p2 ***0 ***F c1 c1 c2 c1 …… c3 c3 c3

  34. [Plaxton 1997]特性小结 • 路由表大小 O(log n) • 通讯延迟 O(log n) • 任意两个节点之间不同路径数 O(log n) • 对象复制,最近定位 • “燕星2.0”的文件定位基础 • 研究场景与“燕星”系统的应用需求吻合

  35. 第四部分 Peer to Peer路由算法 - Emergint [Plaxton 1997]还存在问题,不适于实用。Emergint的目标就是解决它存在的问题。

  36. [Plaxton 1997]的两个问题 • 非饱和状态下的路由与对象定位 • 并非每个对象都能有根节点 • Peer to Peer网络的动态构建 • 无法掌握全局状态

  37. 路由表构造方法 • nid • b进制的l位随机生成的整数(b=8, l = 6)l=logbn • 路由表 • l * b * c个表项(c=3) • 若fi,j,k(x)= y,则: • nidy与nidx具有相同i位前缀(左为前) • nidy的第i+1位为j • y是满足上述两个条件且与x节点距离第k近的 • 反向路由表 • 所有指向该节点的路由表项的源节点

  38. 0000 FFFF nid0 nid1 nid2 nid3 nid4 nid5 nid 0000 FFFF begin(oid,4) 非饱和状态路由与对象定位 Routing(m){ Case m为1型: if(路由表项不为空){按[Plaxton 1997]路由}else{寻找路由表本行中距离最近的路由表项(大:m为2型;小:m为3型),向其转发m} Case m为2型: 寻找路由表相应行中纵坐标最小的路由表项,向其转发m; Case m为3型: 寻找路由表相应行中纵坐标最大的路由表项,向其转发m; }

  39. 各节点上oid分布情况 • 已知nidx和nidy,求得px和py • 每个节点掌握邻居节点oid分布情况 allocateOID(nid x, nid y){ if (nid x< 0){p x= NULL, p y= [0, nid y],返回} if(nid y >= N ){p x= [nid x, N-1], p y= NULL,返回 } if (nid y -nid x等于1) {p x=nid x; p y= nid y; 返回} 从左往右寻找nid x和nid y的第一个不同位(i),值分别为b和e; if(e-b>1){ px=[nidx, (begin(nidy,i)*B+(b+e)/2)* ], py=[(begin(nidy,I)*B+(b+e)/2)* , nidx] }else{ 从第i位开始,寻找nid x,的第一个不为B-1的位(j),寻找nid y的第一个不为0的位(k); if(j<=k){ , }else{ , } }} nidx nidy px py

  40. Peer to Peer网络的动态构建 • 第一阶段:保证路由正确 • 定理1(空表项定理): • 如果系统一个节点的路由表项it i,j,0为空,则系统中所有nid与该节点nid具有相同i位前缀的节点的路由表项it i,j,0也为空 • 定理2(最大相同前缀定理): • 在针对对象oid的路由过程中,设在所有的路由路径上,从第一次碰到空表项到根所经过的节点集合为S,则S中所有节点的nid都与niddst(oid)具有最大长度的相同前缀。 • 定理3(路由表项复用定理): • 对一个节点n而言,设系统其他节点中与其nid有l位相同前缀的节点集合为S(0<=l<L n)。如果n x∈S,则将节点n x的路由表项it i,j,k(0<=i<=l, 0<=j<B且j <> at(nid, i), 0<=k<C)作为节点n的路由表项it i,j,k,也同样是正确的。 • 第二阶段:提高路由效率

  41. rootold nidleft nidnew 节点加入算法 • 随机生成节点nnew的nid:nidnew • nnew向nclosest发送增加节点请求,目标为nidnew • 路由过程中,所有处理非空表项节点将0-i行路由表项拷贝到nnew处 (nnew路由表生成完成) • root(nidnew) 根据allocate(nidnew, nidroot)算法将一部分对象指针转移到nnew上;然后,root(nidnew)通知邻居节点nleft(或nright)计算allocate(nidleft, nidnew)(或allocate(nidroot, nidnew) ) 将其上属于nnew的一部分对象指针转移到nnew (对象指针重新分配完成) • root(nidnew)根据反向路由表扩散nnew加入消息depth步 (系统路由表更改完成)

  42. nidright nidleft niddelete 节点退出算法 • ndelete将对象转移到较近的若干目标节点上 • ndelete负责根据allocateOID(nleft , nright)将对象指针转移到nleft和右邻居节点nright上 • ndelete根据反向路由表通知所有的相关节点将niddelete删除;然后,ndelete再根据路由表通知所有的相关节点,将niddelete从各自的反向路由表中删除。

  43. 节点加入与退出过程分析 nidi nidi-1 nidnew nidi+1 nidi+2 … … • 定理4: • 设nx和ny是系统现有节点中两个具有相邻nid的节点,且nidx<nidy;新加入节点nnew的nid为nidnew,且nidnew (nidx, nidy)。nnew的加入过程只会对niddst (oid)  (nidx, nidy)的对象的路由过程有影响,对niddst (oid)  (nidx, nidy)的对象的路由过程不会产生任何影响。 • 定理5: • 设退出节点ndelete的左、右邻居节点分别为nx和ny,且nidx<nidy。ndelete的退出过程只会对niddst (oid)  (nidx, nidy)的对象的路由过程有影响,对niddst (oid)  (nidx, nidy)的对象的路由过程不会产生任何影响。 • 路由算法 补充 • 保存nleft和nright 的nid和IP,当接收到不属于自己的定位请求时,根据allocateOID将其发送到nleft或nright 的上。

  44. 加入系统 出局 加入 加入完成 退出完成 邻居节点加入系统 退出系统 邻居加入 正常 退出 邻居节点加入完成 邻居节点退出完成 邻居节点退出系统 邻居退出 节点并发加入与退出分析 • 推论:nid处于不同区间的多个节点同时加入和退出系统时,加入和退出过程不会影响路由的正确性。 • 节点加入与退出算法 补充 niddelete nidi nidi+2 nidi+1 nidnew1 nidnew2

  45. Emergint性能测试(一) • B = 16, L = 4, N = 4096 • oid在各节点分布情况 – 满足P2P原则 图4.6:节点oid数量分布方差 图4.5:节点oid数量分布

  46. 网络测试环境 GT-ITM生成的Transit Stub拓扑结构 Emergint测试用Internet拓扑结构(6054个节点)

  47. Emergint性能(二) • RDP = hopp2p/hopdirect ;平均RDP  (1,2) 图4.9: Emergint的RDP 图4.10: 消息转发hop数

  48. Emergint性能测试(三) • 增加一个节点的代价:O(logN)常量 图4.11:增加一个节点所需要通知的节点数

  49. Emergint性能测试(四) • 退出一个节点的代价:O(log 2N) 常量 图4.13:一个节点退出需要通知的节点数

  50. Emergint性能测试(五) • 节点优化过程RDP:2 图4.15:Emergint优化过程中的RDP

More Related