《改造服务器》里面提到 HP 764285-B21 544+FLR-QSFP 10GbE/40GbE 实际上就是定制版的 Mellanox ConnectX-3 Pro 网卡,只是采用了 HP 自己的 FlexibleLOM 接口,无法插到 PCIe 插槽里面直接使用,需要转接。其实已经有前人设计了转接卡,但是估计因为需求太少,没有批量生产。所以只能从 GitHub 下载 PCB 设计,自己去下单定制 PCB。

(实际上我选择了另外一个备选设计

阅读全文 »

不知不觉间,已经在家里组建了三台服务器

  1. 一台运行 Windows 10 Pro 的文件服务器,同时提供 Plex 视频串流
  2. 一台运行 Xpenology 的监控服务器,同时做手机照片备份
  3. 一台运行了各种服务的综合服务器,提供包括智能家居控制、个人网站等等各项服务

这次又按耐不住,开始折腾第四台服务器了。

阅读全文 »

自从服务器换装 Windows 10 专业版之后,大部分存储空间的操作都可以通过控制面板搞定(开始菜单内搜索“storage spaces”)。但是有些细节设置在控制面板里面没有,最典型的例子就是“柱面数量”(Number of Columns)。

本文将会记录一些必须要用 PowerShell 搞定的存储空间操作。

阅读全文 »

之前我曾经写过一篇《家用服务器之网络篇:1Gbps已经不够用了!》,里面提到了使用网络连接聚合(LAG,Link Aggregation Group)把四个 1Gbps 的连接合并成一个 4Gbps 的连接。

但是,最近在做网络调试的时候发现,两台都配有 4Gbps 网络连接聚合的服务器,它们之间的通信速度居然只有约 1Gbps!就算使用 802.3ad LACP 作为聚合方式,最高也只能跑到 1Gbps。后来查了资料,发现网络连接聚合的目的

  1. 并不是加大点到点通信的带宽,
  2. 只是可以增加点到多点通信的能力,
  3. 顺便可以提供备用链路

这与我需要的“增大文件传输带宽”目的想去甚远,于是又寄希望于多通道 SMB(SMB Multichannel)。

阅读全文 »

小米小方可以说是市面上最廉价的家庭安防摄像头。虽然官方固件只支持云端录像,但是仍然有大神做出了 RTSP 固件,让小方可以加入本地安防录像系统。第一代使用 ARM 处理器的小方有 fang-hacks,第二代使用 T20 芯片的小方 1S 有 Dafang-Hacks,但是使用 T20L 芯片的新版小方 1S 却打着“不支持”标签。

其实 T20L 只是 T20 的低配版本,通过调整 Dafang-Hacks,也可以给 T20L 版的小方 1S 刷上 RTSP 固件。

阅读全文 »

1Gbps 真的不够用了吗?或许吧。但是考虑到现在的路由器动不动就 AC1900、AC2600、AC3200,只接一根 gigabit 网线肯定是无法提供那么大带宽的。这时候就需要靠网络连接聚合(LAG,Link Aggregation Group)来提升速度了。原理很简单,一根网线 1Gbps,两跟网线就是 2Gbps,三根网线就是 3Gbps……

服务器当然也可以这样搞。于是最近热衷于淘垃圾的我,又打开 eBay,在垃圾堆里找了一块四口 gigabit 网卡。

阅读全文 »

因为嫌之前用的 Asus Z97-C 上面有太多用不到的 PCI 接口(不是 PCIe),而且仅有的一条 PCIe x16 又没办法分成两个 x8 使用,用来做外部扩展的 Dell H310 只能跑在 x4 模式下面,性能损失较大。于是就去 eBay 买了块很便宜的拆机主板 Asus Z97M/G30AK。

首先这款主板是 mATX 尺寸,机箱里就省出三个 PCIe 插槽的位置可以放 HP SAS Expander 卡。其次这款主板上面的四个扩展槽全部都是是 PCIe,而且可以把 x16 分成两个 x8 使用。完美符合我的需求。

但是,有个问题,这主板的 BIOS 没有 NVMe 支持,也没有内置 SLIC(很怀疑之前机器上怎么装的 Windows)。于是,只能通过修改 BIOS,至少加入 NVMe 支持。

阅读全文 »

经过几年的积攒,服务器的硬盘位终于塞满了。于是再扩展硬盘位就变成了一个问题。

之前一直靠 USB 3.0 外置硬盘盒,但是每个硬盘位都需要至少 $20 扩展成本(买硬盘盒)。而且连接速度和稳定性也不够理想,在将外置硬盘加入存储池时也会遇到各种各样的问题。

直到发现 HP SAS Expander 这块扩展卡之后,这个问题终于能得到比较可靠的解决方法了。(关于扩展卡,详见我之前的文章《家用服务器之存储篇:大规模存储背后的简单实现》)

因为自己拼装一个硬盘架需要各种零件,各个订单的到货时间也都不一样,这将会是一个持续得比较久的工程,所以本文将尝试采用更新记录的方式,边做边更新,看看需要花费多长时间,进行多少尝试,才能完成这么一个硬盘架。

阅读全文 »

上一篇《家用服务器之存储篇:选择SATA/SAS控制卡》里面推荐了 Dell PERC H310 这款 SAS/SATA 控制卡。但是一块 Dell H310 只能接 8 块硬盘,两块 Dell H310 加上主板上的 SATA 接口一共能接 20 块硬盘。那么如果多于 20 块硬盘呢?如果以后还要扩展外置存储呢?

接下来我就要再介绍一个实用的 SAS Expander 扩展卡。

阅读全文 »

之前家里的服务器一直用着破烂 AMD 推土机架构的 FX-6100,早就看着不爽了,于是这次趁着全家电脑升级,将服务器也升级到四代酷睿。同时也针对服务器最重要的存储部分做了一次彻底的升级。

其实,在此之前,家里服务器陆陆续续用过不少存储方案。本文将记录各种我使用过的存储方案,并一一分析其中的优缺点。

阅读全文 »

Update 2019/05/26: 由于服务器已换装 Windows 10 做系统,本文将不再更新,缺失的屏幕截图也不会补上。

服务器上的硬盘越来越多,数据也存放得越来越乱。不仅出现了数据跨盘,在硬盘出现问题的时候也容易丢数据。自从发现了 Windows Server 的 Storage Spaces 功能之后,便琢磨将硬盘做成阵列,由系统控制,然后在上面搭建虚拟磁盘,或许是一个很好的解决办法。

无奈 Windows Server 2012 的 Storage Spaces 功能太有限,于是就更新到了 Windows Hyper-V Server 2016。至于原因嘛,

  1. 最小化系统,轻便。
  2. 原生支持文件共享(SMB/CIFS),其他机器可以直接访问数据。
  3. 可以用 Hyper-V 搭载 Linux/Android 等等虚拟机。
  4. (最重要的)免费!

阅读全文 »

之前试用了一下 ArduCam Multiple Camera Adapter,基本上实现了一个 Raspberry Pi Zero 拖四个摄像头。但是缺点也是显而易见的:

  1. 贵!这个多摄像头转接板在 RobotShop CA 上面卖 $64.99+tax。
  2. 慢!每个摄像头拍一张照片大概要 5 秒,四个摄像头只能顺序拍摄,不能同时拍摄

于是,想出一个念头,能不能用 Pi Zero Cluster 来代替这个转接板呢?

阅读全文 »

Windows Server 2012 服务器出现这个问题有一段时间了,具体来讲就是一个应用程序打开了服务端口,绑定地址 0.0.0.0 (所有网络接口),防火墙入站设置正确,端口可以通过 localhost 或者 127.0.0.1 访问,但是无法通过局域网 IP 访问。

然后把端口改到 50000 以上又可以访问了。

今天跟这个问题较上劲了,一点一点改端口,然后发现 47000 以下基本上都无法访问,47001 就没问题了。顺着这个线索找到了故障的根本原因:DirectAccess/WinNat 默认占用 6001-47000 端口,用来做 IPv6-to-IPv4 转换

解决起来也很简单,重新分配一下 WinNat 占用的端口就好了。

Set-NetNatTransitionConfiguration -IPv4AddressPortPool @("192.168.1.100, 10000-47000")  

或者干脆卸载 DirectAccess(远程访问角色)。


多说几句,自从使用了 Raspberry Pi(后来改用 Orange Pi)来做家里的 DHCP/DNS/VPN 服务器,家里网络比之前灵活多了。Windows Server 2012 安安心心做文件服务器,各取其所长,各司其职,网络问题也少了很多。

虽然 root 掉了 OnHub,但是目前只能 telnet 进去。进去之后发现 OnHub 真是贫瘠,里面可以说是一穷二白,连个 GCC 都没有。

在网上找了个 ChromebrewGitHub),但是 OnHub 本身没有 xz,也没办法解压那些软件包。

