之前家里的服务器一直用着破烂 AMD 推土机架构的 FX-6100，早就看着不爽了，于是这次趁着全家电脑升级，将服务器也升级到四代酷睿。同时也针对服务器最重要的存储部分做了一次彻底的升级。 其实，在此之前，家里服务器陆陆续续用过不少存储方案。本文将记录各种我使用过的存储方案，并一一分析其中的优缺点。 存储方案 家用服务器嘛，最一开始都是仅靠主板的那几个 SATA 接口。最早的时候里面插三四块硬盘就算很多了。但是随着时间的推移，硬盘空间不够用了，最直接的解决办法就是往服务器上堆硬盘。在这过程中，遇到的第一个困难就是主板上 SATA 接口插满了。 1. SATA 扩展卡 对于 SATA 接口不够用，最简单的解决方法，加一块 PCIe SATA 扩展卡。最一开始加装的是基于 ASMedia ASM1061 的扩展卡。后来看到网上说 Marvell 88SE92xx 更稳定，就陆续买了 88SE9230 和 88SE9215 扩展卡。陆陆续续插了三块扩展卡之后，主板插槽又不够用了。 ASMedia ASM1061 使用起来很友好，基本上即插即用，用 Windows 自带的驱动程序就能工作。但是缺点很明显，接口少。一块 ASM1061 卡只能扩展出来 2 x SATA 接口。而且只能用到 PCIe x1 单通道模式，对端口资源也是浪费。 Marvell 88SE9215 好一些，一个 PCIe x1 接口可以扩展出 4 x SATA 接口。但是必须安装驱动。而且 PCIe x1 接口也造成了一定的带宽瓶颈。 Marvell 88SE9230 使用了一个 PCIe x2 接口，也是扩展出 4 x SATA 接口，也是必须安装驱动。相比之下，PCIe x2 的带宽就好多了。但是相应的，因为主板上没有 PCIe x2 接口，所以很可能需要占用一个 PCIe x4 或者 x8 甚至 x16 接口。对于只提供 PCIe x16 和 x1 接口的主板，很有可能插了显卡之后就不能再插 88SE9230 扩展卡了。 此外，市场上还有一些 SATA Port Multiplier。但是因为会造成性能损失，所以并不在我考虑范围之内。 这个时候，有一块扩展卡引起了我的兴趣。 2. IO Crest IO-PCE9215-16I 这块板卡还有另外一个型号，Syba SI-PEX40097。接口使用的 PCIe 2.0 x4，理论上总速率可以达到 5 GT/s x 4 通道 = 2000MB/s 传输速度。卡上通过一个 Pericom 的 PCIe 交换芯片，将一个 x4 总线分成 4 个 x1 总线，然后每个 x1 总线各连一个 88SE9215。所以总共算下来就是一个 PCIe x4 转成 16 x SATA 接口（4 x Mini SAS SFF-8087）。也就是说我只需要一块扩展卡就够了。 至于带宽嘛，2000MB/s 分给 16 个接口，平均每个分到 125MB/s，给机械硬盘（WD Blue/Green）差不多够用了。 但是这块板卡有个最大的问题：贵！一块卡原价要卖到 CAD$250！某天正好看到 Amazon Warehouse Deal 有一个开箱货，只需要 CAD$125，就买回来了。用了一段时间感觉还不错。 3. Dell PERC H310 一个偶然的机会，看到网上有人说家用服务器就买二手 IBM M1015，刷成 LSI 9211-8i IT 模式使用。然后我研究了一下，就去 eBay 买了二手 Dell PERC H310。 这块卡使用 PCIe 2.0 x8 接口，扩展出 8 x SATA（实际卡上是 2 x Mini SAS SFF-8087 接口），带宽多一倍，接口少一半，平均每个 SATA 接口的速率提升到 500MB/s，这已经很接近 SATA III 6Gbps 的速度上限了。 这块卡本身是给服务器设计的，性能好，稳定可靠。Windows 自带驱动，即插即用。 而且，最关键的一点：便宜！一块卡只需要 CAD$36！这样就算我买两块卡，获得同样多的 SATA 接口数量，也只需要 CAD$72，也就是 IO-PCE9215-16I 开箱货的半价。当然首先要保证主板上能插两块 PCie x8 板卡。 再说一下为什么选了 Dell PERC H310 而不是同样使用 SAS2008 芯片的 H200 或者 IBM M1015。一个原因是 H310 的 SAS 接口在后侧，M1015 的 SAS 接口在上方，走线来说 H310 会更方便一些。另外一个原因就是 Dell 给 H310 提供 HBA 固件。就算不刷 LSI 9211-8i，用 Dell 官方固件也能做成 IT 模式。如果不考虑这两点，Dell PERC H200 或者 Fujisu D2607 可能是更经济的选择。 IT 模式：全称 Initiator Target，就是将硬盘信息和数据完全呈现给系统，板卡不会改动任何信息/数据，也不提供硬件 RAID。 性能差别 前面说了 Dell PERC H310 的每个 SATA 接口速率都是 IO Crest IO-PCE9215-16I 的 4 倍。那么具体使用的时候，究竟有多大的性能差别呢？我针对自己的使用场景做了个 benchmark。 我的使用场景很简单，我有一个 8 块机械硬盘（WD Blue/Green）组建的存储池，其中的虚拟硬盘分为 无复原信息 和 5 柱面 Parity 复原（相当于 RAID5） 两种。 硬盘型号 接口 存取速度 ========================================== WD Blue WD60EZRZ SATA 6Gbps 170MB/s WD Blue WD40EZRZ SATA 6Gbps 175MB/s WD Blue WD40EZRZ SATA 6Gbps 175MB/s WD Blue WD40EZRZ SATA 6Gbps 175MB/s WD Green WD20EARX SATA 6Gbps 110MB/s WD Green WD20EARX SATA 6Gbps 110MB/s WD Green WD20EARS SATA 3Gbps 110MB/s WD Green WD15EARX SATA 6Gbps 110MB/s 另外我还有一个 3 块 SSD 组建的存储池，其中的虚拟硬盘用的 3 柱面 Parity 复原。 SSD型号 接口 存取速度 ================================================================== KINGSTON SA400S37240G SATA 6Gbps 500MB/s (read) 350MB/s (write) KINGSTON SA400S37240G SATA 6Gbps 500MB/s (read) 350MB/s (write) KINGSTON SA400S37240G SATA 6Gbps 500MB/s (read) 350MB/s (write) 注：存取速度来源于官方规格说明。 场景 1：机械硬盘，无复原 因为机械硬盘的瓶颈在硬盘本身的存取速度，所以两块卡的结果都差不多。Dell H310 稍微快一点点。最快速度大概就是 WD Green 的上限（110MB/s）。 场景 2：机械硬盘，Parity 复原 5 柱面 Parity 布局是 4 柱面数据 + 1 柱面校验。理论读取速度应该是裸盘的 4 倍。但是这里跑分只有 3 倍左右，而且两边很一致，看样子除了 PCIe x1 接口以外还有其他的瓶颈。 因为 Parity 复原（RAID5）需要在写入时计算并检查校验信息，所以写入速度会很慢。从跑分中也可以看到写入速度对比无复原时大幅下降。Dell H310 的多线程读取比较好，但是写入速度居然不及 IO-PCE9215-16I。 场景 3：SSD，裸盘 因为 SSD 的高速存取特性，SSD 测试才能真正显示出扩展卡的性能。 不出意外，IO-PCE9215-16I 被 PCIe 2.0 x1 带宽所限，SSD 读取和写入均无法达到满速。而 Dell H310 基本上跟主板原生 SATA 接口性能相差无几。 场景 4：SSD，Pairty 复原 加了 Parity 复原之后，读取性能翻倍了。3 柱面 Parity 的布局是 2 柱面数据 + 1 柱面校验。所以读取性能翻倍完全符合预期。 这一次 Dell H310 仍然跟主板原生 SATA 接口性能一致，甚至略高。 然而在这个测试中 IO-PCE9215-16I 却翻车了。不管是将三块硬盘连到同一个 SAS 接口上，还是分别连到三个不同的 SAS 接口上，IO-PCE9215-16I 都会导致磁盘测试卡死（下图）。 小插曲 其一：SSD 丢失 在我测试 Dell PERC H310 的过程中，还发生了一件意外的事情。 我手上有一块 OCZ Vertex 3 SSD，已经很古老了。之前一直连到主板的 SATA 接口上使用。在做第一轮测试的时候，这块 SSD 突然不见了。而且不管是直连主板，还是接到 IO Crest IO-PCE9215-16I 上，都无法找到这块 SSD。 这时候 Windows 存储空间的 parity 复原就开始发挥作用了。在丢失一块硬盘的情况下，虚拟硬盘依然正常工作，数据没有损失。但是测试用的无复原虚拟硬盘就没那么幸运了，在 SSD 消失之后，无复原虚拟硬盘也无法访问了。 我决定死马当活马医，把这块 SSD 连到了 Dell H310 上。然后这块 SSD 居然神奇地复活了，而且至今依然正常工作。 然而，鉴于这块 SSD 目前处于不稳定状态，所以我又去买了两块 Kingston A400（看评论说这块 SSD 是垃圾，但是便宜啊），才重新组建好存储池，完成性能测试。 其二：Dell H310 刷写固件 在第二块 Dell H310 到货之后，我尝试直接在服务器上刷写 IT 固件（Asus Z97-C 主板）。但是在清除原有固件之后，刷写工具就无法操作 H310 卡了。提示错误如下： Failed to initialize PAL 换到 HP EliteDesk 800 G1 SFF 上面就没有问题，刷写很顺利。只是开机报警提示内存问题，需要拔掉所有内存条，只插一条在 DIMM 1 插槽。 看网上说貌似 换到 UEFI 环境刷写 或者 屏蔽SMBus 可能可以解决这个问题。 总结 经过测试之后，可以看出 Dell H310 的性能表现非常出色，加上二手卡的售价优势，对于家用服务器是一个很好的选择。 其他资料 Marvell 88SE9220/9230/9235/9215 Overview Dell PERC H310 Spec
前些日子重新给笔记本加装了散热硅垫之后，依然时不常地出现六画面现象，而且频繁死机、蓝屏。当时一直认为是笔记本到寿命了。直到前几天在修 Xbox 360 时发现散热硅垫的效率问题，才反应过来，实际上加了散热硅垫反而使问题更加恶化。正好，修理 Xbox 360 时用的散热硅脂还剩一些，干脆给笔记本用上。再次拆开机器，去掉硅垫。但是 DELL 设计的一体化散热片在 GPU 上高度过高，涂硅脂肯定够不到。直接上老虎钳，把支架弄弯，把散热片大概降低 1mm。重新涂上硅脂，一切 OK 了。开机，用手摸了一下，散热器烫手。放一段影片，散热风口开始吹热风。一切正常了。现在正用笔记本写这篇 blog。这个笔记本大概还能再用两年吧。nVidia 显示芯片特写，属于封装门的那一批产品。CPU 特写。科普知识：nVidia 显卡封装门事件：链接（英文）、链接（中文）我的这块显示芯片刚好是 G86-020-A2，属于 G86 系列。不过貌似 nVidia 的最终和解方案只包括 8xxx 系列，我这个 Quadro 系列并不包括在内。等年底再说吧。
刚刚过三年保修，我的 DELL Latitude D630 就开始花屏了。没办法，这一批机器正好赶上 nVidia 移动显卡封装事件，花屏基本上就代表显卡已经报废了。奇怪的是，等机器凉下来之后再开机，图像就恢复正常了。开机一段时间之后，就会过热花屏。死马当做活马医。网上找了个拆机教程开始自己动手。（可惜没拍照片）终于把顶盖全部都卸下来，发现出风口已经积了 1 厘米多厚的灰尘。这个散热管道设计有问题，入风口很大，灰尘什么都会被吸进去；而出风口很小，被吸进去的灰尘都积到出风口附近，严重影响散热。拆散热片的时候发现，散热片设计也有问题。主板上因为 CPU 有底座，所以 CPU 比显卡和主板芯片组要高一些。DELL 的设计是在 CPU 上涂胶状硅脂，在显卡和芯片组上放置硅脂贴，高度刚刚好。时间一长，CPU 上的硅脂已经干了，这还算说得过去。可是显卡和芯片组上的硅脂贴已经脱离芯片，中间的空隙造成散热能力大幅下降。看来过热的主要原因就是这个硅脂贴。问题是找到了，解决起来却很麻烦。Ottawa 这鬼地方没地方卖硅脂贴，但是为了填充 2mm 的空间非得用硅脂贴不可。多亏老婆去公司问了下同事，免费拿了两片回来。这次在粘硅脂贴的时候留了个心眼，贴了两层上去，装上散热片之后，硅脂贴还被挤出来一部分。反正能有助于散热就行了。终于，笔记本起死回生，连续运行半个小时也没出现过热。现将就着用吧，再坏了就买个上网本去。反正现在笔记本只负责在打游戏的时候看攻略。
先介绍一下我的DELL小本的基本状况： 型号：Latitude C640 出厂时间：2002年12月3日 CPU：Pentium 4-M 2.4GHz（P4M的终结版，比较少见的处理器） 内存：出厂配置128MB x 2 = 256MB，后来自己换成512MB x 1 显卡：ATi Radeon 7500 Mobility（M7，也算经典的一款） 硬盘：出厂配置40GB，去年11月份出现坏道，质保更换为60GB可爱的DELL小本跟了我3年半了。其间经历了很多曲折。在上一块硬盘报废之后，小本就一直睡在我的桌子上。只有当我想躺在床上看电影的时候才施展一下它的才华。前几天躺在床上看电影的时候，突然发现硬盘异常。动用chkdsk详细检查，发现又出现了16KB的坏扇区。三年质保已经过了，想换硬盘也不可能了，唯一的方法就是关掉已经损坏的磁盘空间。拿出效率源检测，坏道出现在8%处。动用Partition Magic将坏道独立了出来。猛然间想到，怎么没看到诊断分区？这个硬盘是在上一块硬盘报废之后通过质保更换的。看来DELL在更换硬盘的时候并没有把诊断分区设置好。自己动手，丰衣足食吧。在网上搜索了一些关于诊断分区的文章（还真有好事者去研究这个诊断分区），发现诊断分区有独到的好处： 1、不受分区表限制，即便没有标注为活动（active），仍然可以在启动时按F12键选择启动 2、DELL的诊断工具是基于DOS操作系统的，也就是说可以安装任意的DOS系统在诊断分区，可塑性非常强 3、因为诊断分区设置为隐藏，并且标记为DE（下面会讲到），所以对系统没有任何影响 4、可以将Ghost放入诊断分区，实现系统快速恢复好处这么多，看着都流口水，废话少说，拿出尘封已久的DOS知识开工吧！这里要先提一下DOS操作系统。10年前，在Windows 95还没开发出来之前，没有人不知道DOS是什么东西。那个时候，人们盯着电脑，黑底白字，想着下一个命令语句，那感觉就像现在用Linux。但是，简单的DOS确成就了一批精品软件，PC-Tools、HD-COPY、UCDOS、WPS、CCED等等都是DOS时代的必备软件。后来出现了Ghost和Partition Magic，使得系统维护变得非常简便。现在，我终于要返朴归真，回到浪费脑细胞的DOS时代。在网上找了一下DOS软件下载，还真不少。总结一下，大体上需要以下软件：（有具体需求的话可以自行添加） 1、MS-DOS 7.10，目前为止最稳定功能最强大的操作系统，可以识别长文件名和大容量硬盘 2、DELL Diagnostics Tools，DELL的诊断工具，可以从官方网站上下载 3、Partition Magic for DOS，DOS下的分区管理工具，可以在不损伤数据的前提下自由调整分区大小 4、Ghost for DOS，系统恢复易如反掌同时我们还需要另外几个工具软件来创建诊断分区： 1、Partition Magic，之前已经介绍过了，这里我们只需要Windows部分 2、PTedit，分区表修改工具，Partition Magic的一个附件软件下载回来之后，动手开工： 1、创建诊断分区（若已存在诊断分区则跳过这一步）：使用Partition Magic划出一个30-100MB的分区，格式化为FAT16格式。 2、如需要恢复分区，可以再分出5-8GB，格式化成FAT32或者NTFS （由于我的小本60GB硬盘在8%处出现坏道，所以我给分成100MB + 6GB + 15GB + 30GB，大概损失1GB作为坏道隔离区） 2、使用PTedit将启动分区设置为诊断分区（将Boot Record设置为80，同时将现有的启动分区的Boot Record设置成00）软件下载： 新DOS时代：http://www.cn-dos.net/newdos/dosmain.htm参考资料： Inside the Dell Utility Partition：http://www.goodells.net/dellutility/ DOS扩展工具介绍：http://www.cn-dos.net/msdos71/readmecn.txt