专注Chia
分享与XCH有关的资讯

Chia Plot驱动器,及管理器和硬币监控软件

概述与运作理论

这个项目是围绕我“耕种” Chia加密货币的愿望而设计的。在我的特定配置中,我有一个单绘图服务器(chisplot01)创建Chia绘图。一旦绘图服务器完成了绘图,则需要将该绘图移动到“农场”中时所在的存储服务器(chisnas01)。创建图的过程非常简单,但是一旦完成,管理该图的过程就会更加有趣。我的绘图服务器可以一次绘制40个平行图,这就是我开始遇到问题的地方。

我面临的这些问题之一是将绘图从绘图服务器移动到存储服务器的速度相对较慢。简而言之,它很简单-我无法一次绘制40张图,因为我无法将它们从绘制服务器上移出足够快的速度,以至于无法耗尽疯狂昂贵的NVMe驱动器空间。即使在两个设备之间直接使用10Gbe连接,使用NFS挂载mvcp在NFS挂载上也很慢,其他人则建议rsync由于加密而也很慢。同样适用于scp。我什至什至取消了Ubunti 20.04随附的ssh,并从匹兹堡超级计算中心编译并安装了高性能SSH。虽然速度更快,但并没有接近最大化我专用的10Gbe链路。我所知道的是问题不在于网络。每台机器都连接到专用数据VLAN上专用于移动这些图的Cisco Nexus 9000上的专用10Gbe端口。Iperf能够使零问题的10Gbe链路达到饱和。

接下来,我想确保问题与我将数据复制到网络上的媒体无关。我在带RAID的RAID配置中安装了一对Intel P3700 PCIe NVMe驱动器,并在本地和跨线对该挂载点进行了一系列测试。令人怀疑的是,驱动器在本地通过导线表现得像魔术一样,它们的运行速度与我的旋转器完全相同。显然,驱动器介质也不是问题。它必须是网络。

我花了很多时间来处理所有网络设置,更改内核参数,打开和关闭巨型帧以及调整不平衡。在年底的一些变化给我的边际增加性能,但没有真正帮助了很多。那时我说过要研究一下我用来再次移动文件的机制。在研究中,我遇到了几个处于相同情况的人,它们在重载系统和轻载网络上的网络速度非常慢,而传统的文件移动方法对他们却不起作用。因此,他们改用Netcat。

在阅读了netcat vs rsync(最受推荐)的优缺点之后,我决定对其进行测试。我在NFS,SMB(可悲)和SSH上测试了cp,mv,rsync,scp和HPSSH。除了SMB以外,它们几乎都工作相同。用High Perfomance SSH和nuking加密取代了Ubuntu ssh之后,我得到的性能要好于使用库存的Ubuntu ssh,但仍然没有什么值得一提的。然后,我测试了Netcat。我被吹走了。我使用netcat从远远低于1Gbe达到5Gbe的峰值。原本需要18分钟传输的100G文件现在要在3到4分钟内传输。

还非常有趣的是,当您告诉TrueNAS要禁用复制加密时,TrueNAS利用netcat进行复制。在进一步研究此问题并与论坛上的一些人员交谈时,他们指出,他们发现它总是胜过所有其他转让方法。这足以让我验证我的决定!

就地块而言,大多数人建议不要使用某种类型的RAID阵列来保护地块以防丢失。思想过程是,如果您丢失了一个绘图驱动器,没什么大不了的,将它扔进垃圾桶,然后放入替换驱动器,然后将其填充到绘图中。因为我真的很喜欢FreeNAS,所以我才打算安装一台新的FreeNAS服务器,将一堆9个驱动器RAIDZ2 vdev扔到位,然后继续前进。但是,正如许多人指出的那样,这很浪费空间,很容易替换数据。而空间是Chia游戏的名称。因此,考虑到这一点,我决定按照许多其他人的建议建立一个jbod。问题是如何管理将图放置到驱动器上以及驱动器装满后该怎么办。

欢迎来到我的项目!我最终得到了客户/服务器的安排。绘图服务器上的软件将监视已完成的绘图,然后将这些绘图(使用netcat)发送到NAS服务器。NAS服务器上的软件将自动监视系统中所有可用的驱动器,并将地块放置在需要移动的地方,几乎全部由自己完成。就像我之前说的那样,我作为飞行员的工作使我非常忙碌,而我确实需要一种放任自流的方法来完成这项工作。

