Skip to content

[翻译]一个通用的缓存文件系统

14-Jun-09
Views: 0

注:本文译自LWN.net的介绍性文章《A general caching filesystem》,corbet发表于2004年9月1日。翻译这篇文章没有任何目的,纯粹为了周末脑力活动。文章内容可能已过时。在Linux上,VFS是更好的选择。

一个通用的缓存文件系统
【corbet 发表于2004年9月1号,Garriot Zhang翻译】

很多文件系统都与一个相关的慢速后台存储一起运行。网络文件系统依赖于一个网络连接和一个远程服务器;从一个这样的文件系统中读取文件明显会比从本地读取慢。使用慢速本地介质(比如CDROM)的文件系统也会比那些使用快速硬盘的慢。正因为这个原因,缓存从这些文件系统获得的数据到本地硬盘成为一种必需。

然而,Linux却没有一种机制能让文件系统执行本地磁盘缓存。或者,至少它过去一直没有这样一种机制。David Howells的CacheFS补丁改变了这种状况。

使用CacheFS,系统管理员可以在块设备上分配一个分区用于文件缓存。CacheFS会提供一个供其他文件系统使用的接口。其中有一个基本的注册接口,和一个相当精致的索引分配机制。不同的文件系统用不同的方式来创建文件标志符,所以CacheFS尽可能地减少强加的策略,让这些文件系统代码想干什么就干什么。最终,当然,有一个接口用于缓存文件分页,记录改动,从缓存中移除分页,等等。

CacheFS的目的不是缓存整个文件;它必须能应付这种可能:有人想操作一个比整个缓存还要大的文件。实际上,它也不能保证能缓存所有东西;它必须能执行自己的空间管理,而且就算是缺少真正的缓存设备所有东西也能工作。这对大多数文件系统来说这都不应该是一个障碍;就本质而言,文件系统首先必须要准备好处理他们文件的真正来源。

CacheFS的目的是与其他文件系统协作,而不是作为一个独立文件系统使用。它的分区必须在使用前挂载,CascheFS使用挂载点向被缓存的文件系统提供一个视图。系统管理员甚至能通过简单地从被挂载的文件系统中删除文件的方式来手动地从缓存中将他们移除。

在用户和真正的文件系统中间插入一个缓存,明显的增加了一个可能导致数据丢失的破坏点。CacheFS通过缓存内容日志来处理这个问题。如果发生意外停机的情况,CacheFS可以重复执行所有的丢失操作直到所有的服务恢复工作。

现在,CacheFS只被AFS文件系统使用,但是兼容其他系统的工作也在进行中。NFS更是会从CacheFS得到很大好处,特别是当NFSv4开始使用的时候(NFSv4的设计允许本地缓存)。期待这个补丁能相对容易地被主流内核接受。如果想获得更多信息,请看补丁中的文档文件

域名也有保留字

12-Jun-09
Views: 0

以前只知道编程语言有保留字,今天才知道互联网的域名也有保留字,就是某些域名是做保留使用,不允许公开注册的。

为了降低冲突和混乱的可能性,一些顶级域名被保留,用于私人的测试、文档示例等用途。而二级域名“example”也被保留下来,仅用作为范例使用。

简单一点说,就是你可以在自己开发的时候尽情的模拟这些域名来测试自己的应用,而不用担心某天因为失误,你的请求发给了另一个真实网站。

被保留的顶级域名有:

“.test”:建议测试新的DNS相关代码的时候使用;

“.example”:建议在文档或者例子中使用;

“.invalid”:建议在需要无效域名或需要标明域名无效的线上环境中使用;

“.localhost”:这个大家肯定都很熟了,指向本机的域名。传统上来讲,这个顶级域名是在主机DNS的实现中静态定义的,是一条指向回送IP地址(the loop back IP address)的记录。

除此以外,example.com, example.net, example.org也被互联网地址分配机构(IANA)保留了下来,可以当作examples使用。

上面的信息是我从RFC文档里简单翻译过来的,想亲身体验一下或者看详细文档的,可以自己访问一下example.com看看。

BTW:这也说明了那句老话“钱不是万能的”,无论你多有钱你都不能注册example.com为己有:P

Fedora 11终于发布了

