delphij's Chaos
选择chaos这个词是因为~~实在很难找到一个更合适的词来形容这儿了……
今天去 San Francisco 的 Delphix 参加了 OpenZFS Developer Summit,今天这会太充实了,先记一笔。
ZFS Channel Program:目前的 ZFS 应用程序需要以多次系统调用来完成一项功能。为了实现原子性,用户态部分实现起来比较复杂,而且最终内核中的 sync task 可能会导致长时间的延迟。提出的解决方案是在 ZFS 内核部分引入一个 Lua 字节码解释器,用户态一次灌一个脚本进去,通过脚本逻辑实现原子性,从而减少上下文切换开销并极大地简化用户态部分。
分层的 ZFS 存储:希望将 ZFS 改造为能够适应冷热存储的结构,这样可以将冷数据部分固定下来之后脱机(例如置于待机状态),从而节省能源开销。(Nexenta)
对于 spacemap/metaslab 的改良:Delphix 通过 DTrace 观察发现了一系列性能瓶颈并进行优化的实例。这个已经在 Illumos 里了,今天主要是趁热讲解一下所做的改进。比如写带宽限制从原始的限时、限量、加延迟变成了按系统中未回写数据比例作为限制条件、当 I/O 持续到来时自动切换到吞吐量优先(多排任务)的模式、写入速度减慢时减缓接受写请求等的新一代写带宽控制,使得 ZFS 的写入延迟得到了极大的改善。Adam Leventhal (这位老大也是 RAID-Z2/Z3 以及 ZFS gzip 压缩支持的作者)分享了采用的方法、评估手段等等。
明天的活动是 Hackthon,又要起个大早。
Read more...早期 FreeBSD 文档采用 jadetex 等的工具集,对 UTF-8 的支持不好。最近, Gabor 等人完成了将工具集换成 TeX Live、Apache FOP,并使用 DocBook 5.0 的工作,所以趁今天编译代码的空挡,我把 FreeBSD 简体中文文档全部换成了 UTF-8 编码。
目前这个转换还有一些小问题需要修正,目前版本的 PDF 生成已经基本算是可以看了(之前有很多由于字体配置问题导致的汉字缺失)。还需要解决下面这些问题,但是我暂时没有太多精力去做,如果有兴趣请和我联系:
在 FreeBSD doc project 换成 svn 之后,FreeBSD 简体中文文档计划基本上处于停滞状态。现在的想法是将库挪到 github 上面,方便多人合作;FreeBSD 目前已经有了对应的 github 镜像:https://github.com/freebsd/freebsd-doc,如果未来按这个计划去做的话,我打算起一个新的github项目来做。
Read more...这个方法我最早是在 佐藤 広生 在 第13回 FreeBSD勉強会 上做的 《ZFSの活用とチューニング》 演示幻灯片上看到的,当时没想太明白,而后来想明白了也没记下来。今天想起来了就先记上一笔,备忘。
一般来说,如果有很多不同的资源,那么尽量让不相关的资源同时去完成不同的任务有助于改善系统的利用率并提高吞吐量。而 Unix 上的大部分工具在设计时都是设计成阻塞的,或者说它们很大程度上能够高效地利用一种资源,而在完成一系列相互关联的任务时往往就不那么有效了。
举例来说,发送 ZFS 快照到另外一个网络的服务器上,假定发送 ZFS 快照本身在本地可以以较快的速度持续进行,但带宽比较受限,那么很显然的一个想法便是引入压缩。另一方面,在接收一侧,解压缩之后的数据写盘的速度可能没那么快,而且让压缩程序直接挤牙膏似的吐出数据给 ssh 或者 nc 往往也不能十分有效地利用带宽。在这个场景中,在发送端我们可以看到以下几个任务:
对应的,在接收端我们也可以看到与之对应的任务:
在这样一个链条中,如果全部使用标准的 Unix 命令行工具的话,任何一个环节的阻塞都可能会直接向前反馈,从而影响整个系统的吞吐量。很明显,在对方由于任何原因暂时来不及接收数据的时候,压缩操作可以继续进行,这事通过编程不难实现,但实际上我们需要的只是引入两个 dd 进程,即将发送端变成:
在新的场景中,接收端的阻塞将导致第二个 dd 的输出阻塞,而此时第一个 dd 仍然可以再吃下 16MB 的数据流(这个 16MB 需要根据具体的应用来调整,原则上它应该大于远端一次阻塞到完全恢复这段时间上游能够产生的数据量)。通过 dd 所做的 reblock,也使发出数据采用较大的块尺寸,从而进一步节省带宽。
Read more...我之前用的无线路由器是刚来美国以后不久买的 Linksys WRT310N(刷了 DD-WRT 固件)。由于 DD-WRT 的可靠性很差,因此后来买了一台采用 Atom CPU 的 PC 服务器作为网关,只使用它的 AP 功能,但是最近因为发现家里的网络稳定性越来越差,做了一段时间的功课之后决定用 Asus RT-N66U 来取代这台 WRT 310N。
Asus RT-N66U 是一款 802.11n 的无线路由器,包括 4 个千兆口、1 个做uplink的千兆口,支持 5GHz 和 2.4GHz 两种无线频率。它的下一代产品 RT-AC66U 支持 802.11ac,不过目前家里没有支持 802.11ac 的设备,加上看到一些风评认为这款 802.11ac 产品和这一代产品相比性能方面存在差距,因此就没有选择 802.11ac 的版本。
目前暂时还没有刷其他固件。不过 Henry 同学推荐了 Tomato Firmware,目前还是当做 AP 来用,假如这个固件支持 VLAN tagging 的话可以考虑试试看,如果不支持的话,可能就等淘汰它的时候再说了。
Read more...警告 刷写硬盘固件时的不当操作可能会导致硬盘无法使用。本人不承担由于使用本文中介绍的内容所导致的任何后果的责任。
上回 说到 谷奥 的一块硬盘坏了,但是忘记说实际上两块硬盘的固件都有已知问题(ST1000DM003-9YN162 固件版本 CC4D,目前的最新版本是 CC4H)。虽然在 ticket 里提到了这件事,但是 remote hand 没做升级,想想之后决定还是自己把它远程刷掉好了。
由于刷写不当会导致硬盘无法使用(实际上还是有办法恢复的,但是比较麻烦而且没法在远程做),因此为了以防万一,在执行任何操作之前应备份硬盘上全部数据。由于使用的是 graid 的镜像模式,因此事实上我们有一份完整备份,故跳过这一步。
接下来要从 Seagate 网站下载固件。考虑到刷新固件操作的危险性,不知道怎么找这个固件的人可以看到这为止了。
Read more...谷奥 的服务器硬盘坏了,而且托管商很奇怪地用了 gmirror 而不是 BIOS 直接支持的 graid(我厂 Alexander Motin 实现的与 BIOS 兼容的软件 RAID,支持 Intel、Adaptec、JMicron、nVidia、Promise和SiL等多家厂商的软RAID格式),所以趁这个机会给它换掉。记一下迁移的过程。
启动的时候, gmirror 已经 degraded 了(有一个硬盘已经换掉):
% gmirror status
Name Status Components
mirror/gm0 DEGRADED ada0 (ACTIVE)
检查分区(gpart show),确认磁盘的最后部分没被占用:
% gpart show
=> 63 1953525104 mirror/gm0 MBR (931G)
63 1953520002 1 freebsd [active] (931G)
1953520065 5102 - free - (2.5M)
=> 0 1953520002 mirror/gm0s1 BSD (931G)
0 20971520 1 freebsd-ufs (10G)
20971520 1048576 2 freebsd-swap (512M)
22020096 1931499906 4 freebsd-ufs (921G)
Intel的元数据格式需要占用磁盘的最后4K。(如果是GPT格式的,处理起来就复杂得多了,但MBR在磁盘最后并不放任何内容,因此可以直接来用)。
Read more...Google 在一篇关于 Google Maps 更新的 blog 中提到, Google Latitude 即将关闭 并转入 Google+。(另外话说,这事有必要这么偷偷摸摸的吗?)
我目前还在使用的 Google 服务有:
大致看了一下,如果有一天所有这些服务都汇入 Google+ 的话,还是能活的。所以,如果哪天 Google 真这么干的话,就只好说拜拜了。
Read more...今天有一位用户发信给 Release Engineering Team,要求在发行版中提供源代码的 svn checkout 工作副本,以便直接使用。我觉得这是个好主意,因为这样可以用更便宜的 FTP 流量来代替 svn 流量;不过,由于 re@ 内部有人担心这样会让光盘映像继续膨胀,因此我做了些测试来评估这样做的影响。
总共做了 7 个试验。
Read more...这次重贷款的过程,我认为并不算非常成功,但是还是要记一下。
去年1月买房子的时候,我拿到的贷款是30年固定利率的利率是 3.875% (Conforming Plus)。由于当时手里没有太多现金,因此只付了 15% 的房款(这样贷款金额是房价的 85%)。为了降低风险,银行在债务人持有的房屋产权净值 (Equity) 低于 20% 时,会强制债务人上一种贷款保险 (Private Mortgage Insurance),保险费用随产权净值比例有所不同,我实际支付的保险费用大约是每月 $125 左右。
由于贷款保险并不会给债务人带来任何好处而只是保护银行,因此,如果能取消贷款保险,这些钱就可以用来做其他事情或者支付本金。美国法律规定,产权净值达到 20% 时,债务人可以向银行提出申请要求取消 PMI;当产权净值达到 22% 时,银行必须允许债务人取消 PMI。不过,由于美联储持续实施量化宽松政策,导致利率进一步下降,而湾区房价也由于通胀而持续上涨,因此,重贷款也就成为了更好的选择,因为重贷意味着可以在取消 PMI 的同时降低利率。
所谓重贷款 (Refinance),是指通过向银行(可以是同一家银行,也可以是不同的银行)申请一个新的贷款来偿还之前的贷款。通常,重贷款的目的是以下几种:
美国的房屋贷款的实际债权人通常是在次贷危机中被政府接管的俗称"两房"的 房利美 Fannie Mae 或 房地美 Freddie Mac 其中的一家。具体的操作方面,这两家公司会从银行购买贷款的债权,使银行获得更多的流动资金;对债务人来说,这个过程并不改变还贷时的收款人或提供贷款服务的银行,也不会在所在郡的房契上做特别的登记。重贷的过程中,债务人向提供贷款服务的银行或专门的投资者提出贷款申请,后者会再次将债权卖给两房或提供贷款服务的银行(最终还是卖给两房)。
Read more...