在绘图仪端(每5分钟):

  • 监视我的-d目录以查看完整的图
  • 根据图的大小和名称确定图是否完整(当前仅k32)
  • 检查我们是否已经向NAS发送了一个图,如果已停止,则停止
  • 明确发送后,选择要发送的情节并将其netcat传送到NAS
  • 利用ssh子进程,在NAS上启动接收网猫
  • 传输完成后,请检查两个系统上绘图的确切文件大小,作为基本验证
  • 验证文件大小后,删除发送的图
  • 杀死NAS上所有持久的netcat连接

在NAS端(每1分钟):

  • 实时检查系统上所有可用的绘图存储驱动器(如果添加了新的)
  • 根据驱动器上的绘图数量,选择下一个可用的绘图驱动器以接收绘图
  • 使用当前选定的绘图驱动器更新接收脚本
  • 该驱动器装满后,选择下一个可用的绘图驱动器并更新接收脚本
  • 通过电子邮件,SMS和Pushbullet关于驱动器更改的完整,可选的通知,包括一些SMART驱动器信息
  • 发送每日电子邮件报告,其中包括驱动器数量,当前地块数量和基于当前驱动器存储的总地块数量
  • 每日电子邮件还包括绘图速度,最近24小时的总绘图和最近24小时的TiB绘图
  • 由于通知已经内置,因此将其扩展为在驱动器温度和smartctl警告方面发出警报
  • 最终通过Grafana仪表板将信息集成到Influx中(包括通过UPS进行电源监控)

在农夫身上(每1分钟):

  • 检查chia日志(〜chia / .chia / mainnet / log / debug.log)是否活动
  • 专门用于“添加硬币”
  • 找到后更新本地文件,显示您有多少个Chia
  • 当您收到具有当前金额的新硬币时,电子邮件,文本等
  • 请勿使用区块浏览器,因此请进行验证!

NAS上的命令行选项

  • 能够在屏幕上运行快速报告(基本上是每天将电子邮件转储到屏幕上)
  • 能够发送云端硬盘更新电子邮件
  • 能够通过设备和序列号监控驱动器温度

 


依存关系

它是为Plotter和NAS设计并在Ubuntu 20.04上运行的,因此几乎所有的Linux风格都可以使用。下面列出的是我在两个系统上都使用的东西。在NAS上需要注意的一件事是您使用的pySMART的版本。我在PyPi上遇到版本(1.0)的错误,最终使用了TrueNAS Folks的版本。请勿使用PyPi的版本,除非对其进行修补,否则该版本将不起作用。

我在Python 3.8.5上运行,几乎所有其他东西都随默认的Ubuntu Server 20.04安装一起安装。确保安装smartmontoolsapt install smartmontools以及以下产品:


安装与配置

实际脚本的安装非常简单。只需克隆存储库并将其放到服务器上即可。发生的很多事情都非常具体地取决于我如何设置系统,因此我将详细解释我的布局以及可能需要在代码中查找的位置以进行更改以适合您的需求。绘图仪非常简单。

绘图仪配置

这是我在绘图仪上用于主绘图和-d驱动器的目录结构:

/mnt
├── nvme
│   ├── drive0
│   ├── drive1
│   ├── drive2
│   └── drive3
└── ssdraid
    └── array0

这些/mnt/nvme/driveX驱动器用作我的临时驱动器进行绘图。这些是Intel DC P4510 NVMe驱动器,每个驱动器能够运行12至14个图(基于k32的图大小)。这/mnt/ssdraid/array0是我的-d驱动器。这是HGST 1.6TB企业SSD驱动器的RAID0阵列。这是完成的图在被plot_manager.py脚本移动之前的存储位置。

我所有的绘图chia都由用户完成,因此所有我的plot_manager文件都存储在/home/chia目录中。我确实在脚本中进行了一些测试,这就是test_plots目录的用途。我dd将零的10G简化为一个测试图文件,然后在脚本中打开测试以测试所有内容,然后再上线。

/home/chia/plot_manager
├── logs
└── test_plots

根据系统的设置方式,您需要在plot_manager.py脚本顶部进行更改:

# Are we testing?
testing = False
if testing:
    plot_dir = '/home/chia/plot_manager/test_plots/'
    plot_size = 10000000
    status_file = '/home/chia/plot_manager/transfer_job_running_testing'