于是问题变成了怎么样安装 xz,毕竟 OnHub 上连 GCC 都没有。

于是顺着 Chromebrew 找到了 chrome-cross,这个专门交叉编译 Chrome OS 软件包的项目。于是,拿来主义,fork 之后加上了 xz。

再之后就顺利多了。Chromebrew 用了 OnHub 上没有的 wget,解决办法就是 fork 之后用 curl 代替 wget。

把这些七七八八的都修改好之后,终于可以往 OnHub 里面安装软件包了。

export LD_LIBRARY_PATH=/usr/local/lib
crew install buildessential
crew install nano

传统的家庭网络

家庭上网,一般都是通过 ISP 的猫(modem)和一个路由器,这种传统已经维持了十几年,只不过是从十几年前的有线路由器演变成了后来可以提供 WiFi 的无线路由器。现在有些 ISP 会在自己的猫里面内置 WiFi,从而节省一台设备。但是 ISP 的猫性能参差不齐,所以像我这种比较在乎性能的人,一般都是将猫设置成桥接模式,然后使用自己的路由器。

但是 IoT(物联网)时代,联网设备增多,而且分散在家里各个角落,这对网络布设提出了新的要求。

  • 可以同时管理大量设备
  • 很大的无线信号覆盖范围
  • 足够的网络吞吐量

