上一页 1 2 3 4 5 6 7 ··· 26 下一页
摘要: Jerasure库提供Reed-Solomon和Cauchy Reed-Solomon两种编码算法的实现. Reed-Solomon编解码接口 1. 编码矩阵生成 // generate matrix, last m rows matrix = talloc(int, m*k); for (i = 0; i < m; i++) { for (j = 0; j < k... 阅读全文
posted @ 2013-04-19 14:13 ydzhang 阅读(704) 评论(0) 推荐(0)
摘要: 上周末ADC,@明俨 主持TFS开源主题的讨论,居然有TFS外部用户到现场咨询使用过程中的问题,感觉这些小公司维护大系统挺不容易的,尤其是在对内部实现不清楚的情况下。期间有人分享自己公司的做法,存文件的时候,存到多个server上,然后把文件跟server的对应关系记录到文档(不能丢,方便查找),当出现异常时,人工介入拷贝文件以增加文件副本数,然后更新文件跟server的对应关系;做法看起来很土,... 阅读全文
posted @ 2013-04-19 14:13 ydzhang 阅读(263) 评论(0) 推荐(0)
摘要: TFS数据服务器的block是在DS第一次启动前格式化的,所有block的空间是预先分配好的,而物理块对应的index文件,则是block被分配使用时创建的。Index文件的大小是根据block中文件数目增加而增长的,为了提高性能,将整个index文件都mmap到内存直接访问。 在初次mmap index文件时,会计算block中预期的文件数,计算出index文件的理论大小index_s... 阅读全文
posted @ 2013-04-19 14:13 ydzhang 阅读(604) 评论(0) 推荐(0)
摘要: TFS目前使用扩展块来解决文件写、更新问题。扩展块的数量由磁盘可用空间、主块大小、扩展块大小、Dataserver(DS)配置项block_ratio决定。TFS主块和扩展块的数量在文件系统格式化的时候就已经确定,并且预先分配了所有块的存储空间。DS周期性的汇报存储空间使用率给Namserver,DS根据主块和扩展块使用率中的较大值做为DS储存空间的使用率。 扩展块使用率引发的问题 ... 阅读全文
posted @ 2013-04-19 14:13 ydzhang 阅读(334) 评论(0) 推荐(0)
摘要: core文件对问题查找非常有帮助,大部分时候我们能根据core文件直接定位到问题,但当出现内存乱掉的情况时,core的backtrace可能也不能指出问题源头。最近线上问题较多,针对dataserver出现的问题做个总结:1. 如果在read/write时coredump,则多是因为磁盘故障(或是文件系统崩溃),IO的一些严重问题可通过dmesg查看,如果出现Medium Error,EXT4-fs error(device sdx), Device offlined, I/O error, rejecting I/O to dead device之类的关键字,就说明磁盘已经出问题了,如果是文 阅读全文
posted @ 2013-04-19 14:13 ydzhang 阅读(619) 评论(0) 推荐(0)
摘要: 分布式文件系统主要用于解决海量数据存储的问题,如Goolge、Facebook等大型互联网企业都使用分布式文件系统作为数据存储的基础设施,并在其上构建很多服务,分布式文件系统通常采用三副本的策略来保证数据的可靠性,但随着应用数据量的不断膨胀,三副本策略为可靠性牺牲的存储空间也越来越大,如何在不降低数据可靠性的基础上,进一步降低存储空间成本? Facebook将erasure code应用到内部HDFS集群中,该方案使用erasure code代替传统的三副本策略,在保持集群可用性不变的情况下,节省了数PB的存储空间,Facebook的实现方案(HDFS RAID)目前已贡献给开源社区。Eras 阅读全文
posted @ 2013-04-19 14:13 ydzhang 阅读(508) 评论(0) 推荐(0)
摘要: Nameserver(NS)是TFS的总控节,NS的主要职责包括为写分配block、为读查找block、管理block与dataserver对应关系、管理dataserver、备NS状态,执行后台复制、均衡、压缩任务,以保证整个集群良好的工作。Block分配NS接收到客户端的写请求,会分配一个可写的block,如果没有可写block,则会创建一个新的block,每个block由一个id标识(uint32_t,后续会将该值提升至uint64_t),blockid不能重复,且不复用,新创建的block,在当前id的基础上递增,产生新的blockid。为了保证产生不重复的blockid,必须将blo 阅读全文
posted @ 2013-04-19 14:13 ydzhang 阅读(621) 评论(0) 推荐(0)
摘要: 在早期,应用要使用TFS,需要知道TFS名字服务器的地址才能访问TFS,然后调用读写接口存取文件,当应用比较少时,这种方式不会引发什么问题,但目前在淘宝内部,有200多个应用使用TFS做为后端的存储系统,必须要对应用的存储资源进行统一的管理与运维。 TFS做为一个应用存储平台,缺乏统一管理至少存在如下问题: 多集群管理:多集群访问控制、切换、容灾等。 访问控制:应用只要... 阅读全文
posted @ 2013-04-19 14:13 ydzhang 阅读(381) 评论(0) 推荐(0)
摘要: 集群数据对比功能的添加对TFS DS做了修改,在把DS上到日常测试环境前对其进行了一次回归测试,测试用例都通过,但checkserver检查到有大量block未同步到辅集群,查看dataserver的日志发现同步队列已经阻塞住了,一直重复retry。 主备集群的数据同步是由主集群的DS在后台进行,其将成功的写、删等操作记录在本地日志,并启动后台线程将日志重放到备集群,DS没重放一条日志,如果失败... 阅读全文
posted @ 2013-04-19 14:13 ydzhang 阅读(530) 评论(0) 推荐(0)
摘要: TFS没有采用目前流行的3副本策略,而是使用集群内配置2个副本,并把数据同步到一个辅集群,辅集群同样配置2个副本;这种方式对于实现异地机房容灾很方便,辅集群的数据同步是由主集群的数据服务器在后台发起的;目前主集群可读写,辅集群只读,双集群同时读写功能已开发完成,但没有在线上使用。 由于数据同步到辅集群是异步操作,当某次读文件的操作落到辅集群上时,可能该文件的同步尚未完成,此时在辅集群上读不到数据... 阅读全文
posted @ 2013-04-19 14:13 ydzhang 阅读(406) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 7 ··· 26 下一页