else:
    plot_dir = "/mnt/ssdraid/array0/"
    plot_size = 108644374730  # Based on K32 plot size
    status_file = '/home/chia/plot_manager/transfer_job_running'

remote_checkfile = '/root/plot_manager/remote_transfer_is_active'

针对测试和不测试都更改plot_dirplot_size,以适合您的系统和需求。

status_file是一个本地文件,当我们开始进行绘图移动时创建该文件,并在完成该移动后将其删除。我们会在初次运行时进行检查,以确保不会尝试同时移动多个地块。

您会在日志中看到以下内容:
2021-03-19 18:50:01,830 - plot_manager:155 - process_control: DEBUG Checkfile Exists, We are currently Running a Transfer, Exiting

随着我的成长,我计划添加第二个专用10Gbe链接来移动绘图,并且我可以对其进行扩展以包括跟踪每个链接上的会话的功能。

remote_checkfile用于NAS系统上,以防止我们的NAS drive_manager.py脚本在绘图移动的中间更改目标驱动器。在NAS上,我以root用户身份运行所有内容,因此运行目录路径。更改以满足您的需求。
这几乎是绘图仪方面的一切。难题的最后一部分是send_plot.shshell脚本。在plot_manager.py脚本的第99行,您将找到以下行:
subprocess.call(['/home/chia/plot_manager/send_plot.sh', plot_path, plot_to_process]) 您需要更改脚本的目录和名称以适合所需的套件。这是实际将情节发送到nas的脚本。这是内容:

#!/bin/bash
#
ssh root@chianas01-internal "nohup /root/plot_manager/receive_plot.sh $2 > foo.out 2> foo.err < /dev/null &"
sudo /usr/bin/pv "$1" | sudo /usr/bin/nc -q 5 chianas01-internal 4040

这里还有一些您需要检查的路径。我会输入行号,但是行号可能会更改,只需搜索代码并根据需要进行替换。

在启动脚本之前,请确保您已在脚本中正确标识了以下路径:

位于process_plot()函数中:
['ssh', nas_server, 'grep enclosure /root/plot_manager/plot_manager_config | awk {\'print $3\'}']).decode(('utf-8'))).strip("\n")

这是NAS端脚本在其中查找正在使用的当前驱动器的位置。例如,如果您已drive_manager.py 安装在主目录中,/home/your_name/plot_manager则此行如下所示:
['ssh', nas_server, 'grep enclosure /home/your_name/plot_manager/plot_manager_config | awk {\'print $3\'}']).decode(('utf-8'))).strip("\n")

输入脚本在此处的位置:
sys.path.append('/home/chia/plot_manager')

在此行中: ['ssh', nas_server, '/root/plot_manager/kill_nc.sh'])

在此脚本在NAS服务器上的位置:
subprocess.check_output(['ssh', nas_server, 'touch %s' % '/root/plot_manager/new_plot_received'])

最后,看一看该system_logging.py脚本,使确保所有的路径有正确的和做在同一个loggin.yaml文件为您的日志文件的位置。

根据您的NAS设置方式,我们可能不得不更改几行代码。在我们谈论了NAS之后,我将回到这一点。


NAS配置

NAS设置对我来说很独特,但是重新配置脚本以满足其他需求应该很容易。
通过运行三个非常大的Plex系统(价值PB),我设计了驱动器布局和命名,以便可以随时通过查看安装点来拉驱动器(如果需要)。

我的基本布局是一台带有主板,256GB内存和36个驱动器托架的SuperMicro存储服务器。我叫这个enclosure0。这是一台Supermicro 847,前部有24个驱动器托架,后部有12个驱动器托架。这是该系统的目录结构:

/mnt/enclosure0
├── front
│   ├── column0
│   │   ├── drive0
│   │   ├── drive1
│   │   ├── drive2
│   │   ├── drive3
│   │   ├── drive4
│   │   └── drive5
│   ├── column1
│   │   ├── drive6
│   │   ├── drive7
│   │   ├── drive8
│   │   ├── drive9
│   │   ├── drive10
│   │   └── drive11
│   ├── column2
│   │   ├── drive12
│   │   ├── drive13
│   │   ├── drive14
│   │   ├── drive15
│   │   ├── drive16
│   │   └── drive17
│   └── column3
│       ├── drive18
│       ├── drive19
│       ├── drive20
│       ├── drive21
│       ├── drive22
│       └── drive23
└── rear
    ├── column0
    │   ├── drive24
    │   ├── drive25
    │   └── drive26
    ├── column1
    │   ├── drive27
    │   ├── drive28
    │   └── drive29
    ├── column2
    │   ├── drive30
    │   ├── drive31
    │   └── drive32
    └── column3
        ├── drive33
        ├── drive34
        └── drive35

