TFS

TFS运维平台改造

1

TFS负责运维的同学在工作过程中,积累了各种运维脚本,全部使用shell编写,用于完成TFS机器的上下线、坏盘下线、集群同步、迁移等功能,这些脚本构成现在的运维平台;但由于运维同学的不断更替,新同学在使用前辈们留下来的运维脚本过程中经常踩坑,严重影响运维工作效率。

以下列举了TFS运维过程中,出过的一些问题: (更多…)

TFS Erasure code实现方案

0

TFS发展至今,集群部署总容量已超过50PB,机器数量约2700台。TFS在阿里内部主流部署方式是主集群内数据块2个副本,每个主集群配置两个备集群,分别在同城和异地机房,实际上每份数据6个副本,存储成本非常高,为了降低TFS存储成本,我们将Erasre code引入到TFS系统,本文将详细介绍TFS应用Erasure code的技术方案。

异步编码,对用户透明

目前已经应用Erasure code的分布式文件系统里,HDFS、Windows Azure等系统采用异步编码的方式,写流程和数据编码流程完全解耦;而GPFS、pangu(阿里云的分布式文件系统)等系统则是采用实时编码的方式,在数据写入时进行编码。
(更多…)

TFS的数据服务化之路

1

很多人可能都只知道,TFS需要配置一个特定的客户端才能访问。其实,如今通过一系列web_service的接口就可以轻松存储、获取TFS里面的数据,TFS在去年就已经实现了数据服务化。今天我们就来说说TFS的数据服务化之路。

在2012年以前,TFS有一个java和c++的客户端。最早只支持小文件的时候,TFS的客户端只需要在读写流程中和NameServer以及DataServer交互即可。后来在客户端实现了文件去重和大文件的支持。随着应用的增长、数据规模扩大以及跨机房容灾的需要,我们引入了RcServer来对应用、集群进行管理,并在客户端实现了相应逻辑,以达到集群选择、容灾功能都对应用透明的目的,大大简化了应用的配置,降低了应用使用TFS的成本。再后来,我们在原生文件的基础上开发了新的功能,允许应用使用自己定义的文件名来进行访问,拓展了TFS的用法。至此,客户端与后端Server的交互对象又增加了两个,逻辑复杂化的趋势愈演愈烈,需要bugfix的频率也越来越高。而每次新功能或bugfix都需要将新的客户端推到所有使用TFS的应用,这个过程异常的痛苦。不知不觉间,客户端已成为限制TFS前进的一个绊脚石,客户端改革势在必行。
(更多…)

TFS新版本特性介绍

0

TFS新版本(tfs-2.6)的开发主要因为要将erasure code应用到TFS中,以节省存储成本。erasure code的引入,需要TFS在数据存储结构上做改变,这对于存储系统来说是非常大的改变,借着这个机会,也对TFS做了很多的优化工作,本文主要介绍2.6.0版本TFS的一些新特性。

block id升级至64位

TFS采用每个数据块(block)由一个uint32_t类型的blockid来标识,每个block 72MB,理论上单集群能支持约300PB的存储空间,但实际上并不是每个blockid都能被利用上;另外,TFS在应用erasure code后,会引入一种新的校验块(parity block);系统设计上是直接通过blockid的值就能判断出block的类型(最高位是否为0来区分),这样就使得数据块可用的blockid范围又缩小了一半。

为了有效解决可用blockid数量不足的问题,将blockid从uint32_t升级至uint64_t;由于TFS生成的文件名里编码了blockid,升级后,生成的新文件名将比原来更长,从原来的18字节扩张到27字节。

(更多…)

近期Imgsrc一处内存泄露问题的查找和解决

11

最近一直在查我们的imgsrc的内存泄露问题,事实上都是其所使用的ImageMagick库的bug。前些天又查了一个bug,涉及面较广,觉得有必要总结一下。

简要说明一下,imgsrc上部署的是apache模块,cdn通过其来访问tfs,并且做一些图像处理工作。有内存泄露是在线上发现的,内存不停的在涨。要找到问题所在,首先需要能够在线下重现,知道在什么情况下会泄露。线上系统当然不可能用valgrind来跑啦,还好我们有tcpcopy(赞一下网易的 @wangbin579 同学,真是个好东西),我们可以将线上流量镜像到跑着valgrind的机器上来,从而重现问题。跑了一晚上之后问题重现了,这时候需要做的是找到具体能触发问题的http请求。在访问日志和错误日志的帮助下,可以重放这些请求,这样就可以随时重现。一个晚上的访问日志有80多万条之多,我注意到其中有43条是在做图像处理时失败的。这些请求的原图往往都是一些不合法的或已损坏的图。先从这43个请求入手,运气不错,问题已经重现了。这告诉我们多注意一下不法分子总是好的。接下来就是使用2分法来找到具体的某一个访问,可以用脚本来干。最终确定是一个png图片。
(更多…)

淘宝软件基础设施构建实践

4

这个PPT是在第三届中国云计算大会上讲过。主要讲目前淘宝在软件基础设施的规划、实践和一点感悟。注:我们将来在这方面开展的工作会不限于这些。

简介:

首先,简单介绍淘宝网的系统规模和增长速度,以及对软件基础设施带来的挑战;接着,回顾淘宝图片存储与CDN系统的发展历史,如何从商用系统一步一步走到完全自主的系统,描述自主系统的主要架构与设计思想、性能指标和现有的部署规模,并总结一些经验来指导系统研发;然后,描述淘宝在软件基础设施上的规划,并一一阐述当前主要项目的要点与进展状况,这包括TFS、TAIR、千亿级别的分布式表格系统OceanBase、MySQL优化、面向Java环境的专用计算平台、服务器平台、Linux内核定制与优化、组通讯夸父、CDN和低功耗服务器平台等;最后,总结一下软件基础设施研发的原则和经验。

TFS正式开源

7

TFS,淘宝网底层分布式文件系统,已经正式开源上线了,大家可以到TFS开源主页面访问,欢迎大家下载、拍砖

TFS简介

61

TFS是什么

TFS,Taobao File System,淘宝内部使用的分布式文件系统,主要针对海量小文件的随机读写访问性能做了特殊优化,承载着淘宝主站所有图片、商品描述等数据的存储。

TFS有什么特点

  1. 完全扁平化的数据组织结构,抛弃了传统文件系统的目录结构。
  2. (更多…)

关于mysql hang导致nameserver宕机的分析

4

事发当晚:
过程:
mysql 机器告警,说主机down.
nameserver所有mysql线程停止动作,mysql线程池消息队列暴涨。
nameserver内存暴涨。
core.

(更多…)

一次完整的TFS写文件流程 for TFS1.3

7

我们都知道,TFS的写文件流程是由TFS Client来发起的,所以我们就从TFS Client出发。

首先来讲在Tfs Client都发生了什么事情?

(更多…)

Go to Top