分类 工作备忘 下的文章

cnode 最近发布了 8.0.0 版本的更新,虽然是一个 mainnet release ,但没有打算那么早更新。只是打算作为提早了解的心态找个本地节点进行了尝试,没想到陷进去一整个晚上搞到焦头烂额。从下午一直反复试错,到现在得出结果已经是凌晨 1:26。淦!

主要发现的问题是cntools无法正常使用,表现在所有的wallet显示余额为0,无法对资金进行任何的操作。

按惯例先说结论

由于一个cntools的历史升级,改了查询余额的方式,改用了远程的API,而好死不死这个API因为某些原因在本地不好使。导致所有的资金操作卡死,因为任何的tx操作需要支付fee,余额0会直接导致失败。
提示

ERROR: payment and/or stake signing keys missing from wallet!

解决办法,根据官方的文档恢复旧方式查询(命令行查询 UTxOs 或使用本地部署那个远程API, 不去调用远端的API)


- 阅读剩余部分 -

其中一个relay节点,配置最低的一台。最近两个月不时掉线。掉线之后cnode进城自动重启后会清空 $CNODE/db/immutable/ 目录把整个区块链进行重新同步。
在同步过程耗费巨量时间之后可能在中途再度发生写入错误或者分叉,导致出错。周而复始又清空重新同步导致节点一直无法完成启动。而且持续大量写入SSD, 对硬件寿命和稳定性都造成严重的影响。

*先说结论,问题是否得到彻底解决未知,仍在观察中。具体操作直接跳到最后一段。

以下是这两个月来采取过的几个措施,收效一般。


- 阅读剩余部分 -

估计是SSD杂牌的问题,导致解压大 .gz 文件的时候偶尔会出现解压错误。这次更是奇葩地产生了一个乱码文件,然后解压过程被中断。

更烦的是这个乱码文件名,无法用平常的 rm 命令删除。

解决办法

在文件所在目录下,查询文件节点ID(inode)

ls -i

root@adaocalcore:/opt/db# ls -i
24773001 ''$'\364\220\001\t\230'  14417943  027.tar.gz  14417959  039.tar.gz
14417947  000_004.tar.gz          14417944  028.tar.gz  24775413  all.md5

第一个就是乱码文件,对应的文件ID是 24773001

然后用 find -inum {target inode} -delete 命令删除

find -inum 24773001 -delete

搞定

路由器退役了,想起还有些旧电影没导出来,试着用 WSL直接转存到win11硬盘上。备忘如下

1. 接上移动硬盘盒

2. 在PowerShell 中把usb 的 linux磁盘加载到 WSL的设备中

记得要以管理员身份运行powershell, 输入 GET-CimInstance -query "SELECT * from Win32_DiskDrive"

PS C:\WINDOWS\system32> GET-CimInstance -query "SELECT * from Win32_DiskDrive"

DeviceID           Caption                               Partitions Size          Model
--------           -------                               ---------- ----          -----
\\.\PHYSICALDRIVE1 WD Blue SN570 1TB SSD                 4          1000202273280 WD Blue SN570 1TB SSD
\\.\PHYSICALDRIVE0 CT2000P2SSD8                          2          2000396321280 CT2000P2SSD8
\\.\PHYSICALDRIVE2 ATA ST1000LM024 HN-M SCSI Disk Device 4          1000202273280 ATA ST1000LM024 HN-M SCSI Disk Device

此时应列出了设备列表,找到对应的usb磁盘,记住 DeviceID,例如本例是 \\.\PHYSICALDRIVE2

继续在powerShell中执行 wsl --mount <DEVICE> --bare

PS C:\WINDOWS\system32> wsl --mount \\.\PHYSICALDRIVE2 --bare

3. 在 WSL中mount

经过上述步骤,此时在wsl 中会多出一个新的磁盘

添加之前

root@DESKTOP-O5S1G1L:/mnt# lsblk
NAME MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda    8:0    0  256G  0 disk
sdb    8:16   0  256G  0 disk /

之后

root@DESKTOP-O5S1G1L:/dev# lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0   256G  0 disk
sdb      8:16   0   256G  0 disk /
sdc      8:32   0 931.5G  0 disk
├─sdc1   8:33   0   132M  0 part
├─sdc2   8:34   0   132M  0 part
├─sdc3   8:35   0   264M  0 part
└─sdc4   8:36   0   931G  0 part


root@DESKTOP-O5S1G1L:/dev# fdisk -l

...

Disk /dev/sdc: 931.53 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: ST1000LM024 HN-M
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0x5387da09

Device     Boot   Start        End    Sectors  Size Id Type
/dev/sdc1          2048     272383     270336  132M 83 Linux
/dev/sdc2        272384     542719     270336  132M 83 Linux
/dev/sdc3        542720    1083391     540672  264M 83 Linux
/dev/sdc4       1083392 1953525167 1952441776  931G 83 Linux

简单加载

cd /mnt/
mkdir mihdd
mount /dev/sdc4 /mnt/mihdd
cd mihdd && ls -l

路由硬盘内的内容已经可以再 wsl中访问,按需进行整理(略)
win11对应的磁盘对应在 /mnt/c ~ f 各个盘符,直接使用 cp 命令即可把路由硬盘上的文件复制到win分区下。

卸载

补个后续的安全卸载硬盘步骤,就是上述步骤反过来,在没有读写任务时
在WSL中卸载磁盘(路径对应上文)

unmount /mnt/mihdd

然后在powershell中卸载硬件

wsl --unmount \\.\PHYSICALDRIVE2

最后在win的右下角usb设备管理中安全弹出 对应的设备。拔线~ 搞定。


参考文

https://learn.microsoft.com/en-us/windows/wsl/wsl2-mount-disk