如您所见,仅通过查看安装点即可知道驱动器在系统中的确切位置。除此之外,当我添加额外的外部驱动器阵列,我只是做同样的事情enclosure1enclosure2等我的drive_manager.py脚本将工作没有问题。我插入了一个新的驱动器,对其进行格式化XFS,安装,添加到fstab其中就可以了。该脚本会执行其他所有操作。

我基本上是psutil在获取驱动器空间信息,然后使用它来确定在哪里放置绘图。当我打电话时,psutil我只是告诉我,我希望它查看以以下单词开头和结尾的安装/dev/sd点:enclosuredrive

if p.device.startswith('/dev/sd') and p.mountpoint.startswith('/mnt/enclosure') and p.mountpoint.endswith(drive):

这样,我将永远不会获得交换,临时,启动,家庭等信息。除了我的绘图存储驱动器之外什么都没有。为了使此设置适用于您的设置,您必须修改所有这些行以匹配您的特定配置。

一旦找到答案,就需要设置其他一些小事项:

在脚本的顶部,您想要设置它们以满足您的需求:

nas_server = 'chianas01'
plot_size_k = 108995911228
plot_size_g = 101.3623551
receive_script = '/root/plot_manager/receive_plot.sh'

receive_plot.sh脚本是通过以下脚本动态创建的:

f = open(receive_script, 'w+')
f.write('#! /bin/bash \n')
f.write(f'nc -l -q5 -p 4040 > "{get_plot_drive_to_use()}/$1" < /dev/null')
f.close()

一旦系统确定了要使用哪个驱动器来存储绘图,它将信息存储在一个名为的配置文件中plot_manager_config,如下所示:

[plotting_drives]
current_plotting_drive = /mnt/enclosure0/front/column3/drive18

这很重要,原因有几个。首先,这是告诉系统当前的绘图驱动器的信息,绘图服务器还使用它来映射正确的路径,以在发送绘图后验证文件大小。如果更改此文件或其位置,则需要更新绘图仪上的第167行。请注意,我专门为这个词而烦恼enclosure,您想确保所有这些都与您计划做事的方式相匹配!

remote_mount = str(subprocess.check_output(['ssh', nas_server, 'grep enclosure /root/plot_manager/plot_manager_config | awk {\'print $3\'}']).decode(('utf-8'))).strip("\n")

好的,一旦完成所有设置,就可以在绘图仪上运行脚本,如果所有设置都正确,您应该看到以下内容:

2021-03-19 19:20:01,543 - plot_manager:92 - process_plot: DEBUG process_plot() Started
2021-03-19 19:20:01,543 - plot_manager:126 - process_control: DEBUG process_control() called with [check_status] and [0]
2021-03-19 19:20:01,543 - plot_manager:158 - process_control: DEBUG Checkfile Does Not Exist
2021-03-19 19:20:01,543 - plot_manager:74 - get_list_of_plots: DEBUG get_list_of_plots() Started
2021-03-19 19:20:01,544 - plot_manager:77 - get_list_of_plots: DEBUG plot-k32-2021-03-18-02-33-xxx.plot
2021-03-19 19:20:01,544 - plot_manager:82 - get_list_of_plots: INFO We will process this plot next: plot-k32-2021-03-18-02-33-xxx.plot
2021-03-19 19:20:01,545 - plot_manager:126 - process_control: DEBUG process_control() called with [set_status] and [start]
2021-03-19 19:20:02,228 - plot_manager:98 - process_plot: INFO Processing Plot: /mnt/ssdraid/array0/plot-k32-2021-03-18-02-33-xxx.plot
2021-03-19 19:25:00,697 - plot_manager:165 - verify_plot_move: DEBUG verify_plot_move() Started
2021-03-19 19:25:01,433 - plot_manager:171 - verify_plot_move: DEBUG Verifing: chianas01-internal: /mnt/enclosure0/front/column3/drive18/plot-k32-2021-03-18-02-33-xxx.plot
2021-03-19 19:25:02,102 - plot_manager:176 - verify_plot_move: DEBUG Remote Plot Size Reported as: 108898704182
2021-03-19 19:25:02,103 - plot_manager:178 - verify_plot_move: DEBUG Local Plot Size Reported as: 108898704182
2021-03-19 19:25:02,103 - plot_manager:101 - process_plot: INFO Plot Sizes Match, we have a good plot move!
2021-03-19 19:25:02,103 - plot_manager:126 - process_control: DEBUG process_control() called with [set_status] and [stop]
2021-03-19 19:25:03,465 - plot_manager:147 - process_control: DEBUG Remote nc kill called!
2021-03-19 19:25:06,741 - plot_manager:109 - process_plot: INFO Removing: /mnt/ssdraid/array0/plot-k32-2021-03-18-02-33-xxx.plot

