最近,给当台式服务器一样使用了两年的 ThinkPad 做了存储升级和数据迁移,对硬盘也做了额外的散热处理。

本篇文章里,我们分享下相关的经验和思考,希望能够帮助到有同样诉求的你。

写在前面

本文的“主角”是一台 7x24 小时使用了两年的 ThinkPad,8C16T,64G RAM,运行着许多容器服务。

关于这台机器,在两年前《廉价的家用工作站方案:前篇》一文中,分享过我为什么会购置这台设备,以及这类设备相比于台式机、甚至是在云服务商处租用服务器的成本的对比中超高的性价比。当然,也提到了一些需要妥协的地方。

如果你也希望家里有一台成本比较低(目前 1~2 千元主机成本)、核心数多适合虚拟化,长时间开机功耗较低(整机不超过 45w),不畏惧突然断电(自带“UPS”),体积小巧方便携带,发热不多运行安静的设备,或许也可以考虑这个方案。

目前它已经持续运行了两年又一个季度,在这次升级硬盘,强化散热之后,不出意外,将会继续运行下去。

接下来,我们先聊聊升级存储时,选择固态型号和品牌的问题。

选择升级使用的固态硬盘

目前市场上固态硬盘经过一轮混战后,硬盘容量普遍变的更大,价格变的相比较前几年,合理了许多。

除了价格和纸面性能的差异之外,我们其实还需要关注数据安全的问题,即硬盘质量

新硬盘,致态 TiPlus 5000

综合考虑,我选择的依旧是致钛(致态)的硬盘。

和两年前的观点一样,在做好数据备份、硬盘散热的问题下,我个人认为使用问题不大,不太会出现恶劣的数据丢失问题。希望时间会站在我希望的这边。(最不济就是找京东提供售后,哈哈。)

了解 SSD 常见问题:掉盘

不论是海外的老牌厂商,还是国产新锐,目前都会面临硬盘读写中温度提升直至过热的问题,而过高的温度可能导致的各种问题,其中最常见的问题便是:掉盘

当硬盘的工作温度达到硬盘固件设置的最高温度后,为了保证硬件安全,固态硬盘可能会选择自动断电,避免温度进一步升高。

而自动断电,则会造成还在和硬盘交互的程序、操作系统的崩溃,网上能够看到的问题,多数都是因为硬盘主动或被动断电造成的,少数是主控或者其他的电子元件出现了损坏。

当固态硬盘断电之后,很有可能会造成 SSD FTL 的损坏,一般情况下,SSD 掉盘后,我们静止半个小时,硬盘都有可能能够自动修复。

偶尔的断电,可能也没啥,但如果损坏,盘里的数据就需要专业数据恢复人员介入了,这将是一笔不小的费用。

所以,尽量保持硬盘在合理温度运行,减少和避免硬盘掉盘就很重要啦。

选择合适速率的硬盘

不论任何厂牌的硬盘,速度越快的硬盘,一般情况下温度越高,PCIE 3.0 和 PCIE 4.0 的硬盘,满速运行,温度可能差十几度,甚至更多,结合设备的环境温度和散热情况,十几度很有可能就触碰到了硬盘自动断电的标准了。

所以,不要怀着“我的设备接口是 PCIE 4.0,我使用 PCIE 3.0 就亏了”的心态来选择硬盘。而是根据你的实际情况来选择。

如果你的设备就只是支持 PCIE 3.0(比如本文中我这台),那么选择 PCIE 3.0 的 SSD 将更明智,除非 PCIE 4 的硬盘的价格远低于 PCIE 3 的硬盘搭载对应的散热装置。

选择合适类型的硬盘

硬盘按照有无缓存分类,可以分为有缓存的硬盘盒无缓存的硬盘。

如果你需要持续的读写,最适合你的硬盘是有缓存的硬盘,包括过去几年常占据销售榜首的三星的很多款旗舰硬盘都是这个方案。