11-Jun-09
Views: 0

6月9号,Fedora 11终于在跳票两次以后正是发布了。

这一个版本的Fedora好像备受期盼。刚发布,就有人说这是最好的Fedora。

网上找了找相关信息,想看看这个Release到底好在哪里。发现有人早在5月底就写了Fedora11的使用感受。

Steven J Vaughan-Nicolas在《Fedora11最好的五个特性》里,先赞扬了Fedora11基于Gnome2.26的新视觉感受以后,又说明了Fedora11采用的PulseAudio音量调节器。(我对这个不太感冒,不过感觉这好像是个趋势,Ubuntu Geek在Ubuntu9.04放出来以后就马上有一篇配置PulseAudio的文章跟进)。

Steven同学总结的Fedora11的最好的五个特性如下:

1)快速引导:Fedora的开发者终于实现了20秒启动的承诺。Steven同志亲自测试:18.9秒完成启动。

2)Ext4成为默认的文件系统:Ext4的好处是大大的,支持1EB的文件系统,单个文件16TB, 没有子目录数量限制,更高的磁盘性能,更好的磁盘空间管理,等等。Ext4成为主流已是必然。(现在还是有defect的,比如现在GRUB还不支持Ext4,也就是说GRUB+Ext4的时候,/boot需要是Ext3。不过估计这个问题会在GRUB2应该中解决(Ubuntu9.10将使用GRUB2作为引导))。

3)更好的图像与显示:Fedora11里用了1.6版的x.server,更好更稳定的显示系统。一般来说至少显示速度比原来更快了,另外如果使用多显示输出的话,这个版本的优势将更加明显。(这个版本的问题就是强制结束x.server的ctrl+alt+backspace组合键被取消了,其实9.04的ubuntu就已经默认取消了这个组合键)

4)点触板的支持大大改善:如果你使用笔记本的点触板的话,这个理由足以让你换到Fedora11上来。

5)DNSSEC(DNS Security Extensions:DNS安全扩展):Fedora11默认加入了DNS安全扩展,防止DNS仿冒攻击。无论怎么样,这个特性在安全方面还是有很大意义的。

简言之:Fedora就是一个快,稳定,有融合了很多新技术的版本,值得一试。

BTW:使用Redhat的发行版,最好还是要搞清楚Redhat相关发行版的支持周期:RHEL的支持周期是7年,与之对应的CentOS也是7年;而Fedora的支持周期只有1年。Fedora还真是一个相当激进的产品。

逛百脑汇买了四张CD

08-Jun-09
Views: 1

下午去逛百脑汇,本来是去买鼠标垫的。结果走到一个摊位面前,竟然对我大叫买光盘送鼠标垫,我就引进去看了看。

在两个纸盒子里挑了半天,还是发现了感兴趣的东西。

收了如下四张CD:

1. One of these days – The royal philharmonic orchestra plays.

CD Cover of <One of these days>

CD Cover of

我是Pink Floyd的粉丝,但原来却不知道有这张专辑。英国皇家交响乐团演奏的一些Pink Floyd的曲子,完全不同的风格。

虽然以前听过Metallic、Scorpion和交响乐团的合奏,但是听到这个专辑我还是有点被震了。

这张CD选了几个比较有代表性的曲子:

1. Run like hell

2. Another brick in the wall part1/ The happiest days of our lives/ another brick in the wall part2

3.  Goodbye blue sky

4. Money

5. Hey you

6. Wish you ere here

7. On the turning away

8. Shine on your crazy diamond (Part1-5)

9 When the tigers broke free/ eclipse

你想过那首对Syd Barret无限怀念的wish you were here 被演绎的让人想跳舞奔跑的感觉吗;你能想象比原来的Hey you更忧郁低沉吗。如果你是Pink Floyd的fans而也接受Roger Waters的风格的话,那应该听听这张专辑。如果你只承认Syd Barret的Pink Floyd的话,那就没必要听这张专辑了

2. Mighty Rearranger – Robert Plant

CD cover of Mighty Rearranger

CD cover of Mighty Rearranger

