摘要:原文:Improving Restore Speed for Backup Systems that Use Inline Chunk-Based Deduplication, FAST‘13。2013年的FAST会议开完了,HP实验室的研究员发表了一篇关于数据去重系统读性能的论文,与sparse index是同一作者。这篇文章主要有三个贡献,如下:提出衡量碎片程度和读性能的量化指标,mean containers read per MB and speed factor。Nam等人曾提出CFL来衡量碎片程度,但是CFL忽略了数据集内部引用情况。mean containers read MB的
阅读全文
摘要:SAE更新以后似乎没有免费的wordpress4sae了,而且有诸多限制,所以我尝试手动将wordpress当做普通应用建在SAE上。可以自由安装模板、主题,可以导入日志数据。1.准备工作本地安装svn,下载wordpress的源码;在SAE上创建新应用,开发语言为php;初始化应用的代码库;初始化应用的mysql,并且创建一个新的storage domain,比如就叫wordpress。账号最好要通过实名认证,否则应用租金很贵,通过实名认证后,得到2000云豆,按每天5个计算,可用400天。2.上传代码首先从服务器上将初始化的代码checkout下来,仓库地址为https://svn.sin
阅读全文
摘要:用久了Vim敲代码,难免有些审美疲劳,所以决定试用一下黄博推荐的Sublime Text2。ST2是一个共享软件,标价$59,不过作者很厚道地允许免费使用,只是很罕见地会出现需要购买的提示。ST2支持Windows、Linux、OS X多种平台。1. Vim模式ST2支持Vim模式,打开preferences->setting-User。输入{ "ignored_packages": []}保存文件后,就可以使用常用的Vim命令了。2. 包管理ST2提供了比较丰富的包,用于功能扩展,类似于Vim的插件。比Vim方便地是,ST2提供了一个包管理模块Package Con
阅读全文
摘要:用户一般会为备份数据设置一个retention time,过时的数据应该被回收再利用。数据去重复杂化了垃圾回收,因为每个数据块都可能被多个备份所引用。如何进行引用管理仍是很有挑战的问题。最近的一些论文讨论了这些问题,包括ATC’11的best paper,FAST’13,我想简单总结下它们的思想。垃圾回收可以分为两阶段:第一阶段是标记可回收的数据块,称为标记阶段;第二阶段是回收数据块,称为回收阶段。回收阶段的设计与数据组织格式有关,比如大多数去重系统使用container组织数据,它们就需要一个合并稀疏容器的操作来回收空间。关于回收阶段的讨论目前还不多。现在的相关论文讨论的问题实际上都属于第一
阅读全文
摘要:dedup已经被广泛应用于二级存储系统(备份、归档:高冗余、高吞吐率、延迟不敏感、写多读少);但是主存储系统(低冗余、延迟敏感、读多)仍然很少采用dedup,虽然已有一些尝试(iDedup、ZFS、opendedup等)。我们从成本的角度来分析这个问题。dedup的目的是节约成本:节约的是磁盘的成本,当重删率(=原始数据大小/重删后的数据大小)达到10倍时,意味着原来需要10块磁盘的数据,现在只要1块磁盘了。另一方面,dedup会增加内存的成本,因为它需要额外维护一个称为指纹索引的内存数据结构(将索引放在磁盘会导致磁盘瓶颈问题)。因此,dedup最终能节约多少成本,等于节约的磁盘成本减去增加的
阅读全文
摘要:sparse index是一篇老论文,出现在FAST’09。当时,数据去重的主流研究方向是索引设计,一个好的索引必须有高吞吐率,低内存,高重删率等特点。我希望destor能支持所有的主流索引,因此近期实现了sparse index,并对索引模块的接口做了比较大的改动。sparse index首先使用传统的分块算法将数据流分块,为数据块计算哈希;根据哈希值选取segment边界(比如数据块的哈希取摸后等于某个预定义的值,就认为这个块是segment的边界,这里segment相当于超级块),到此数据流被分割为变长的segment;针对每个segment,为其抽样一定数量的hook(抽样的方法是:若
阅读全文
摘要:原文:A study of Linux file system evolution, in FAST'13.这是会议的最佳论文,分析了8年时间内六个主流Linux文件系统(Ext3,Ext4,XFS, Btrfs, ReiserFS, JFS)的5079个补丁,详细解答了什么补丁最多,什么bug最多等问题。这里将几个有意思的结论列出来。1. 维护型补丁最多维护型补丁包括改善代码的可读性,简化代码结构等等,此类补丁占了60%之多,足见良好的可维护性对于一个复杂的开源项目是十分重要的。2. bug修复型补丁第二多,并且伴随着软件的整个生命周期有40%的补丁是bug修复型补丁。对于像Btrf
阅读全文
摘要:工欲善其事,必先利其器!要在Linux环境下工作,就得找到与windows环境同等分量的工具才行。先前已有一些统计,Linux下几个比较好用的软件。0.ubuntu[官网]我是ubuntu的忠实粉丝。ubuntu 12.04 64bit配上4GB内存跑起来非常流畅,unity桌面能充分利用笔记本不大的屏幕空间。自带的ibus感觉是Linux环境最好的中文输入法了。基本能胜任所有的工作,可能office方面的软件不如MS Office方便是一大短板吧。另外,机子休眠后,有时桌面会失去响应,这时我只能切换到tty1,kill掉Xorg进程,这会重启桌面。1.GoldenDict[官网]以前都是用s
阅读全文
摘要:原文:HYDRAstor: a Scalable Secondary Storage.HYDRAstor(官网)是NEC推出的二级存储系统,先后有多篇关于HYDRAstor的论文发表在FAST(包括后来9livesdata发表的论文)。HYDRAstor是一个完整的存储解决方案,因此涉及的方面很多,包括文件系统、DHT、dedup、erasure code等。这类论文往往是多种技术的汇聚点,可以帮助扩展自己的领域。看这篇文章只能了解有这样的东西,太多技术细节没有说明。HYDRAstor的目标是商用产品,支持可扩展容量和性能,垃圾回收,负载均衡,高可靠性、可用性等特性。本文关注的是其后端(bac
阅读全文
摘要:原文:File Recipe Compression in Data Deduplication Systems, FAST’13.在去重系统中,需要为数据流保存一个指纹序列(recipe)用于重新构造数据流,一般来存储recipe并不是问题。但是当全备份很频繁,数据有效期很长,去重率又很高时,recipe在系统中的比重就上来。这篇文章就是解决这个问题。文章使用了四种压缩技术,零块压缩、分页索引页内压缩和两种统计方法。1.零块压缩这是魏建生博士提出的方法,数据流中通常存在一些全是0的块,存储这些块和它们的指纹都是一种浪费,因此可以为它们分配更短的编码。此方法的压缩率依赖于数据集的特性。2.分页
阅读全文
摘要:openssl是一个开源的加密工具箱,实现了SSL和TLS协议,并提供了通用的加密库。除了将libssl.so链接到自己的程序使用,还可以通过命令行使用openssl的所有功能。1.入门openssl提供了一个命令行工具,可以使用命令行直接使用openssl,比如计算某个文件的MD5、SHA-1等摘要。openssl sha1 /home/fumin/textopenssl md5 /home/fumin/text此外openssl还提供了SHA224、SHA256、SHA512等强度更高的摘要。此类命令被称为消息摘要命令(message digest command)。很奇怪的是,opens
阅读全文
摘要:原文:J. Kim. Deduplication in SSDs: Model and Quantitative Analysis.数据去重技术可以有效减少写负载,节约存储空间,进而减少垃圾回收的次数,增加垃圾回收和损耗均衡算法的效率,对SSD的寿命有很好的改进。这篇来自MSST’2012的文章站在了CAFTL和CA-SSD的肩膀上,进一步探讨了数据去重对SSD性能的影响,也就是探讨数据去重是否可以改进SSD的写延迟。数据去重为SSD带来了很多的好处,但是存在两大挑战:1.数据去重的开销问题,通常SSD的资源有限,只有ARM7或ARM9等低端CPU和少量内存,这和备份归档环境有很大不同;2.S
阅读全文
摘要:最近用了一些开源软件,它们都有统一的安装方法,非常方便:./configuremakemake install于是我也鸟枪换炮,给自己的源码用上了automake和autoconf。下面这张流程图显示了制作Makefile的全过程:1.autoconfautoconf工具的作用是检查工程依赖的库文件和头文件,同时也是automake的基础。首先用autoscan工具扫描源码,它会产生一个configure.scan模板,在此基础上我们进行修改得到configure.ca(推荐)或者configure.in(图中是这个),这个文件是configure的关键,里面记录了工程依赖的头文件和库文件。下
阅读全文
摘要:原文:A Study on Data Deduplication in HPC Storage Systems.这是今年Super Computing上的文章,目的不是提出一种在数据中心去重的解决方案,而是分析数据中心的数据集,去指导未来的设计。作者似乎很喜欢写这类分析数据集文章,他在SYSTOR’09比较过备份环境下各级去重的效果。他开源了fs-c,这两篇文章的分析工具。这篇文章可以和微软、EMC的2篇文章进行比较,都是对数据集进行研究,但环境不一样,特点也不一样。文章的数据规模很大,达到1212TB,迄今为止最大的数据集,作者拿到了多个欧/美数据中心的数据。1.发现关于文件大小、文件后缀的
阅读全文
摘要:最近实现了Assuring Demanded Read Performance of Data Deduplication Storage with Backup Datasets一文中提出的算法,并用两个数据集分别进行了实验。参数分别设为cfl_require=0.6,container_usage_threshold=0.7,同时装备大小为100个container的LRU缓存。1.linux源码集数据集包括105个连续的linux内核版本,总数据量为40.6GB。95%为重复数据,经过选择去重后,去重率下降到78%。使用cfl选择去重算法后,恢复性能如图所示。最初的几个作业能达到100M
阅读全文
摘要:Dremel是一个可扩展的、交互式即时查询系统,用于分析只读的嵌套数据。Dremel可以对集群上的超大数据集进行交互式分析。Pig、Hive利用MapReduce执行查询,需要在多个MR作业间传递数据,相比之下,Dremel是就地执行查询的(MapReduce的瓶颈很有可能就是在Map和Reduce之间传递数据)。Dremel并不是用来取代MapReduce的,它可以和MapReduce互相补充,比如用于分析MapReduce的输出。实现Dremel有2个问题:首先是通用的存储层,比如GFS,一个高性能的存储层对于就地查询是非常关键的;其次是存储格式,按列存储对于扁平的关系数据非常合适,运用到
阅读全文
摘要:缓存替换算法有很多种,FIFO是最简单的,LRU是最常用的,最优缓存替换算法则是命中率最佳的。因为我们无法预知数据的未来访问模式,通常最优替换算法是无法实现的。然而数据恢复则是例外:在备份的过程中,我们已经知道数据恢复的顺序。既然如此,何不通过最优缓存替换算法进一步改善命中率。数据去重原型系统destor里面已经实现了LRU缓存,并且工作得还不错,尽管如此,我仍然想看看最优替换算法能获得怎样的效果。1.种子文件备份的过程中,我记录下container的访问顺序,称之为种子文件,每个种子代表访问一个container。种子文件会作为最优替换算法的输入。2.滑动窗口如果我们一次性读取整个种子文件,
阅读全文
摘要:GLib(Gnome Library)是linux下最常用的c库,是gnome和gtk的基础。它提供了很多常用的数据结构,比如哈希表。linuxfromscratch上面有源码下载链接。官网上有各种数据结构的详细文档。基本的安装步骤是:./configure make make install配置的时候可能会遇到依赖包找不到的问题,比如:Working zlib library and headers not found解决办法: apt-get install zlib1g-dev接着又遇到了:checking for LIBFFI... noconfigure: error: Packag
阅读全文
摘要:FAST'11同时收录了这两篇几乎相同主题的文章,分别用CAFTL(Feng Chen等)和CA-SSD(A. Gupta等)表示,下表比较了它们的主要特点。CAFTLCA-SSD工作位置FTLFTL去重单元pagepage映射表二级映射表,元数据区反向映射映射表LPT和逆向映射表iLPT指纹索引基于热度的LRULRU哈希计算取样法、预哈希专用硬件逻辑垃圾回收二级映射表记录引用次数iLPT记录逻辑地址集合它们都是在FTL集成数据去重,不需要修改上层应用;因为缺少上层文件系统语义信息,并且SSD的读写单元是page,所以很自然使用page作为去重单元;指纹的计算是性能瓶颈,因此二者都提倡
阅读全文
摘要:原文:A. Gupta et al. Leveraging Value Locality in Optimizing NAND-Flash based SSDs.这篇文章和DFTL是同一作者。时间局部性。当前访问了某个数据(某个逻辑地址),那么不久的将来很可能还会访问这个数据;空间局部性。当前访问了某个数据(某个逻辑地址),那么不久的将来与其逻辑地址相邻的数据很可能会被访问。利用时间局部性和空间局部性可以减少SSD的负载,但是仍有另一种局部性可以挖掘,即value locality。value locality的意思就是某个数据(数据的内容,不仅仅是逻辑地址)被访问地更频繁。value loc
阅读全文
摘要:原文:Feng Chen et al. CAFTL: A Content-Aware Flash Translation Layer Enhancing the Lifespan of Flash Memory based Solid State DrivesSSD的寿命与三个参数有关:1.写负载;2.过量供应的容量;3.垃圾回收和损毁均衡的效率。写负载通常被认为是不可控的,而过量供应不可能无限制,所以大部分研究集中在垃圾回收和损毁均衡。CAFTL关注的是第一点。图1和图2验证了重复数据的存在。图1中,15块磁盘的重复度为7.9~85.9%,其中第7块磁盘(NTFS)大部分重复数据是零块,如果
阅读全文
摘要:SSD属于半导体器件,目前主流SSD都采用NAND flash芯片。与磁盘相比,主要有以下优势:更高的随机访问性能,无寻道时间;低能耗;对温度和震动具有更强的适应性。SSD最大的问题是寿命和可靠性,擦除一定次数后SSD会损毁。此外:随着位密度上升,flash芯片的可靠性和寿命下降,这是容量和可靠性的矛盾;RAID不太适合SSD,因为SSD RAID中相关设备故障的概率很高;关于SSD可靠性的研究很多,毁誉参半,SSD的可靠性仍待证明。可靠性是部署SSD到商业系统的障碍。flash芯片还具有三个关键的技术限制:不能就地覆盖,写一个page之前必须擦除整个block;不能随机写,一个block内的
阅读全文
摘要:买了一个域名,但是只有一个小组的公用ip,这个ip已经被用于小组的网站。如果我简单将域名映射到这个ip,那么访问的将是小组的网站,要访问自己的博客,需使用域名/目录这种url,很不方便。针对一个ip对应不同域名的问题,可以通过配置apache虚拟主机解决。apache的主要配置文件是/etc/apache2/httpd.conf、/etc/apache2/sites-available/default等,default文件是一个虚拟主机的例子,这次不需要修改这些文件。创建一个文件new_site,输入内容:VirtualHost *:80ServerName www.fumin.meDocum
阅读全文
摘要:在destor原型之上实现了类iDedup算法(介绍),其核心思想是只有当重复数据块在物理上连续才去重,可以通过一个threshold来设置序列的最小长度。因为底层存储并不是块设备,而是DDFS的container存储,不能判断数据块的DBN是否连续,所以我改为判断数据块所属container是否相邻。修改后的算法和iDedup算法的另一大区别是没有重复树,重复树用于记录存储系统中重复的数据块,在多个匹配中寻找最长的一个。考虑到备份系统的负载特点,我觉得这种需求是非常少见的,所以只查找最新备份的序列。修改后算法的流程图如下:算法的分支有些多,先画流程图再写代码可以少调很多bug。这幅图有一个小
阅读全文
摘要:7.云计算的10大障碍云计算被公众接受有三大技术障碍;被接受后,云计算的增长又面临五大技术障碍;最后两个障碍是政策和商业障碍。云计算提供商在长期探索过程中会逐渐克服这些障碍。7.1服务的可用性用户最大的担心是云计算是否有足够的可用性,2008年Amazon EC2、GAE和Gmail都出现过服务中断的事故,持续数小时。只使用一家公司的云计算服务,会遇到单点故障的问题。即使这家公司非常大,有多个不同地理位置的数据中心,它们使用的仍然是同一套软件设施,甚至这家公司倒闭了怎么办。一些大企业会因为担忧这个问题而不愿意使用云计算。对于这个问题,唯一可行的解决办法是使用多家云计算提供商。另一个可用性问题是
阅读全文
摘要:4.云计算的机遇建造和运维超大规模的商用数据中心是云计算最关键的助推器,同时新技术趋势和新商业模型也起到了很重要的作用。云计算一旦“起飞”,一些过去看来不现实的新应用和使用模型找到了出路。新技术和新的商业模式推动了云计算的发展。伴随Web2.0出现的,是从“high-touch, high-margin, high-commitment”的提供服务到“low-touch, low-margin, low-commitment”的自助服务的转变。比如,在Web1.0时代,接受陌生人的信用卡支付需要一份合约。这种合约适合大型商业关系,不适合个人用户和小型商业活动。PayPal出现后,任何个人接受信
阅读全文
摘要:云计算并不是个新想法,但是谁也说不清楚什么是云计算。因此伯克利的一帮家伙花了6个月的时间,对云计算进行了思考,最终形成了"Above the Clouds: A Berkeley View of Cloud Computing"这篇文章。这篇文章的目的是明确云计算的术语,用简单的公式量化比较云计算和传统计算,指出云计算最突出的技术和非技术障碍,以及对应的机遇。归纳一下,文章分为下面八点:1.什么是云计算云计算应该既包括网络上的应用服务,也包括数据中心支撑应用服务的系统软件和硬件。应用服务很早就被称为SaaS,而我们现在所说的云指的是数据中心的系统软件和硬件。当云通过pay-
阅读全文
摘要:工欲善其事,必先利其器!要在Linux环境下工作,就得找到与windows环境同等分量的工具才行。先前已有一些统计,Linux下几个比较好用的软件。0.ubuntu[官网]我是ubuntu的忠实粉丝。ubuntu 12.04 64bit配上4GB内存跑起来非常流畅,unity桌面能充分利用笔记本不大的屏幕空间。自带的ibus感觉是Linux环境最好的中文输入法了。基本能胜任所有的工作,可能office方面的软件不如MS Office方便是一大短板吧。另外,机子休眠后,有时桌面会失去响应,这时我只能切换到tty1,kill掉Xorg进程,这会重启桌面。1.GoldenDict[官网]以前都是用s
阅读全文
摘要:这几天一直在找bug。我的测试数据集是116个linux源码的打包文件(未压缩),116个文件差不多50GB的数据。原型系统是完美重删,应该可以发现所有的重复数据。但是我连续备份两次数据集(分别称为job1和job2),发现总会漏掉很小一部分(50GB的数据量,漏掉若干KB,大概就是几个数据块)的重复数据。到底是哪里出现了问题?在检查了几遍原型的逻辑后,没有发现错误,对几个小数据集的测试也显示完全正确(重删率和恢复出的数据都是对的);将哈希表和SHA1全部改用成熟的Gnome Library和openssl后,问题依旧;重复试验,出问题的文件会变化,说明和数据集本身无关。于是开始使用md5su
阅读全文
摘要:实验服务器的磁盘是最近买的,当卖家问我要普通的还是高级的, 我选择了普通,现在追悔莫及。今天的分析更加详细。首先发现每次实验,出错的文件都不一样,所以应该不是临界条件的问题。下表总结了出错的位置,原始数据是数据的正确格式,第一次备份和第二次备份分别代表两次连续备份,我恢复出两次备份的数据与原始数据进行比较,发现错误都是某个字符发生了变化:文件名原始数据第一次备份第二次备份linux-2.6.34.1.tar;;?linux-2.6.34.5.taraaelinux-2.6.35.1.tar(space)(space)$linux-2.6.35.2.taruuwlinux-2.6.35.3.ta
阅读全文
摘要:原文:Assuring Demanded Read Performance of Data DeduplicationStorage with Backup Datasets.这篇文章发表在MASCOTS 2012,它的作者2011年在HPCC发表了一篇CFL,提出CFL衡量去重系统的碎片程度,这篇文章可以看成是续集,基于CFL提出了一种碎片的解决方案。因为和我目前的研究点重叠,所以看了一遍。去重系统的读性能很重要,不仅仅是因为恢复操作,更多的情况是需要归档。1.新的CFL在2011年的基础上,作者修正了CFL的定义。旧版的CFL忽略了内部碎片的影响,这在我前面的博文《重复数据删除系统的碎片研
阅读全文
摘要:DiskSim没有64位版本,即使侥幸编译成功,运行时也会出现段错误。因此需要对源码进行一些修改,才能在64位环境使用,下文总结了在Ubuntu 64bit上编译DiskSim的全过程。1.安装bison和flexDiskSim需要bison和flex,如下:apt-get install bison flex2.math库的依赖问题在链接libmems_internals.a时,提示mems_hong_seek.c中的sqrt、acos等引用未定义,这个错误的原因是未链接math库。检查memsmodel/Makefile,发现:mems_seektest: mems_seektest.o
阅读全文
摘要:原文:Generating Realistic Datasets for Deduplication Analysis.本文的作者首先在FAST12做了poster,然后全文发表在ATC12。本文针对目前数据去重领域缺少公认数据集的情况,提出了一种仿真真实数据集的方法,并开源了代码。传统的存储研究使用的trace都是无真实数据的,比如disksim接受的trace只有IO本身的特点,而数据去重依赖真实的数据,因此研究者通常使用自己的私有数据集,这使得无法公平比较各种数据去重方法。这个主题的意义还是很大的。1.框架想象一下真实的环境,我们的系统总是从一个起点开始(安装操作系统),不断发生演变,本
阅读全文
摘要:原文:Reducing Impact of Data Fragmentation Caused by In-line Deduplication。这篇文章发表在SYSTOR’12上,主题也是数据去重的碎片问题。不知道是我的英文问题,还是他写作问题,论文读起来很不顺畅。文章发现了一个重要的矛盾:用户喜欢恢复最近的版本,但是最近的版本碎片最严重,恢复最慢。因此使用重写+垃圾回收的方式解决这个问题。事实上这个矛盾也是我所做工作的出发点,重复了啊,伤不起!1.CBR算法文章的idea并不复杂,但是作者绕来绕去,弄出一大堆名词,搞得很难看懂。文章没有考虑惯用的container存储,而是假设直接按块存储
阅读全文
摘要:题记:今天翻了翻硕一写的作业,摘抄一段放到博客上,重复数据删除技术简介。0.绪论 一般情况下,数据中心每周需要将主存储设备的所有数据备份到辅存储设备上,并保存数月时间,我们称之为全备份。另外,数据中心可能每天还需做一次增量备份,只备份当天改变的数据。辅存储设备的容量达到主存储设备的10到20倍是很正常的。如果需要做容灾备份的话,容量还需翻一倍,假如容灾备份需要在广域网上进行,那么带宽消耗也是很可怕的。1. 重复数据删除的分类 从重复数据删除发生的时间进行分类,可以分为在线和离线。在线是指数据到达存储设备之前进行重复数据删除;离线是指先暂时将所有数据存在缓冲区,等到服务器空闲再进行重复数据删..
阅读全文
摘要:使用普通的open、lseek操作文件,当文件达到2GB的时候写数据就会失败。这也是显然的,lseek的原型是long lseek(int handle, long offset, int fromwhere);long在32位操作系统上只有4个字节,只能寻址正负2GB的数据。lseek64是用于读写大文件的API,原型是off64_t lseek64(int fd, off64_t offset, int whence);通过这个函数就可以寻址超过2GB的大文件了。最后不要忘了为open加上O_LARGEFILE标记,或者直接使用open64函数打开文件,这二者是等价的。参考资料[1] ls
阅读全文
摘要:这篇文章有几个特点:第一是难懂,所谓Pastiche就是东拼西凑,涉及到很多别的技术,作者又没有一一详细解释,因此理解这篇文章俺是费了不少劲的;第二是“新颖”,其实这是篇古董文章,02年发表在OSDI,作者既没有完整实现一个系统,也没有很系统的实验,却能发表在A类会议上,我只能说作者的观察很独特。Pastiche描绘的是一个廉价的、p2p网络备份系统,它利用用户的剩余磁盘空间互相提供数据保护。遗憾的是,直到10年后的今天我也没有看到一个成熟的实现(也许是我孤陋寡闻)。但是因为很喜欢这个idea,还是决定发一篇博文。关于整个系统如何运转涉及太多细节,不一一描述,只在此记录下几个关键点。1. 观察
阅读全文
摘要:MapReduce是由google首先提出来的编程模型(介绍点击这里),专为数据密集型任务而设计。不论是google还是hadoop,都是将MapReduce应用在大规模集群下的。那么它是否适共享内存环境呢?斯坦福的Phoenix项目做出了回答。相关的论文发表在HPCA’07(最佳论文)和MapReduce’11上。Phoenix适合于共享内存的多处理器计算机(SMP和ccNUMA),以及多核计算机。07年释出第一个版本Phoenix;后经过了大量修改,Phoenix 2在可扩展性和移植性方面得到加强,支持Linux;Phoenix++是Phoenix的C++实现。目前Phoenix只支持x8
阅读全文
摘要:内存拷贝经常需要使用memcpy和strcpy:/*both defined in string.h*/void * memcpy ( void * destination, const void * source, size_t num );char * strcpy ( char * destination, const char * source );;二者主要的区别是strcpy将内存看作字符串,遇到0('')就结束。二者在使用时都存在一个不易发觉的陷阱。看下面这两行代码:memcpy(buf+off, buf, len);memcpy(buf, buf+off, le
阅读全文
摘要:大部分重复数据删除研究集中在备份的指纹索引上,大家都认为这是最关键的问题。的确,不解决磁盘瓶颈问题,备份窗口过大将导致重删不实用。重删系统的恢复性能一直处于被忽略的状态,原因是相对备份,恢复是小概率时间,而且体系结构最重要的Amdahl定律讲的就是重视大概率事件。但是我们也要明白一点,备份就是为了恢复的,如果备份的工作做得很充足,到了关键时刻不能快速恢复,一切都是白费力气了。或者说,备份就是一个不断投入的过程,而一次恢复就是赎回成本的过程,我们总是在研究如何减少备份的投入,而忽视了如何赎回更多的成本:恢复的越快,赎回的成本就越高!备份最关键的部分是指纹索引,恢复最关键的部分是数据块存储。重删的
阅读全文
摘要:FAST’12, iDedup: Latency-aware, inline data deduplication for primary storage.二级存储是重删技术的主要应用场景,少量主存储使用了离线重删技术。二级存储要求高吞吐率,主存储要求低延迟。下图是重删技术的分类,和iDedup所处的位置。0.介绍主存储环境下,在线重删最大的挑战是不能增加前台操作的延迟。但是,重删元数据的管理和访问会增加写延迟;碎片导致逻辑连续读被拆分为随机IO增加读延迟;管理数据块的引用次数增加删除延迟。iDedup尝试解决这些问题,仅仅增加了5%的CPU开销和2-4%的操作延迟,重删率达到理想情况的60-
阅读全文
摘要:在写重删原型系统的存储模块时,收获很大。就说一句:函数功能简单、互不重叠很重要;接口定义不好,花费的是大量debug时间。有时间得多学习学习成熟的源码。
阅读全文
摘要:Vim是一个强大的文本编辑器,我参考网上教程定制了一个简单的IDE,具有文件视图、自动补全、批量注释等常用功能。先上图:要完成整个配置,需要安装ctags、cscope软件,以及taglist.vim、winmanage、omnicppcomplete.vim、NERDcommenter.vim、a.vim、DoxygenToolKit插件。ctags软件可以帮助我们跳转到函数或者变量的定义位置;cscope软件比ctags更强大,可以找到哪些位置调用了某个函数;taglist.vim和winmanage插件用于显示源代码的结构,比如函数列表;omnicppcomplete.vim插件可以实现
阅读全文