分布式文件系统设计
关键字 |
详细说明 |
分布式文件系统 研究point |
1,性能,容量,可用性,安全性,可扩展性,可管理性 2,用户组件与数据管理组件的分离, 3,key:服务客户的响应时间 |
分布式文件系统应该具有的特性 |
1,网络透明性:客户端使用访问本地资源的方法访问网络资源 2,容错性:网络错误,主机,存储设备故障发生时,系统仍能正常提供服务(可降级,更慢的响应) 3,可扩展性:系统规模扩大时,系统仍能正常工作(避免热点,单服务器瓶颈问题) |
文件命名机制 |
位置透明性: 文件名跟文件所在的位置无关 位置独立性: 文件的迁移不会造成文件名的改变 1,主机名:文件名 不透明 不独立 2,将远端文件树挂载到本地 透明 不独立(NFS) 3,将所有的文件组织到一个全局的命名空间(DNFS) 透明 独立 |
查询方式 |
如查询/a/b/c, a在m1上,b在m2上,c在m3上 1,递归方式:m1->a->m2->b->m3->m2->m1 2,迭代方式:m1->a->m1, m2->b->m2, m3->c->m3 |
共享语义 |
1,Immutable semantics:只读共享 2,Unix semantics:每次写文件将立即生效,之后的读写操作都会受到本次写的影响 3,Session(transaction like) semantics:逻辑语义,通常需要锁机制的配合下完成 |
远程访问方法 |
1, Remote Sevice(RPC, iSCSI) 2, Caching 实际应用通常是二者的折中方案,根据侧重点确定实际方案 |
缓存方案设计 |
需要考虑的四个问题 1,缓存数据的粒度 2,缓存的位置 3, 缓存数据修改方案 4, 缓存有效性检查 5, 缓存替换算法 关于缓存数据的粒度: 1,整个文件,部分文件或是一个块 2,缓存大小应根据网络数据包的大小,硬盘数据块的大小确定 3,大粒度缓存减少网络负载:包括启动传输进程的时间, 接收方多次确认时间 关于缓存位置: 1, 磁盘:强调可靠性,宕机时缓存数据仍存在 2, 内存:强调性能的提升,减少network access ,可工作在无盘工作站 关于修改方案: 1, write through:适合于unix semantics, 造成写操作周期变长 2,delayed-write write on close(适合于session semantics) write on eject 在缓存被换出的时候写回 折中--定时刷新 关于cache有效性检查: 1, client initiated approach: 每次访问检查 第一次访问检查 折中—定时检查 2,server initiated approach server需维护文件读写着的信息 关于缓存替换算法 通用:LRU,LFU 专用:semantics-aware,power-aware |
有状态与无状态 |
1, stateful: 服务器维护文件及客户端状态,可方便的使用cache机制 宕机的时候恢复很难恢复之前状态 客户端宕机的发现机制难以实现 2,stateless:宕机恢复简单 |
文件副本 |
主要涉及副本一致性的管理(active update, lazy update, trade-off) |
可扩展性 |
1,有限的资源(CPU, Disk,Menmory) 2,集中的资源易引发热点,瓶颈问题,不利于扩展 3,广播机制(网络延时,拥塞)随着系统规模增加也不利于扩展 4,轻量级进程(线程)的使用 5,动态容量扩展,节点动态加入 |