其实买Robert Plant的CD完全是冲着Led Zepplin的名头去的。而这张CD又是Robert Plant的代表作之一。听完一遍,很难说这个到底是个什么风格的,感觉好像很多风格的融合的结果。其实Led Zepplin在解散以后,他们成员风格变得非常多样化,很有探索风格,比如Jimmy Page的Kashmir。

3. Monster – R.E.M

CD cover of Monster

CD cover of Monster

这个是REM的代表作之一,也是备受好评的一张CD. 它录制于1994年,那时候REM已经不那么摇滚了。Peter Buck自己在评论这张专辑的时候说:“a ‘rock’ record, with the rock in quotation marks. That’s not what we started out to make, but that’s certainly how it turned out to be. There’s a nudge, nudge, wink, wink feel to the whole record. Like, it’s a rock record, but is it really?” 买一张,算是向REM致敬。

4.  One Day at A Time – Joan Baez

CD cover of One day at a time

CD cover of One day at a time

这张是我认为今天买的最好的专辑。

我曾毫无顾忌的向别人表露我最向往的年代就是美国60、70年代那个垮掉的一代时期。虽然那人认为我是因为“free drugs & free sex”才对那个年代感兴趣的,但我依然有自己的理由。

这张专辑里的声音就是我的理由之一,清新,亮丽,自然,没有严重的商业的污染,也没有丝毫的电子噪音。轻轻地吟唱,就像一个pub里的老朋友。这就是来自那个年代的声音。

毫无疑问,Joan Baez是那个年代的代表人物之一,像Bob Dylan一样的标杆型人物。

今天晚上,就要跟着她的声音再品味一下那个年代,也回忆一下,几个人在宿舍里讨论音乐的情形。

顺便放两个当时在学校里听歌的小玩笑:

A:“这两天睡觉老是睡不好,也不知道为什么。”

B:“是不是街上放X只蝴蝶放的太多,你听多了?”

A:“你说咱们现在听的歌都是60、70年代的,都流传了40年的歌。你说咱们要是现在就找一个歌手听他个40年,那多好。”

B:“可是听谁的呢”

A:“……难道是X龙的X只蝴蝶……”  凸(-_-!)凸

移动版的Linux, Fedora 11跳票

07-Jun-09
Views: 0

昨天晚上睡不着,听Linux Outlaw的PodCast。他们在提到Moblin的时候,连用了awesome,revolutionary几个形容词。

Moblin这个项目应该已经一段时间了,但远不如其他几个移动版的Linux来的高调。比如Android,几乎全世界的Netbook厂商都在喊我们下一个Netbook产品系就会用Android作为系统;Ubuntu从9.04开始有了专门的上网本版本,netbook remix,但其实以前的Ubuntu对上网本也相当的友好;Nokia的Maemo也是不温不火的发展了三代,而且Maemo凭借Nokia的资源、友好的开发和使用社区,发展也很稳固。

Moblin起步也算是晚点, 2007年7月开始,现在才大张旗鼓的发布一个版本,2.0 beta。

Linux outlaws那两个家伙说这个版本的Moblin在UI方面的改进是革命性的(revolutionary)。听了这个评价,我迫不及待的下个image,在virtualbox上装一下看看。

Moblin在VirtualBox上跑速度超慢,不知道为什么,可能和UI的效果有关吧。 没耐心的同志们还是去看screencast吧,那个速度更快的。

上几个图看看吧:

Home screen of Moblin 2.0Home screen of Moblin 2.0

Moblin的Home界面。怎么说呢,确实和其他的Linux完全不一样,顶端图标的工具条可以缓解我们对Apple风格的dockbar的审美疲劳。这个界面也扭转了我对到处都是图标的“桌面”的认识。

Status screen of MoblinStatus screen of Moblin

不愧是上网本系统,专门的个人状态更新的按钮,直接提交到Twitter上去(可惜现在twitter被我们伟大的墙给盾了)。

Application screen of Moblin 2.0Application screen of Moblin 2.0

折叠式的程序选择,比用了这么长时间的菜单式的舒服一点。图标很可人 。

Application Manager of Moblin 2.0Application Manager of Moblin 2.0

它还提供了一个软件管理器,看来以后安装软件也不会太麻烦,只是不知道repository上的软件有多少。BTW:这个东东看上去有点像yum啊。