不过,但凡技术方案都有利有弊,有缓存的硬盘会造成硬盘温度提升,以及突然断电情况下的数据丢失(还未从缓存写会硬盘)。我个人观点是还不如不写入磁盘,起码之前的累积的数据是干净、完整的。

如果你选择的是带缓存的硬盘,推荐寻找缓存外读写速度比较稳定的硬盘,这一般说明了硬盘颗粒质量和主控程序都比较棒,值得你托付数据给它。

除了选择合适的硬盘,减少硬盘工作时发热量之外,还可以进行主动散热改造。

硬盘散热改进

硬盘安装非常简单,我们自然不需要多赘述。

但是散热的处理,有必要说道说道,因为目前的散热方式有许多种,我个人实践下来最靠谱的是:加装铜片,能装多厚装多厚

完整流程如下:

加强 SSD 硬盘的散热

我选择的是佳翼的散热片,其中最厚的铜片有 2mm 厚,搭配两种厚度不同的导热硅片,让硬盘的颗粒和主控都能够将热量传导给铜片。

因为铜片比较沉,这里需要借助硅胶圈将铜片、导热硅片、硬盘紧密的套在一起。

如果你的主板硬盘位置处也贴了导热硅片,为了避免长时间不平整摆放,让硬盘形变,产生意料之外的问题,可以考虑对主板硬盘位置上的硅片进行裁剪,避免硬盘料板受到硅胶圈和硅片叠加起来的凸起位置的额外支撑力。

安装完毕,自然也要用实践来检验下效果。

硬盘运行状态

在室内 28 度左右的环境下(模拟夏天室内无空调),机器正常运行起来后,先查看硬盘在轻度读写后的状态:

smartctl -x /dev/nvme0n1

命令执行完毕后,能够看到十分惊艳的数据:

smartctl 7.2 2020-12-30 r5155 [x86_64-linux-6.2.0-26-generic] (local build)
Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Number:                       ZHITAI TiPlus5000 2TB
Serial Number:                      ZTA22T0KA23231053W
Firmware Version:                   ZTA10613
PCI Vendor/Subsystem ID:            0x1e49
IEEE OUI Identifier:                0xa428b7
Total NVM Capacity:                 2,048,408,248,320 [2.04 TB]
Unallocated NVM Capacity:           0
Controller ID:                      0
NVMe Version:                       1.4
Number of Namespaces:               1
Namespace 1 Size/Capacity:          2,048,408,248,320 [2.04 TB]
Namespace 1 Formatted LBA Size:     512
Namespace 1 IEEE EUI-64:            a428b7 00608b0083
Local Time is:                      Mon Aug 28 21:28:38 2023 CST
Firmware Updates (0x1a):            5 Slots, no Reset required
Optional Admin Commands (0x0017):   Security Format Frmw_DL Self_Test
Optional NVM Commands (0x001f):     Comp Wr_Unc DS_Mngmt Wr_Zero Sav/Sel_Feat
Log Page Attributes (0x02):         Cmd_Eff_Lg
Maximum Data Transfer Size:         128 Pages
Warning  Comp. Temp. Threshold:     90 Celsius
Critical Comp. Temp. Threshold:     95 Celsius

Supported Power States
St Op     Max   Active     Idle   RL RT WL WT  Ent_Lat  Ex_Lat
 0 +     6.50W       -        -    0  0  0  0        0       0
 1 +     5.80W       -        -    1  1  1  1        0       0
 2 +     3.60W       -        -    2  2  2  2        0       0
 3 -   0.0500W       -        -    3  3  3  3     5000   10000
 4 -   0.0025W       -        -    4  4  4  4     8000   45000

Supported LBA Sizes (NSID 0x1)
Id Fmt  Data  Metadt  Rel_Perf
 0 +     512       0         0

=== START OF SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

