分类 玩物益智 下的文章

前言

自从撸上软路由后,一直使用ROS作为家庭网络的骨干路由系统。近期由于搬家,需要对网络重新部署。ROS 自然成为部署主路由系统的首选。为便于管理和节省连通距离,此前一直使用 ALL IN ONE 模式部署相关服务系统,ROS 以虚拟机模式运行在 NAS 中。虽然管理方便,但是稳定性容易受到母鸡影响,导致整个网络瘫痪,家里连普通的上网都受到影响。因此,在部署新网络环境时,我优先考虑把 ROS 独立出来,首选方案是硬件 ROS 设备。

购入RB450G

宽带只有300m,接入需求不大。此前使用虚拟机跑ROS,只分配1C256M资源,从来没有出现过性能瓶颈问题,因此主观地认为,简单的家庭网络响应对 ROS 并不会形成网络瓶颈。 基于这些预设前提,我在海鲜市场花了100 多入手了一台二手RB450G,带 L5 授权的 4 口千兆硬件软路由。

RB450G

把光猫切换到桥接模式,使用 ROS 进行拨号,链接好像都正常,但是刷视频什么的总感觉有点卡卡的。进行简单网络测速,300m 的宽带,运营商测速结果为 100m 左右,速度不达标!刚开始还以为更换设备时候不小心把光纤折弯过出现了线损的情况。后来直接用光猫拨号测试,结果是速度正常,所以判定问题出现在内部网络。于是我把开发商预埋的网线全部换成 Cat6A ,重新再测速,结果还是一样。因此,问题就落在 RB450G 身上了。

友华WR330刷ROS

为确认网络瓶颈是否真由RB450G引起的,我决定做个对比测试。此前,我 30 块收到个江湖号称“刷机小王子”的路由器:友华WR330,正好它能刷 ROS。因此,轻松地完整抄袭了恩山大神的作业,把 ROS 刷进去,并申请了个免费的 L1 授权。

RB450G硬件信息

友华WR330硬件信息

从配置信息不难发现,两个设备是不同时代的产物,CPU 性能应该差别巨大。

测速

使用 ROS 自带的带宽测试工具进行测试。该功能是通过两个 ROS 系统进行链接,测试两设备间的性能和网络状况,有点类似 iperf3。
友华WR330连RB450G测试结果
从结果可知,WR330连RB450G,带宽只能去到 338Mbps,此时其 CPU已经被完全占用,相反 WR330 只占用一半左右,而且只是使用单收或单发模式,如果使用同时收发模式测试,速度只去到几十 Mbps。换 RB450G 连 WR330,速度就只剩 100Mbps 左右。上面的结果很好地解释了为何刷视频会出现一点卡卡的感觉,因为流量峰值出现的时候,RB450G遇到运算瓶颈。

为印证上面的结论,我还专门爬了一下ROS 论坛的信息,发现果然在2013 年已经有大佬提过类似问题,而官方人员回应答案是 :RB450G 实际应用建议的带宽是40-50MBps(约为320-400Mbps),对于超过这个数值的需求,建议更换性能更好的设备……啊,屈指一算它已经是十多年前的产品了。

官方建议的应用范围

问题与解决方案

基于前面的测试结果,我把 WR330 更换掉 RB450G,再次进行网络测试,结果和光猫拨号相近,速度达标。
测速结果

作为主路由,L1 授权功能太少,单独购买其他等级授权确实负担不起。想来想去,还是回到虚拟机那条老路了,毕竟性能和授权都不是问题。

这个坑同时教育了我:捡垃圾,要做好功课。不然,还是花钱走正规途径省时间。


家里使用的NAS是DIY的All In One主机,母鸡是PVE(Proxmox Virtual Environment)。

为便于管理和维持良好的独立性,我把主要的Docker服务部署在基于PVE虚拟机的开源NAS系统OMV(openmediavault)上。由于计划赶不上变化,原先给OMV预分配的磁盘空间已经耗尽,以致web管理页面也无法登录,只能通过ssh方式管理。为解决这个问题,在保数据的前提下,从母鸡分配磁盘空间进行扩容已是唯一选择。

