前言

吐槽完赚钱宝二代(ws1508)的鸡肋配置以后,今天还是不太甘心,想来想去,最后给它刷了支持nand的那版固件,基于debian 10(buster),内核3.10。

这版固件有很多先天不足:

  • 内核太老
  • 只能识别4GB的nand存储空间(虽然我俩机器的包装盒上都标了32GB的nand存储)
  • debian 10(buster)已经EOL,源仓库已经不再更新,里面的包都太老了

但如果能接受以上这些缺点,似乎也算是一个不错的选择。毕竟那个珍贵的usb2.0接口需要用来外挂数据盘。

装samba测试了一下,可以跑满百兆带宽,也不会出现缓存写满以后卡io导致系统假死的问题。但就算跑满了百兆也就10~12MB/s而已,不堪大用。


但是

没错,重点来了,系统直刷nand,我体验了2天以后,最大的问题是:nand很容易出现坏块!!!!

这个问题非常致命,当系统检测到nand坏块以后会报错errors,然后这版固件/etc/fstab配置的挂载参数中,有一个errors=remount-ro,也就意味着一旦使用过程中碰到坏块的block,整个系统立刻就会重新挂载为只读(readonly)模式保护数据。

而赚钱宝二代这玩意是2015~2016年的设备,产品定位就是为了跑pdcn,至少是7年的老矿机了,nand出现坏块几乎是必然。


解决方案

系统盘进入只读保护模式以后,任何写操作都会报错,提示如下:

Read-only file system

解决办法就是文件系统修复。先用df -hT查看根目录挂载的分区和格式。

Filesystem     Type      Size  Used Avail Use% Mounted on
udev           devtmpfs  231M     0  231M   0% /dev
tmpfs          tmpfs      48M  4.0M   44M   9% /run
/dev/data      ext4      2.8G  795M  1.9G  30% /
tmpfs          tmpfs     238M     0  238M   0% /dev/shm
tmpfs          tmpfs     5.0M     0  5.0M   0% /run/lock
tmpfs          tmpfs     238M     0  238M   0% /sys/fs/cgroup
tmpfs          tmpfs     238M  4.0K  238M   1% /tmp
/dev/sda1      ext4      459G  4.3G  431G   1% /data
/dev/zram0     ext4       49M  2.1M   43M   5% /var/log

根目录/挂载的分区是/dev/data文件系统格式是ext4。执行修复命令:

fsck.ext4 -y /dev/data

等命令跑完,提示如下:

ROOTFS: ***** FILE SYSTEM WAS MODIFIED *****
ROOTFS: ***** REBOOT SYSTEM *****
ROOTFS: 25275/157872 files (0.2% non-contiguous), 204658/724992 blocks

按照提示重启系统,一般情况下文件系统就恢复正常了。如果重启以后依然提示只读,那就再跑一次然后再重启。是的我就碰到跑一次没解决又跑一次才恢复。

还有一点要注意,fsck命令执行以后,有些存储在坏块上的数据会丢失,注意检查自己的软件是否运行正常,数据是不是完整。