这告诉您一切进展顺利。您应该能够登录到NAS并验证该图是否应该在该位置。不用说我会坚持使用一堆测试图,直到我做对了,我还要注释掉这一行:

os.remove(plot_path)

直到您完全确定它正在按照您希望的方式运行!

现在,在NAS服务器上,我每分钟运行一次脚本。如果一切顺利,这是您应该看到的内容:

drive_manager:258 - update_receive_plot: DEBUG update_receive_plot() Started
drive_manager:266 - update_receive_plot: DEBUG Currently Configured Plot Drive: /mnt/enclosure0/front/column3/drive18
drive_manager:267 - update_receive_plot: DEBUG System Selected Plot Drive:      /mnt/enclosure0/front/column3/drive18
drive_manager:268 - update_receive_plot: DEBUG Configured and Selected Drives Match!
drive_manager:269 - update_receive_plot: DEBUG No changes necessary to /root/plot_manager/receive_plot.sh
drive_manager:270 - update_receive_plot: DEBUG Plots left available on configured plotting drive: 58

 

当绘图驱动器确实发生更改时,您会收到格式正确的电子邮件:

Server: chianas01
New Plot Drive Selected at 10:17:17
Previous Plotting Drive............................../mnt/enclosure0/front/column2/drive17
# of Plots on Previous Plotting Drive................56
New Plotting Drive (by mountpoint).................../mnt/enclosure0/front/column2/drive17
New Plotting Drive (by device)......................./dev/sdq1
Drive Size...........................................10.9T
# of Plots on we can put on this Drive...............53

Environmental & Health
Drive Serial Number..................................00000000
Current Drive Temperature............................31°C
Last Smart Test Health Assessment....................PASS

Other Information
Total Plots on chianas01.............................1691
Current Total Number of Plot Drives..................24
Number of k32 Plots until full.......................925
Max # of Plots with current # of Drives..............2640
Approx. # of Days to fill all Plot Drives............16

以及一条短信或推送消息: Plot Drive Updated: Was: /mnt/enclosure0/front/column3/drive17, Now: /mnt/enclosure0/front/column3/drive18

而且,如果您选择每天发送一次,则可以每天收到一封更新电子邮件:

NAS Server: chianas01
Daily Update Email - Generated at 10:20:53
Current Plotting Drive (by mountpoint).................../mnt/enclosure0/front/column2/drive15
Current Plotting Drive (by device)......................./dev/sdq1
Drive Size...............................................10.9T

Environmental & Health
Drive Serial Number......................................00000000
Current Drive Temperature................................31°C
Last Smart Test Health Assessment........................PASS

Other Information
Total Plots on chianas01.................................1692
Current Total Number of Plot Drives......................24
Number of k32 Plots until full...........................925
Max # of Plots with current # of Drives..................2640

Plotting Speed
Total Plots Last 24 Hours................................57
Average Plots Per Hour...................................2.4
Average Plotting Speed Last 24 Hours.....................5.757 TiB/Day
Approx. # of Days to fill all Plot Drives................16

命令行选项

盯着V0.3(2021年4月4日)(并在V0.4中再次更新),我已经开始添加命令行选项,以使获取绘图和其他信息变得更加容易,并即时生成报告。当前可用的命令行选项包括:

  • -h或–help
  • -v或–version
  • -ct或–check_temps
  • -pr或–plot_report
  • -ud或–update_daily
  • -off或–offline_hdd
  • -on或–online_hdd