原本以为扩容操作可以直接通过PVE的web管理页面便能轻松实现(我部分虚拟机确实是这样)。但是,OMV这个情况和我预想的还是有点偏差,扩容后的空间无法合并到根目录上。具体原因是部署OMV时,我使用安装方式为虚拟机IOS镜像直读模式。从win32开始遗传的电脑使用习惯(安装直接点“下一步”)安装的OMV,自然自带swap分区。由于swap分区的存在,导致pve扩容的空间无法和原来OMV磁盘组成连贯分区,无法实现根目录扩容的目的。网上清一色的教程均为简单的独立分区无损扩容,并没有提及这种带其他分区的磁盘该如何扩容。因此,我写下这个笔记供后续遇到类似需求的朋友作为参考,避免踩坑。

存在swap分区的PVE虚拟机磁盘如何扩容?

母鸡扩容

母鸡扩容的方法很简单,可通过PVE的Web管理系统->目标主机->硬件->选定目标磁盘->操作菜单:磁盘操作->调整大小,给你目标的主机设置需扩容的磁盘空间。

扩容操作

信息确认

通过ssh工具访问OMV,查看磁盘的基本情况。

PS:本例子使用的磁盘均为sda

$sudo parted /dev/sda 'unit s print' free
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sda: 14336000s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start      End        Size       Type      File system     Flags
        63s        2047s      1985s                Free Space
 1      2048s      10485759s  10483712s  primary   ext4            boot
        10485760s  10487805s  2046s                Free Space
 2      10487806s  12580863s  2093058s   extended
 5      10487808s  12580863s  2093056s   logical   linux-swap(v1)
        12580864s  14335999s  1755136s             Free Space

如上面shell信息所示,sda1被扩容的空间在磁盘分区的最后,中间隔着一个swap分区,这样扩容的空间是无法直接分配到sda1上。

如果要实现无损扩容必须把swap分区删除,然后把sda1扩容后再重建swap分区。

第一步,关闭swap分区

$ free -h
              total        used        free      shared  buff/cache   available
Mem:           992M         52M        464M        3.2M        475M        784M
Swap:          1.0G          0B        1.0G

通过free命令查看swap是否存在占用,如果没有,直接关掉;如果有,可以尝试重启下该虚拟机。

$sudo swapoff /dev/sda5

第二步,重新配置分区列表

$sudo fdisk /dev/sda

(注意: 假如你的虚拟机磁盘初始扇区是63而不是2048, 你需要在fdisk命令后面增加一个参数 -c=dos)

参考下面的操作步骤删除swap分区和重建分区列表。

PS:本操作虽然是无损扩容,但数据无价建议有条件的一定要先备份数据!!!

Welcome to fdisk (util-linux 2.27.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Command (m for help): p
Disk /dev/sda: 6.9 GiB, 7340032000 bytes, 14336000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x9e11c6df

Device     Boot    Start      End  Sectors  Size Id Type
/dev/sda1  *        2048 10485759 10483712    5G 83 Linux
/dev/sda2       10487806 12580863  2093058 1022M  5 Extended
/dev/sda5       10487808 12580863  2093056 1022M 82 Linux swap / Solaris

Command (m for help): d
Partition number (1,2,5, default 5): 2

Partition 2 has been deleted.

Command (m for help): d
Selected partition 1
Partition 1 has been deleted.

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-14335999, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-14335999, default 14335999): 12242941

Created a new partition 1 of type 'Linux' and of size 5.9 GiB.

Command (m for help): n
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (2-4, default 2): 2
First sector (12242942-14335999, default 12242944):
Last sector, +sectors or +size{K,M,G,T,P} (12242944-14335999, default 14335999):

Created a new partition 2 of type 'Linux' and of size 1022 MiB.

Command (m for help): a
Partition number (1,2, default 2): 1

The bootable flag on partition 1 is enabled now.

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Re-reading the partition table failed.: Device or resource busy

The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8).

这部分有两个地方需要注意的:

1、sda1扩容后的总大小必须是整个磁盘减去swap分区的大小,我上面的例子sda1就是: 14335999-2093058=12242941

2、fdisk分区使用‘a’命令是用来激活主分区,这个一定要重新激活。

第三步,重载分区列表

这里使用到的是partprobe,OMV是基于Debian的,默认应该安装了,如果没有安装请自行搜索安装方法.

$ sudo partprobe

第四步,重新扫描磁盘容量

使用resize2fs命令对sda1进行扩容有重扫描容量。