据说Moblin已经可以在很多型号的笔记本上用了。找个优盘把这个image写上去,找个本子启动下试试。

最近还想鼓捣鼓捣我的N810,想把ubuntu netbook remix装上,结果发现官网上说ubuntu在n810上暂时不支持声音;也想装个Android爽爽,但是现在能找到的那个安装包已经是被淘汰的一个版本了。

唉,还是算了吧,Maemo本身就不错。

另外,今天还听了FLOSS的Podcast,讨论了半天Fedora 11,说是6月2号就放出来,可是刚才看了一下,发布时间已经跳票到6月9号了。这已经是第二次跳票了。不知道9号能不能准时释出。

这个Podcast还专门介绍了PackageKit这个项目。这个项目的目的是更好的包管理工具。最关键的是这个工具是跨发行版的,主要目标是为不同的发行版的软件管理工具提供统一的管理接口(并不是要代替他们)。虽然现在这个工具还不是特别完美(比如现在还不能解决包之间的依赖关系),但依然很值得期待,至少我们不用分别记住apt-get,emeger,yum的不同参数。

拿到了Scrum Forum hangzhou的T恤衫

15-May-09
Views: 1

今天拿到了Scrum Forum的T恤衫,还不错,背面的图画非常符合Scrum的精神。

明天早晨活动开始,有不少话题都很值得关注,比如How to estimate research tasks, Automation test with Agile.

明天好好去感受一下。

说到Scrum,就顺口说一下方法论。关于方法论的认识,我非常同意Zoom.quiet在他的签名里表明的观点:方法论并不是承诺给你多好的产品,而是让人和人的组织更靠谱。无论XP,Scrum也好,Agile CMMI也好,选择什么,如何实施,如何控制,没有银弹,也没有真理。有一句话倒是值得在整个的实施过程中作为提醒:Just enough is enough。

Scrum Forum Hangzhou T shirt

Scrum Forum Hangzhou T shirt

C语言,MD5算法,与Windows动态连接库

14-May-09
Views: 0

今天有人告诉我他们做的Web应用要在登录页面加上密码加密用于防止。加密方式与某国际门户网站相同。

大体机制如下:

1. 当加载页面的时候,服务器动态生成一个ticket,一起返回客户端。

2. 在客户端提交时,用MD5算法先将用户输入的密码进行加密得到一个十六进制格式的字符串,然后将这个字符串与那个ticket相加再用MD5加密一下,再次得到一个32个字符的十六进制格式的字符串。将这个字符串返回服务器。这种方式可以简单的预防一下中间人攻击(MIM Attack)。

他们的问题是他们在项目中使用了某个录制屏幕的自动化测试工具。这类工具一般都是录制每个request和目标URL,并保存Response。然后不断的回放、重复每个请求,并校验Response。

这个工具在测他们这个新的登录功能的时候就出现了问题。因为每次登录时的ticket都是新的,所以上次录制下来的经过ticket混淆的密码字符串在下一次登录请求的时候是无效的。

他们要求做一个标准的能实现这个字符串加密功能的DLL,加载到他们的测试工具里。他们在测试脚本里来调用这个DLL,以便于每次脚本执行的时候都能根据当时的ticket生成一个有效的密码字串返回给服务器。

功能很简单,MD5的算法Google一搜一大把。自己从网上扒下来RSA Data Security, Inc.的MD5算法代码,加上那两次MD5加密的逻辑,然后在CodeBlocks里建个DLL工程,编译,搞定,还顺手写了个测试。不过这么长时间没鼓捣C,还真是有点手生。(记得上一次搞DLL相关的东西还是在05年的时候。)

总结一下这个玩意有什么价值。其实……没用,连C语言练手都算不上。不过那些想做DLL的新手倒是可以参考一下。

把这段代码放上来,再加上以前解释DLL的那个文章,做个备案,防止以后忘了Windows 的DLL是什么东西。

PasswordEncoder DLL source code (这个包是CodeBlocks的workspace,包括DLL的源代码和测试用例。使用方法见测试用例)

简单压了一下Apache

13-May-09
Views: 0

遇到一个应用,上线时突然发现上线目标是承载3w在线用户,但是没有预料到。只有两台server,一台Apache,一台DB。他们现在主要的关注点在Apache能不能承受3w的请求。