h –help 和 -v –version
这些选项打印出帮助消息或版本信息,然后退出。

******** ChiaNAS Drive Manager - 0.4 (2021-04-13) ********
Running drive_manager.py with no arguments causes drive_manager to run in 'normal' mode.
In this mode drive_manager will check the drive utilization and update which drive your
Chia plots will be sent to when they arrive from your plotter. This is generally called
from a cronjob on a regular basis. Please read the full information about how it works
on my github page.

There are several commandline switches you can use to get immediate reports and feedback:

-dr or --drive_report       Runs the Daily ChiaNAS Report (if configured), and emails
                            it to you. This can be called from a crontab job as well.

-ct or --check_temps        This will query all of your hard drives using smartctl and
                            return a list of drive temperatures to you.

-pr or --plot_report        This queries the NAS and returns a report letting you know
                            how many plots are currently on the system and how many more
                            you can add based on the current drive configuration. It also
                            includes plotting speed information for the last 24 hours.

-ud or --update_daily       This updates the total number of plots the system has created
                            over the past 24 hours. Use with CAUTION!. This should be ran
                            from crontab once every 24 hours only! It updates the total
                            from the last time is was run until now, hence why you should
                            only run this once per 24 hours.

-off or --offline_hdd       This takes a drive as it's input (for example  drive6) and
                            "offlines" it so that no more plots will get written to it.
                            You must --on or --online_hdd the drive for it to be used
                            again. Useful if the drive is failing and needs to be replaced.
                            You cannot "offline a drive that is not mounted.

-on or --online_hdd         This takes a drive as it's input (for example  drive6) and
                            "onlines" it so that plots will get written to it. This option
                            will be UNAVAILABLE if there are no drives that have been
                            offlined!

USAGE:

optional arguments:
  -h, --help            show this help message and exit
  -v, --version         show program's version number and exit
  -dr, --daily_report   Run the ChiaPlot Daily Email Report and exit
  -ct, --check_temps    Return a list of drives and their temperatures and exit
  -pr, --plot_report    Return the total # of plots on the system and total you can add and exit
  -ud, --update_daily   Updates 24 hour plot count. USE WITH CAUTION, USE WITH CRONTAB
  -off OFFLINE_HDD, --offline_hdd OFFLINE_HDD.  Offline a specific drive. Use drive number: drive6
                        

-dr –drive_report
此选项将HTML版本的“每日行车报告”电子邮件输出到屏幕,也发送电子邮件。仅在配置时有效。如果此通知设置为关闭,则不会执行任何操作。

ct –check_temps
此选项显示所有指定为绘图驱动器的设备的序列号,设备名称,驱动器编号和温度。

#################################################################
################# chianas01 Temperature Report ##################
#################################################################
#    Serial#     #     Device     #     Drive     #    Temp     #
#################################################################
#   00000000     #   /dev/sdb1    #    drive0    #     28°C     #
#   00000000     #   /dev/sdc1    #    drive1    #     29°C     #
#   00000000     #   /dev/sdd1    #    drive2    #     28°C     #
#   00000000     #   /dev/sde1    #    drive3    #     28°C     #
#   00000000     #   /dev/sdf1    #    drive4    #     27°C     #
#   00000000     #   /dev/sdg1    #    drive5    #     24°C     #
#   00000000     #   /dev/sdh1    #    drive6    #     30°C     #
#   00000000     #   /dev/sdi1    #    drive7    #     30°C     #
#   00000000     #   /dev/sdj1    #    drive8    #     29°C     #
#   00000000     #   /dev/sdk1    #    drive9    #     28°C     #
#   00000000     #   /dev/sdl1    #    drive10    #     27°C     #
#   00000000     #   /dev/sdm1    #    drive11    #     24°C     #
#   00000000     #   /dev/sdn1    #    drive12    #     29°C     #
#   00000000     #   /dev/sdo1    #    drive13    #     30°C     #
#   00000000     #   /dev/sdp1    #    drive14    #     30°C     #
#   00000000     #   /dev/sdq1    #    drive15    #     29°C     #
#   00000000     #   /dev/sdr1    #    drive16    #     27°C     #
#   00000000     #   /dev/sds1    #    drive17    #     25°C     #
#   00000000     #   /dev/sdt1    #    drive18    #     28°C     #
#   00000000     #   /dev/sdu1    #    drive19    #     30°C     #
#   00000000     #   /dev/sdv1    #    drive20    #     29°C     #
#   00000000     #   /dev/sdw1    #    drive21    #     29°C     #
#   00000000     #   /dev/sdx1    #    drive22    #     28°C     #
#   00000000     #   /dev/sdy1    #    drive23    #     25°C     #
#   00000000     #   /dev/sdz1    #    drive24    #     32°C     #
#   00000000     #   /dev/sdaa1    #    drive25    #     33°C     #
#   00000000     #   /dev/sdab1    #    drive26    #     32°C     #
#   00000000     #   /dev/sdac1    #    drive27    #     34°C     #
#   00000000     #   /dev/sdad1    #    drive28    #     35°C     #
#   00000000     #   /dev/sdae1    #    drive29    #     33°C     #
#   00000000     #   /dev/sdaf1    #    drive30    #     29°C     #
#   00000000     #   /dev/sdag1    #    drive31    #     30°C     #
#   00000000     #   /dev/sdah1    #    drive32    #     30°C     #
###################################################################