$ sudo resize2fs /dev/sda1
resize2fs 1.42.12 (29-Aug-2014)
Filesystem at /dev/sda1 is mounted on /; on-line resizing required
old_desc_blocks = 3, new_desc_blocks = 10
The filesystem on /dev/sda1 is now 38833617 (4k) blocks long.

第五步,重新配置swap分区

因为fdisk对ext4扩展分区支持不足,建议使用cfdisk进行重新配置swap分区。

$ sudo cfdisk
            

选择sda2分区,转换成82 Linux swap / Solaris类型并保存。

第六步,重新激活swap分区

$ mkswap /dev/sda2
/dev/sda2
UUID=d58bf1cb-d27a-487d-b337-056767fd5ad6 none swap sw 0 0

记下上面的UUID。

用命令行重新激活swap分区。

$ swapon /dev/sda2

通过命令把上面的UUID修改到fstab中

$ sudo nano /etc/fstab
# swap was on /dev/sda5 during installation
UUID=d58bf1cb-d27a-487d-b337-056767fd5ad6 none            swap    sw              0       0

确保没有问题后,重启虚拟机。

至此,无损扩容工作便全部完成。

祝你好运!


入手Chromebooks

前段时间在黄鱼闲逛时,捡到台价格还凑合的Chromebooks,型号是Pixelbook 2017,典型的洋垃圾。试用几天ChromeOS后,感觉它就是个带键盘的大号平板电脑。为提高使用率,决定把它安装Winodws系统。不过遇到了些麻烦,我手上这台机器没有解固件锁。

解锁需求

经过一翻查阅资料,得先解锁(解CCD和WP),然后再刷BIOS,最后再安装系统。看着这么复杂的流程,又得折腾起来。

机器是使用Cr50加密芯片锁定。查阅Chromebooks专门站了解到,目前只有两个方法解锁:1,硬件拆解,断开电池,自动解锁;2,使用调试数据线SuzyQable进行软解锁。

由于最近比较手残,所以就不打算动手拆解设备,因而选择第2种数据线的方式。由于这线实在太冷门,首富家居然没有卖成品线的。不过,在黄鱼上找到2家有售。好家伙!一条USB线居然要60多块。

DIY准备

面对这么高昂的售价,我实在下不了手。于是查阅官方文档有提示DIY这种数据线的方法。原来这线的构造非常简单,需要的电子元件仅仅2个电阻(22 kΩ 和 56 kΩ 各1个)。刚好我元件箱里面有这些现成的电阻,只需要花几块钱买个Type-C测试板按照官方指引的链接方法焊接起来就是一条传说种的SuzyQable。以我手残破坏无数电器积累起来的焊工经验,焊接这个数据线应该是“湿湿碎”的事情。一不做二不休,马上上马!

Type-C和USB-A连线对应关系图

深水宝陷阱

Type-C测试板下单后第二天便收到。我迅速按照文档接线图进行焊接,同时用万用表测试各线路连通性无误后,插上Pixelbook,直接死机!能导致这种情况,大概率是:线连错了!而且,是电源线错接。于是我反复和文档核对接线正确性,依然没有发现任何错误。两个个简单的元件组成的电路图,居然就不成了?

实在不甘心!在百思不得其解的时候,我无意看到Type-C测试板卖家页面的样图和我手上收到的印文不一样。

卖家样品图

实际到货图

NMP,我到手的Type-C测试板印文居然是印刷错误的,和正确的刚好相反。VCC 5V居然接到了D+引脚上。这种错误接线方法链接的后果只是重启,这已经是最幸运的结果。严重的情况,直接把南桥或者CPU带走。这些商家真是丧心病狂!

Type-C引脚定义(24Pin)

发现问题后按照正确的Type-C引脚进行焊接,特意用一个老手机接上测试没有挂后,再接上Pixelbook测试,顺利通过USB识别Pixelbook设备。

DIY成功

DIY成品

焊工不如别人的好😄,刚好多买了几块Type-C测试板,可以做多几条,成本大概4块钱。折腾成功,省了几十块。

SuzyQable


自前年损坏一个块500G的BT中转盘后,一直没有购入新硬盘。用缓冲方法被我一拖,就拖足2年时间,看来这个应该是妥妥的伪需求。