我第一感觉是Apache应该是没问题的, 一个流行这么多年的成熟服务器应该可以承受的住这些压力。 于是今天回家在自己的系统上简单用ab压了一下看看效果。
More…

五一节的乐子

02-May-09
Views: 0

放假总是要给自己找点乐子,还好只要手头有台电脑,就有新的乐子自己跑出来。

第一件好事应该是Ubuntu的显示补丁放出来了,Eye Candy终于回来了。迫不及待的打上,然后打开特效,哇塞,世界终于又清静了。把rotate cube和Ring Switcher打开,转上十几圈,可爱的切换模式终于又回来了。

闲来无事还关心了一下OpenSolaris,发现官方主页上有几个比较有意思的Solaris发行版.
BeleniX和SchilliX是两个致力于Live CD的发行版;MilaX是小体积的版本,用于USB和CD设备,可以用作系统急救盘;MartUX mBE号称是第一个non-SXCR OpenSolaris发行版,口号是“不做LinUX,做真正的UNIX”(This is not linUX. This is real UNIX.),它应该是基于open UNIX的,目标是在SPARC架构上跑的yet another Solaris,又是一个发烧份子的轮子。
我比较感兴趣的是NexentaOS,目标是成为在Solaris内核上跑得GNU Linux。它使用Solaris的内核和运行时,又吸收了Linux的流行思想,还整合了很多开源工具。最有趣的是兼容Ubuntu的repositories, 这就意味着ubuntu的东西你都可以apt-get下来并且运行。搞了个它的iso下来,跑了一下。在virtual box里安装用了我N长时间。它的默认安装只有core,没有其他的东西,包括X和gnome;确实带有apt-get,而且大体用法也一样,但默认的源里面东西很少,有时间加上ubuntu的源试试。
就我个人来讲,一直以技术贵族示人的SUN在这些高级玩意上走亲民路线我还真是不适应。你说这个open solaris的定位在哪里呢?说它有先进的架构和技术,我想这些东西只能在SPARC这种东东上充分发挥出来;它要是想打入民间市场,那不知道多少FreeBSD和LINUX的死忠会对它感兴趣;Linux的桌面应用已经很成熟了,OpenSolaris也要花点时间才能赶上来。整体而言,OpenSolaris只是Solaris的客户体验版而已。
(BTW:自从SUN被Oracle收购以后,我完全相信有钱才是硬道理,贵族败给了暴发户)

今天发现SUN的下载站出问题了,virtualbox和netbeans无法下载;幸好,dev.java.net还活着,还能把fuji下载下来跑跑原来的BPEL看看。

忙活多了,也得让眼休息休息,于是我就去了趟休博园动漫节现场(年轻人多就是好,特别是还有很多洛丽装的PPMM),顺便收了个手办模型。上图(不要乱想,是手办的不是洛丽的):
手办
手办-伊利丹
手办-尤娜

wakoopa.com, 什么软件最hot

30-Apr-09
Views: 0

刚在InfoQ的《What Software Other Geeks Are Using?》发现了wakoopa.com这个网站。

它主要就是收集一下你正在使用的软件信息,然后和大家分享一下。第一感觉好像没什么用处。

没事的时候浏览一下它的软件列表,突然发现很多有意思的东西。

Top10 应用程序,第一是FireFox,第二是IE,这倒没什么,WOW排第九让我很惊讶,一个游戏竟然能上榜TOP10,看来用这个网站的大多都是年轻人。

Top10的IDE和Editor,没什么意外的。看来UE在NotePad++和EditPlus这些不付费也能用的东东的挤压下不是那么的火了

Top10的编程语言和Framework有一点真是让我感觉非常意外,VA SmallTalk上榜了(我甚至认为某个SmallTalk的群体集体注册这个网站为其刷票)。Python排名第五,而Ruby没入选,很令人奇怪。现在铺天盖地的都是鼓吹Ruby的,难道Python和Ruby的使用者互斥?

剩下的就没什么精彩的地方了。

没事的时候翻翻这个网站上的Software category也很有意思,比如我就在里面发现了很多人在用Shoes(一个UI toolkit)。