SMART/Health Information (NVMe Log 0x02)
Critical Warning:                   0x00
Temperature:                        26 Celsius
Available Spare:                    100%
Available Spare Threshold:          1%
Percentage Used:                    0%
Data Units Read:                    318,070 [162 GB]
Data Units Written:                 797,271 [408 GB]
Host Read Commands:                 1,354,986
Host Write Commands:                1,401,292
Controller Busy Time:               6
Power Cycles:                       8
Power On Hours:                     14
Unsafe Shutdowns:                   2
Media and Data Integrity Errors:    0
Error Information Log Entries:      6
Warning  Comp. Temperature Time:    0
Critical Comp. Temperature Time:    0
Temperature Sensor 1:               26 Celsius
Temperature Sensor 2:               28 Celsius

Error Information (NVMe Log 0x01, 16 of 64 entries)
No Errors Logged

硬盘 SMART 报告中,硬盘温度只有 26 度。

如果我们使用文章《NUC 折腾笔记 - 储存能力测试》中的方式,对 SSD 进行顺序的 10G 高速读写,模拟重度任务:

dd if=/dev/zero of=./ddfile bs=1M count=10240 oflag=direct && sync
time sh -c "dd if=./ddfile of=/dev/shm/ddfile bs=1M count=10240";
rm ./ddfile;

等待大概 10 秒左右,10 GB 数据的密集读写就完成了:

10240+0 records in
10240+0 records out
10737418240 bytes (11 GB, 10 GiB) copied, 4.24984 s, 2.5 GB/s
10240+0 records in
10240+0 records out
10737418240 bytes (11 GB, 10 GiB) copied, 6.76668 s, 1.6 GB/s
sh -c "dd if=./ddfile of=/dev/shm/ddfile bs=1M count=10240"  0.00s user 5.69s system 84% cpu 6.770 total

此刻我们再次查看硬盘温度:

=== START OF SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

SMART/Health Information (NVMe Log 0x02)
Critical Warning:                   0x00
Temperature:                        34 Celsius
Available Spare:                    100%
Available Spare Threshold:          1%
Percentage Used:                    0%
Data Units Read:                    339,044 [173 GB]
Data Units Written:                 818,337 [418 GB]
Host Read Commands:                 1,375,545
Host Write Commands:                1,434,988
Controller Busy Time:               6
Power Cycles:                       8
Power On Hours:                     14
Unsafe Shutdowns:                   2
Media and Data Integrity Errors:    0
Error Information Log Entries:      6
Warning  Comp. Temperature Time:    0
Critical Comp. Temperature Time:    0
Temperature Sensor 1:               34 Celsius
Temperature Sensor 2:               35 Celsius

温度只提升了不到 10 度,笔记本风扇也“没有反应”。稍等五分钟,再次查看硬盘状况,会发现温度快速下降到了 30度。

总的来说,效果还是非常明显的。

数据迁移

因为这台设备是 AMD 设备,从“物理上”最快的数据传输方案是使用硬盘盒对拷数据。不过,考虑到系统和应用运行过程中,会有许许多多的缓存,这些不必进行迁移的数据。

所以,我选择的是使用“操作系统层面”的“软的”命令来进行数据转移。

在《MacBook 与其他设备的低成本高性能数据传输方案(一)》、《MacBook 与其他设备的低成本高性能数据传输方案(二)》两篇文章中,我提到过一种便宜的数据传输方案,使用 2.5G 网卡 & 网线进行数据传输,正好可以用在本文的 AMD 芯片设备的数据传输中,感兴趣的同学可以自行翻阅,这里就不做展开啦。

最后

虽然最近还在折腾模型相关的东西,趁着做落地相关的空闲,抓紧升级下这台设备的硬盘,希望后续可以借助模型更高效的整理个人的知识库,尤其是多模态的内容(不局限于文本)。

当然了,除了升级维护老设备之外,我也加购了几台完全不同的设备,用于一些更好玩的场景,后续慢慢分享出来。

最后的最后,关于这块硬盘和这个散热模式的验证,还需要更多的时间,且给时间以耐心。

–EOF