最近一直在折腾完全虚拟化的家庭服务器,其中虚拟 Xpenology 一直是一个头疼的问题。按照 Xpenology 论坛给出的虚拟化安装方式,将 loader 做成一块 SATA 硬盘挂载,结果就是在系统更新的时候总会出现代号 13 错误(安装包已损坏)。

另外一个解决方案,先制作实体 USB 启动盘,然后在 ESXi 中将 USB 直通给 Xpenology 虚拟机。但是还要在机器上插一个 U 盘太麻烦,遇到 U 盘故障的话,恢复系统也是一个麻烦事。如果能虚拟 USB 启动盘就好了。但是,ESXi 虚拟机设置里面并没有虚拟 USB 存储设备的选项。

设置页面里面没有,不代表不能做!

阅读全文 »

《改造服务器》里面提到 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