-pr –plot_report
此选项将每日绘图报告的快速版本打印到屏幕上并退出。

############################################################
################### chianas01 Plot Report ##################
############################################################
Total Number of Plots on chianas01:                     1690
Total Number of Systemwide Plots Drives:                  24
Total Number of k32 Plots until full:                    926
Maximum # of plots when full:                           2640
Plots completed in the last 24 Hours:                     57
Average Plots per Hours:                                 2.4
Average Plotting Speed Last 24 Hours (TiB/Day):         5.76 
Appx Number of Days to fill all current plot drives:      16  
Current Plot Storage Drive:                        /dev/sdq1
Temperature of Current Plot Drive:                      30°C
Latest Smart Drive Assessment of Plot Drive:            PASS
############################################################

-ud –update_daily
该选项的设计目的是在运行日常电子邮件之前从crontab规则中调用该选项:

01 00 * * * /usr/bin/python3 /root/plot_manager/drive_manager.py -ud >/dev/null 2>&1
02 00 * * * /usr/bin/python3 /root/plot_manager/drive_manager.py -dr >/dev/null 2>&1

它旨在计算每日情节报告所需的信息。您可以在任何时候运行它,但是它将重置此信息为您调用该信息的时间点,以使您可以对系统进行24小时的查看。

投币监控器

我想要一种简单的方法来跟踪我何时赢得金币,以及我赢得了多少枚金币,所以我添加coin_monitor.py了混合金币。就像我说的那样,在我的配置中,我有三台服务器,分别是my plotter,mynas和my farmer。硬币监控器坐在我的农夫身上,并在日志文件中查看新硬币。当发现有新硬币时,它将检查硬币日志文件(/root/coin_monitor/logs/new_coins.log)以确保我们尚未计算这些硬币。如果是新硬币,则会将该硬币信息写入日志文件(new_coins.log),并且根据您设置的通知,您可以通过SMS,电子邮件和PushBullet接收通知。如果您将per_coin_email设置为True / 1, coin_monitoring_config您还将在其他通知的顶部收到格式正确的电子邮件。

chia_new_coin_email

这是独立的,可以与我的plot_manager脚本结合使用,也可以不结合使用。

安装非常简单。将其复制到您的首选目录中,然后进行编辑coinf_monitor.py,并确保此行指向正确的日志文件位置:

chia_log = '/home/chia/.chia/mainnet/log/debug.log'

此外,请确保以下行也适用于您的系统:

new_coin_log = '/root/coin_monitor/logs/new_coins.log'

最后,您需要确保chia以INFO模式登录而不是警告,否则它将不会记录新硬币。看这里进行验证:
/home/chia/.chia/mainnet/config/config.yaml

您应该看到类似以下的内容:

logging: &id001
    log_filename: log/debug.log
    log_level: INFO
    log_stdout: false

只要确保将log_level设置为INFO,就可以了。

