每天进步一点点:在Linode上增加新卷以满足HIVE节点运行空间

View this thread on: d.buzz | hive.blog | peakd.com | ecency.com
·@oflyhigh·
0.000 HBD
每天进步一点点:在Linode上增加新卷以满足HIVE节点运行空间
随着hive节点数据量越来越大,原有的VPS附带的磁盘空间即将告罄。升级VPS到更高型号会大幅增加成本,所以最终我选择在原有VPS上增加个新卷来运行HIVE节点。

![image.png](https://images.hive.blog/DQmSE5uAZN3C5VC7ZndZ8soZm7ypCr7trr4vAW1qfMJtVHZ/image.png)
(图源 :[pixabay](https://pixabay.com/photos/hdd-hard-disk-disk-hardware-4318171/))

# 我的见证人配置

在刚开始做见证人的时候,我使用的是Linode的64 GB内存型号的VPS,月租金320美元,为了安全起见,我还用同款VPS允许备份节点,这样一旦主节点坏掉,我可以随时切换。

这样我的见证人节点每月的服务器支出就是多达640美元,很长一段时间以来,见证人绝对是入不敷出的。在我和某TOP 20见证人聊天时,提到我的***超豪华配置***,被他一通鄙视,他说他主备节点加一起成本也不过300美元左右,并给我推荐一系列主机商。

但是我以我超豪华配置为荣呢,怎么能换主机商呢?于是我负担了好久640美元/月的成本。大概是HIVE硬分叉时,降低了内存占用,我试着在32G内存的机器上跑了一下,咦,竟然毫无问题,这样我的见证人成本(主备)降低至320美元/月。

HIVE价格低的时候就不必说了,肯定时还是入不敷出,但是如果HIVE价格维持在1美元附近时,我还能略有结余,不错不错。

# 空间不够了

不过前段时间,我发现一个很恐怖的事情——***block_log的空间占用已经超过了550G!***
>![image.png](https://images.hive.blog/DQmWwScPG8sAvZZGny9nwt2CxwdPVRUZRCRqpg3XHhsjf8B/image.png)

而Linode 32G内存的机型,附带的硬盘空间只有`640 GB`,也就是说去掉系统以及杂七杂八的东西,***我的VPS硬盘即将爆炸!***

一旦硬盘爆炸,见证人节点肯定会死翘翘了,好吧,其实我的见证人排名很低的,大概一个多小时才能轮到我出一次块,即便DOWN掉,对HIVE的影响也是微乎其微。但是作为一名有节操的见证人,怎么能让这种丢人的事情发生呢?必须想办法解决。

# 三种方案

一种最省心的方案就是从32G机型升级到64G机型,空间`1280G`,应该足够了:
>![image.png](https://images.hive.blog/DQmbhPBsSFqDuyZCqMKmJLdUxeGsN8Ue8Uf4mZ8BJzpy8PB/image.png)

但是那样的话,我又要入不敷出了,哎,以前入不敷出时没觉得有多悲惨,但是用惯了便宜方案,再回归贵的,有点舍不得了呢。

还有方案就是选择其它服务商,比如换Amazon EC2啥的,不过一想到一堆东西要从头弄,就有点头大,而且前段时间我正偏头痛,一想,头更疼了。

所以最终选择的方案就是新加一个卷,然后把HIVED丢到这个新卷上运行。Linode的Block Storage $0.1/G/月,我先加一个800G的,估计再坚持个一年半载问题不大,等不够的时候再扩容,每月每台VPS增加$80的成本,貌似可以接受,就这么干了。

# 创建并绑定新存储卷

在Linode VPS上新增卷是很简单的事情,我们只需进到对应的VPS,然后选择`Storage`条目:
>![image.png](https://images.hive.blog/DQmYxxcz5xiSYhJvgRkHeggFXkjbK4atpwDj7N1vEEt4HsP/image.png)

在下边选择`Create Volume`:
>![image.png](https://images.hive.blog/DQmU1XBsAfY5e2RhihBKQ6KybPt14YNJHA7ggboea5jj9yN/image.png)


然会就会在右侧弹出如下页面:
>![image.png](https://images.hive.blog/DQmSqV6pUhW6L1NcydtogtoMeXG1sL69u3zR6sbYc9e7P5q/image.png)


创建成功后会提示如下配置信息页面:
>![image.png](https://images.hive.blog/DQmX919a8ZQs9sXiYeczAeqcX4keezjJYPwj6VmV6zA2Fet/image.png)


这时候进入到系统中,并使用`sudo fdisk -l`就会发现我们新创建并挂载的卷:
>![image.png](https://images.hive.blog/DQmNShoJ4YY8RDnhTUoALS79JwtDmHQyKi3MNDTXKKnRQKt/image.png)

因为喜欢小写的路径,所以对上述指令做了一些修改:
>`sudo mkfs.ext4 "/dev/disk/by-id/scsi-0Linode_Volume_WORK"`
>`sudo mkdir /work`
>`sudo mount "/dev/disk/by-id/scsi-0Linode_Volume_WORK" "/work"`

在`/etc/fstab`中添加如下内容:
>`/dev/disk/by-id/scsi-0Linode_Volume_WORK /work ext4 defaults,noatime,nofail 0 2`

这样我们就完成新建存储卷并挂载到VPS的全过程,用`sudo df -lh`看一下,还剩747G,不错不错(咦,空间损失到哪里去了?算了不研究了):
>![image.png](https://images.hive.blog/DQmQFjyvRrNWaejC6AoT73snFVjZC6JFtM5tXctU2TAVCVd/image.png)

# 重新运行hived

有了新的存储卷以及足够的存储空间后,我选择创建了个新的用户,并把hived的全部数据迁移过去。

但是当我完成迁移并运行时,我发现原本启动很迅速的hived,竟然要好长时间才能加载起来。换句话说,***新附加的存储卷似乎没有VPS自带的存储快***。

我理解可能自带的存储卷可能是本地存储,而新附加的应该是网络存储——尽管我不确定这种理解是否正确。

但是一个很现实的问题就是,***如果存储不够快或者IOPS不够高,就可能对hived的运行产生一些影响,比如说影响出块!***,难道我的努力都白费了吗?

好在我又找到一个折中的方法,那就是把见证人放在内存中运行——更确切地说是把`shared_memory.bin`放到内存中,这样,就不存在读写瓶颈了。

如何这样操作很简单,我在之前的文章[晕,见证人节点真的炸掉了 & 在内存中replay HIVE节点](https://hive.blog/hive-105017/@oflyhigh/and-replay-hive)介绍过在内存中replay HIVE节点,在内存中运行,是一样的操作,这里就不再赘述了。

这样操作后,节点关停和启动都非常迅速,运行了一段时间后,出块也没有任何问题,所以这个方案是完全可行的。

# 相关链接

* [晕,见证人节点真的炸掉了 & 在内存中replay HIVE节点](https://hive.blog/hive-105017/@oflyhigh/and-replay-hive)
👍 , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,