一般来讲,放置无线路由器的最佳地点是在房子的正中央。但是考虑到 ISP 的入户线路一般都在家里的一侧,这也限制了无线路由器的位置,家里很容易出现无线信号死角。比如说我家里,猫和路由器(Netgear R7000)就放在了房子的一个角上,房子对角线位置就是一个无线网络死角。这时候信号扩展产品就应运而生了。

WiFi 信号扩展器和接入点(AP)

要扩展 WiFi 信号,方法无外乎两种。要么用 WiFi 信号扩展器延展覆盖范围,要么干脆再加一个接入点,专门服务死角区。但是两个方法都有问题。WiFi 信号扩展器会影响无线网络性能,如果家里有需要高带宽的设备(如高清摄像头),比较好的办法是再加一个接入点。

所以,之前我买了一个 Google OnHub 拿来做接入点使用。但是在系统更新到 9000 版本之后,OnHub 的信号突然变弱了。我猜想可能是因为 Google 推出 Home 无线套装,为了让各个节点之间不互相干扰,人为降低了主路由器的传输功率。当然这只是猜测。不管怎么样,Google OnHub 的覆盖范围变小了。于是我就又尝试了几个接入点,都不尽人意。而且作为主路由器的 Netgear R7000 也出现短板。

家里面各式各样的设备林林总总加起来几十台,为了管理方便,我把设备分类,按类别给设备分配好了 IP 地址。但是 Netgear 路由器的最多才能预留 64 个 IP 地址(IP Reservation for DHCP),实际要分配 IP 有 77 个之多,现在主流三大厂商(Linksys、Netgear、D-Link)的设备都无法管理这么多 IP 分配。

我尝试将上古时期的 Netgear WNDR3700 刷上 DD-WRT 来绕开 64 个地址的限制,但是第三方固件就是第三方固件,运行不稳定,而且经常网络卡壳。我觉得有可能是硬件太老,拖不动这么庞大的网络,于是我又开始找商用路由器。

将设备放在正确的位置

商用路由器毕竟还是贵。我突然想到,Google OnHub 到底能预留多少个 IP 呢?

于是我将 Google OnHub 和 Netgear R7000 调了个位置,由 OnHub 当主路由器,R7000 作为接入点。果然,R7000 的功率相当强,覆盖整个房子没有任何问题,就连地下室角落里的摄像头都能流畅传送视频数据。而 OnHub 虽然在操作上比较麻烦,但是也顺利地加入了 70 多个预留地址。这样省了买商用路由器和商用接入点。

Google Onhub 的问题:

  • 不能关掉无线网络
  • 要预留 IP 地址,必须要设备联入网络才行,不能手工输入 mac 地址
  • 端口转发只能一个端口一个端口设置,不能设置端口范围转发
  • 不能设置子网网段,必须用 192.168.86.x
  • 不能设置 OnHub 的 IP 地址,必须用 192.168.86.1
  • 遇到过一次 DNS 停止工作(设置的是“使用 ISP 的 DNS 设置”)
  • 端口转发不靠谱,设置完之后不会立即生效

网络规模究竟能达到多大?

这个问题不好说。尤其是 IoT 时代,如果每个插座、每个开关都接入网络,并且都要分配 IP 的话,网络节点规模和数据规模就不是现在这些设备能处理的了。无线设备多了不仅会互相干扰,还会互相抢占传送时段,拖慢整个网络。有线设备增加则需要更精确的流量控制,使网络资源在各类设备之间达到平衡。

总之,十几年前的“一个路由器搞定一个家庭网络”的时代基本上已经结束了。如果要更好地优化家庭网络,不仅要增加接入点扩展网络覆盖,而且需要换一个更强劲的路由器来管理网络才行。