如果要测试脚本,只需创建一个测试“ log”文件并在其中添加以下行:
06:33:02.632 wallet src.wallet.wallet_state_manager: INFO Adding coin: {'amount': '250000000000',

保存文件并编辑coin_monitor.py脚本以查看该文件并运行该脚本。如果一切配置正确,您应该会收到一封电子邮件(或您设置的任何通知)。如果再次运行它,您应该在coin_monitor调试日志中看到:
Found coins that were already accounted for in the log!: ['13:52:59.147', '250000000000']

只需要确保在测试后将脚本指向正确的日志文件即可!

我在设置中使用的硬件

我有几个人问我在设置中使用的硬件,所以我想在这里包括它。我购买的几乎所有东西都在eBay上用完了。有一些例外,但95%是eBay。

绘图服务器

Dell R820
4 x E5-4657L V2 CPUs (48 Cores, 96 Threads)
512GB DDR3 1600Mhz RAM
Dell 4 x NVMe Drive Cage and Controller
4 x Intel P4510 NVMe Drives (temp drives)
LSI 9431-8i 12Gbs SAS Controller
8 x HGST 1.6TB SAS3 12Gbs SSDs (5.8 PBW) (HUSMR1616ASS205)
(2 in RAID1 for OS, 6 x RAID0 as -d drive)
2 x 10Gbe & 2x 1Gbe NICs
iDrac Enterprise
Dual Power Supplies

NAS用于图存储

Supermicro 4U 36 Bay SAS3 Chassis w/X10DRi-T4+ Motherboard
2 x E5-2690 v4 CPU
128GB ECC
1 x AOC-S3008L-8LE 12GB/s SAS3 Controller (IT Mode)
2 x LSI9300-16e 12GB/s External (IT Mode)
36 x 12TB Seagate Exos Drives
10Gbe NICs (on motherboard)
Dual Power Supplies

NAS扩展机箱

2 x SuperMicro 847 45-Drive Chassis
Dual Power supplies

Chia Famer节点

Ubuntu 20.04 LTS VM running on Proxmox

我额外的驱动器机箱现在是空的,但是从上面的驱动器布局和安装策略可以看出,添加更多驱动器非常容易。


 

变更日志

V0.5 2021-04-22

  • 除远程图外,还增加了管理本地图的功能。这使您可以在NAS / Harvester上进行绘图,并像管理远程系统中的绘图一样对这些绘图进行管理。这是作为名为的单独脚本设置的move_local_plots.py。请参阅该脚本中的注释以获取更多信息。

V0.4 2021-04-13

  • 增加了使特定驱动器“脱机”进行维护的功能。使驱动器脱机时,它会阻止drive_manager.py使用该驱动器存储图,直到再次“联机”它。
  • 只有当前已安装且在系统上可用且列为绘图驱动器的驱动器才能脱机。
  • 只有已脱机的驱动器才能联机。如果运行./drive_manager.py -h ,将获得已脱机的驱动器列表。如果没有驱动器已脱机,您将看不到-on--online_hdd选项。
  • 使用修改了所有绘图驱动器的排序选项natsort。现在,这自然可以完全按驱动器号排序。
  • -off--offline_hdd使特定驱动器脱机以进行维护,如果未安装驱动器或未分配驱动器,则显示stdout错误。
  • -on--online_hdd使已脱机的驱动器联机,使其立即可用于绘图。将仅列出已脱机的驱动器。

V0.3 2021-04-04 添加了多个命令行实用程序,以drive_manager.py包括:

  • -dr--drive_report 立即运行每日报告并发送电子邮件(如果已配置)。
  • -ct--check_temps 检查所有驱动器的温度,并向stdout返回报告。
  • -pr--plot_report 快速绘图报告,例如电子邮件报告,但输出到标准输出。
  • -ud--update_daily 设计为每24小时从cron呼叫一次。更新每日地块统计信息以提供24小时的地块统计信息(总地块,小时图,直到满天的天数)

在dailey电子邮件报告中增加了情节时间通知,包括:

  • 最近24小时的总地块
  • 每小时平均地块数(过去24小时)
  • 平均绘图速度(过去24小时)

V0.2 2021-03-23

  • 将系统日志记录类型移至plot_manager_config并更新了必要的功能。
  • 添加了per_plot系统通知功能(send_new_plot_notification())。
  • 更新了read_config_data()以支持ConfigParser布尔返回。
  • 更新了read_config_data()更改所需的功能
赞(0) 打赏
未经允许不得转载:Chia之家 » Chia Plot驱动器,及管理器和硬币监控软件

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

DIY Chia矿机,更便宜,更有乐趣

进入DIY矿机配置单

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