前几天在pdd买东西的时候,系统推荐个硬盘给我:紫盘,3T价格是150块,50块/T。这两年因为磁盘不足而浪费的文件整理时间,已让我内心心生不忿。如果有个机会只要150块便能解决问题,我又怎能错过呢?虽然心里盘算这个价格大概率遇到的是清零盘。但是价格摆在面前,难以让人不心动。

简单看看评价,还算凑合。卖家誓旦旦表示:硬盘是全新库存盘,只是当年消耗不及时,留下来,起码有95新。我内心虽然有所顾忌,但是看在价格和紧迫感的份上还是选择下单。

物流很快,第2天就收到。这个时间我以为是发自深圳,想不到是湖北。打开快递包装,硬盘封包虽然是传统硬盘防静电胶袋,但封口位置明显是二次封装的。主板上有商家店保封签,检查厂家标签表面有划痕、电路板新旧程度并没有商家描述那样95新。生产年份居然是2015年,比我其他硬盘还要老一点,潜意识觉得要翻车。

硬盘特写

3T清零盘

硬盘合照

查看金手指位置,有比较明显的插拔痕迹。

金手指特写

和商家联系,其表示每块硬盘发货前都会通过MHDD检测,确保没有坏道和其他故障才发货,金手指插拔痕迹就是测试过程所致;至于表面的划痕也是由于贴标等原因不小心导致。同时也表示如果我不喜欢可以退货,但运费要算我的。省外快递普运费用应该也要12+,综合可能存在的其他不确定因素,还是选择不退货,先上机看看。

硬盘smart信息.png

查看S.M.A.R.T信息,各项指标都非常漂亮,和新盘没有区别。结合外观,大概率是清零盘。全盘扫描,没有发现坏块。最终,权衡利弊后还是决定把这个盘留下,作为BT中转盘使用。不过通过这种野路子买到的硬盘,安全性和稳定性肯定是无法保障的。看来还是要狠下决心制定屯银子计划,通过正规渠道购买有质量保障的硬盘。


最近家里的网络故障较高,直接原因是由于NAS主机死机导致的。我家网络目前使用软路由管理,也就是俗称的All In One模式。

排查问题

当前网络拓扑结构大致情况(目前尚为千兆模式)可以参考下图:

家居网络拓扑图

实现网络接入的硬件是2020年DIY的一台NAS主机,网络的拨号和路由功能都集中在NAS的虚拟机中完成,这种模式好处是可以统一管理,最大化资源的应用。坏处也很明显,某个环节故障即会导致整个网络瘫痪。

近期NAS频繁死机,检查日志推测应该是主板出现了故障。可能是散热问题导致,也可能是各种奇怪的原因。该主板是从黄鱼上收入的二手产品,估算使用年限也差不多到了。综上原因,我把原来万兆网络的计划重新提上了日程。准备更换当前NAS主要部件,并为万兆局域网布局做最后的准备。

升级配置

升级配件前后对比

主要配件已按照上图进行购置,花费不大。原来的主板只提供一条PCI-E 16X和1个m.2接口,存在比较大的瓶颈,因此更换通道更多的主板。而SSD,由于256G有点不够用,尝试使用UP主“小飞机DIY”实测老化耐久性测试很牛逼的国产SSD进行扩容。配件基本准备齐全,同时我还把原来的家用机箱更换成标准的2U服务器机箱,散热性能应该会好一点。

致钛

存储难题

磁盘故障

这是在威联通TS-212上的一块2T硬盘挂了。这硬盘主要是用于MacOS的时间机器备份用途。在彻底挂前,系统提示过几次磁盘需要扫描,而且也有死机的情况。因此我也对相关数据进行梳理并备份,不过好运气不是时时有的。这个主机上的磁盘是用raid0方式部署的,因此两个硬盘的数据都全部丢失了。

家里存储最多的是视频文件和DSD音乐文件,这些都是磁盘占用大户。目前的电影我基本上都看完后简单研判是否有保存价值后即删除。但是有时候会想着回看一下发现又要重新下载,但不一定有资源。倘若有更大的磁盘空间,有一个缓冲区,可以闲置一阵再去整理文件去留。

因为这个硬盘问题,我把存储扩容的事项正式提上日程了,预计会购置2个18T的企业硬盘作为主要的存储设备,这样就能彻底改善当下遇到的存储困境。不过由于近期支出有点超出预算,可能这个计划项目还会继续延宕一阵子。