百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

P盘chia练习

haoteby 2025-02-07 17:33 10 浏览

练习分ubuntu和windows两个系统做操作总结:

一,ubuntu系统,准备工作:ubuntu20.04系统文本模式常规安装,默认安装openssh

提醒:P盘chia步骤1,2,3为必须,4,5为管理优化

步骤开始:

1,挂载最终存储plot文件的硬盘,建议格成NTFS,方便后续与window系统互通

首先需要有ntfs-3g才能挂载ntfs格式硬盘,没有的话安装

sudo apt-get install ntfs-3g

挂载失败尝试修复sudo ntfsfix /dev/sda1

卸载挂载sudo umount /dev/sda1

读写挂载硬盘sudo mount -o rw /dev/sda1 /home/root1/phdd

——————————————————————————

可能会出现报错提示的解决办法:

报错提示:mount ntfs 分区只读 --Falling back to read-only mount because the NTFS partition is in an unsafe state.

root权限下执行,非root权限首部添加sudo

安装ntfsprogs:

apt install ntfsprogs

安装之后:

ntfsfix /dev/sda1

修复之后先umount:

umount /dev/sda1

之后在mount:

mount -o rw /dev/sda1 /home/root1/phdd


报错提示:Mount is denied because the NTFS volume is already exclusively opened.The volume may be already mounted, or another software may use it which could be identified for example by the help of the 'fuser' command.

我在挂载NTFS文件系统的移动硬盘时输入sudo mount /dev/sdb1 /mnt/sdb 时出现了以上的错误,通过错误语句的输出可以知道NTFS卷被拒绝是因为已经执行打开,可能已经被挂载或者有应用程序正在使用它,可以使用fuser命令显示正在使用指定的file,file system或者socket的进程信息。

如#fuser -m -u /dev/sdb1 使用-m -u显示正在使用/dev/sdb1的进程PID以及用户名称,如我输入上述命令后显示的情况

表明是PID为2195的进程正在使用它,如果命令为fuser -m -u /deev/sdb1,那么显示为/dev/sdb1: 2195(root)表示root用户的2195进程正在使用/dev/sdb1,可以使用kill命令杀死该进程,kill 2195,此时在使用mount命令就不会出错了。

————————————————————————————————————

mkfs.ntfs -f -L NTFS /dev/sda1 #执行快速格式化成ntfs格式

mount -t ntfs-3g /dev/sda1 /home/root1/phdd #挂载到对应目录下


自动挂载(防止每次重启都要手动挂载)

编辑/etc/fstab文件 ,末行新增如下内容

vi /etc/fstab

dev/sda1 /home/root1/phdd ntfs-3g defaults 0 0

dev/nvme0n1 /home/root1/cssd ext4 defaults 0 0

————————————————————————————————————

当install某个东西时,给出下面报错提示

E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarly unavailable)

E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is an other process using it?

删除锁定文件

sudo rm /var/lib/dpkg/lock-frontend

sudo rm /var/lib/dpkg/lock

可能需要修改主机名和密码方便管理

1.修改root密码

sudo passwd root

然后登陆root账户

su root

2.更改主机名

(1) 修改hostname文件,修改里面内容为新的主机名

sudo vim /etc/hostname

(2) 修改hosts文件,修改原来的名字为新的主机名

sudo vim /etc/hosts

3. 更改用户名

修改shadow 文件

sudo vim /etc/shadow

这个文件的格式如下:

username: passwd: lastchg: min: max: warn: inactive: expire: flag

将里面原来用户名修改为新的:如把aa换为bb

aa:$1$6riXbr51$e1lV8XTFgE2lhd2ZglvU//:17734:0:99999:7:::

bb:$1$6riXbr51$e1lV8XTFgE2lhd2ZglvU//:17734:0:99999:7:::

#在vi编辑器的底行模式下用新文件名全部替换旧的,把aa替换成bb

:%s/aa/bb/g

(2)修改用户家目录

cd /home

mv aa bb

(3)修改passwd 文件

sudo vim /etc/passwd

如下旧用户名

aa:x:1000:1000:cq,,,:/home/aa:/bin/bash

新用户名

bb:x:1000:1000:cq,,,:/home/bb:/bin/bash

后面家目录的用户名一起改

(4)修改原来用户下文件所属的组:

sudo vim /etc/group

在vim的底行模式下用新文件名全部替换旧的

:%s/aa/bb/g

重启系统就ok了

—————————————————

虚拟机-ubuntu18.04下修改静态ip,注意格式同下图,否则重启网络会有相应报错

sudo vi /etc/netplan/xxxx.yaml文件

修改完成后重启网络sudo netplan apply

______________________________________________________

无需输入密码提升权限sudo -i (默认是需要输入密码)

可能用到的快捷命令:yy复制光标所在行,p粘贴到光标所在行的下一行

sudo vi /etc/sudoers

在末行添加如下:然后x!强制保存退出 bb为用户

bb ALL=(ALL:ALL) NOPASSWD: ALL

2,把用作缓存的ssd盘,在系统下创建软阵列raid0以方便管理和提升速度

apt install mdadm

创建软阵列

/dev/md0是磁盘名, --level=0指的是RAID 0, --raid-devices=3代表3个磁盘数, /dev/sda{1, 2, 3}是磁盘名:

sudo mdadm --create --verbose /dev/md0 --level=0 --raid-devices=3 /dev/sda{1,2,3}

sudo mdadm --create --verbose /dev/md0 --level=0 --raid-devices=4 /dev/nvme{0,1,2,3}n1

用指令看下构建情况, 只要没有进度条, 就是构建完成:

cat /proc/mdstat

格式化软阵列md0为ext4格式

sudo mkfs.ext4 -F /dev/md0

挂载到home/root1/cssd下

sudo mount /dev/md0 /home/root1/cssd

用df -h 查看是否可用

保存raid,否则重启会失效

sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

sudo update-initramfs -u

echo '/dev/md0 /home/root1/cssd ext4 defaults, nofail, discard 0 0' | sudo tee -a /etc/fstab

上面的一条命令相当如写入fstab自动挂载了

自动挂载(防止每次重启都要手动挂载)

编辑/etc/fstab文件

vi /etc/fstab

不需要软阵列时需要,卸载、停止RAID

sudo umount /home/root1/cssd

sudo mdadm --stop /dev/md0

sudo mdadm --zero-superblock /dev/sdb /dev/sdc

#按照自己是实际设备号做相应修改

打开/etc/fstab, 删除或注释掉之前输入的配置.

sudo vim /etc/fstab

删除RAID定义:

sudo vim /etc/mdadm/mdadm.conf

#删除该行时按dd,复制该行时按yy,粘贴按p

最后, 更新initramfs:

sudo update-initramfs -u

简单来说, 就是将之前的操作反向操作, 如果没有删干净, 会导致启动时进入修复模式, 在修复模式中也可以再删除。

———————————————— —————————————

3,安装chia相关工具:

sudo yum update -y

sudo yum install python3 git -y

git clone github.com/Chia-Network -b latest

cd chia-blockchain

sh install.sh

. ./activate

注意". ./activate"这个一定不要打错,执行完之后会进入一个python虚拟环境,如下所示,会有一个(venv)的前缀

首次安装,执行

chia init

做chia的初始化;因为我们之前已经生成过钱包密钥,所以这里不再生成,而是直接添加:

# 添加你的key(就是那20几个助记词)

chia keys add

用命令行启动:

chia start farmer

这个命令会把full-node、farmer、harvester、wallet都启动

mdadm --create --verbose /dev/md0 --level=0 --raid-devices=4 /dev/nvme0n1 /dev/nvme1n1 /dev/nvme2n1 /dev/nvme3n

p一个任务,4GB-2线程

nohup chia plots create -k 32 -b 4000 -r 2 -n 1 -t /home/root1/cssd -d /home/root1/phdd >> plots2.log 2>&1 &

-b 4000就是任务共使用的内存大小(MB),

-n 1就是制作1个plot文件

-r就是并发线程,-r 12即1个plot文件用2个线程。

-t /home/root1/cssd,临时缓存盘的目录地址

-d /home/root1/phdd,最终存储plot文件的地址

p十个任务命令如下(就是写10个循环),或者把上面的命令再敲9遍

i=1

for i in 10

do

nohup chia plots create -k 32 -b 4000 -r 2 -t /home/root1/cssd -d /home/root1/phdd >> plots2.log 2>&1 &

let i=$i+1

done

4,可能用到的命令:

free -hs 900 每900秒输出一次内存使用率,主要看used,buff/cache,free值

stat filename#查看文件更改时间属性值

ls -l|grep "^-"| wc -l#汇总当前目录下的文件总数

df -h 查看挂载关系和磁盘使用量。

让history命令显示命令的执行时间=[%F %T],[`whoami`][${USER_IP}]分别指用户和用户ip

1)在/etc/profile的最后添加如下部分:

USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`

export HISTTIMEFORMAT="[%F %T][`whoami`][${USER_IP}] "

2)source /etc/profile

在linux服务器上,经常会遇到复制代码,粘贴进来的格式变了解决方法:

在vi普通模式下执行

:set paste 命令,再按 i 插入就会保留原文件格式

如果你想关闭:

:set nopaste

————————————————————————————————

5,在管理器上安装自动化运维工具ansiable

配合ssh免密登录,批处理.sh文件,用来批处理自动分区挂载,自动做raid,自动分发任务,自动汇总输出

,自动提高cpu为最佳性能模式,自动输出状态和结果,定义任务数以后自动添加任务和删除某个时间段内运行过慢的任务。

自动化运维工具ansiable详细介绍:
https://www.cnblogs.com/keerya/p/7987886.html

基本命令格式

ansible [-f forks] [-m module_name] [-a args]

连通性测试#web为hosts的内容,hosts默认目录/etc/ansible/。。连续的IP地址从10到23可以写为192.168.1.[10:23]

ansible web -m ping

执行下面的命令,查看Ansible被管理端服务器的主机名:

ansible all -a ‘hostname’

#ansible all -m command -a "hostname"(command也是个Ansible默认模块,-m command可以不写)

command 模块。这个模块可以直接在远程主机上执行命令,并将结果返回本主机,该命令不支持管道命令。

  举例如下:

ansible vm -m command -a 'ip a'

shell 模块。shell模块可以在远程主机上调用shell解释器运行命令,支持shell的各种功能,例如管道。shell模块被称为万能模块,command模块能干的不能干的它都能干

ansible vm -m shell -a 'cat /etc/passwd |grep "keer"'

file 模块。该模块主要用于设置文件的属性,比如创建文件、创建链接文件、删除文件等

删除文件:

ansible web -m file -a 'path=/data/a state=absent'

再次查看/data/a已不存在

ansible web -m shell -a 'ls /data/a'

script 模块。该模块用于将本机的脚本在被管理端的机器上运行。直接指定脚本的路径即可。

ansible web -m script -a 'df.sh'

setup 模块。该模块主要用于收集信息。是通过调用facts组件来实现的。facts组件是Ansible用于采集被管机器设备信息的一个功能,我们可以使用setup模块查机器的所有facts信息,可以使用filter来查看指定信息。

查看内存:

ansible vm -m setup -a 'filter="*mem*"'

保存信息。setup模块还有一个很好用的功能就是可以保存我们所筛选的信息至我们的主机上,同时,文件名为我们被管制的主机的IP,这样方便我们知道是哪台机器出的问题

ansible web -m setup -a 'filter="*mem*"' --tree /tmp/facts

cd /tmp/facts/

apt模块。

批量安装apache2 :

ansible vm -m apt -a "name=apache2 state=present"

ansible vm -m apt -a "name=apache2 state=latest"

批量卸载apache2 :

ansible vm -m apt -a "name=apache2 state=absent"

说明:

name # 指定安装软件名称

state # 指定是否安装软件

  absent  # 卸载

  build-dep

  latest   # 安装最新版本

cron模块。批量设置多个主机的定时任务信息

问题是remote机器的默认python版本为python3

把变量添加到hosts

cd /etc/ansible

sudo vi hosts

ip地址后面加上
ansible_python_interpreter=/usr/bin/python3

___________________________________________________________________

二,windos系统,windows server2019默认安装,带GUI

以下总结来自于实测过程中记录的表格“chia总结.xls”

windows下p盘chia(奇亚)总结:

2680v3*2

12个任务---11时

2680v3*2

14个任务---12时

2680v3*2

20-22个任务---13时

2660v2*2

12个任务---12-13时

2670*2

12-14个任务---12-13时

2680v4*2

15个任务--12-13时

2680v4*2

18个任务--14时

当K=32时,猜想的理论p盘值,


处理器

线程

内存/GB

NVME/TB

P盘数

TB/24小时

猜测13个小时完成

按cpu线程算

E5-2670*2

32

64

5.5

14

2.8

E5-2660v2*2

40

80

6

18

3.32

E5-2680v3*2

48

96

7.5

22

4.06

8120M*2

72

142

8

24

4.43









当p盘数为n时公式:


2n

4n

n/3

n

2.4n/13


当固态容量为nTB时公式:


6n

12n

n

n/2x6

[(n/2)x6x2.4]/13


例,假设n个任务跑完耗时a个小时,24小时可P图的总容量为cTB,求解c值:0.1n:a=c:24c=2.4n÷a





实际测试,

计算机

线程

CPU

NVME缓存盘/TB

P盘数

TB/24小时

换算

RD350X

48

2680v3*2

P4500 2T*2

12

2.6

11小时完成


48

2680v3*2

P4500 2T*4

22

4

13小时完成


48

2680v3*2

P4500 2T*4

22

3.1

ubuntu下17小时完成


48

2680v3*2

P4500 2T*4

20

3.69

13小时完成

R720

40

2660v2*2

P4500 2T*2

12

2.3

12.5小时完成

R720

32

2670*2

华为3.2T+1.6T

14

2.68

12.5小时完成





13

2.6

12小时完成





12

2.5

11.5小时完成

5212M4


2680v4*2

OEM 2T*3

18

3.08

14小时完成



2680v4*2

OEM 2T*3

15

3.26

12.5小时完成

总结1,4G-2H是基础,4G-8H速度最优。4G-6H速度稍慢;4G-16H/8G-16H速度等同4G-8H

总结2,能并行的P盘数越多越快,平均每绘的速度就越快,即缓存盘越大越好

总结3,当k=32时,一个2T固态最多并行6个任务

#理论硬件搭配k=32=102G=temp306G

1个任务:1*256G缓存盘----1*2H----1*4G(默认)

n个任务:n*256G缓存盘----n*2H----n*4G

#实际同时并行后的某段内存峰值大于2倍之多,适当错峰并行为上策,测试的过程是要重点得出cpu的p盘性能,故未做错峰策略。

当k=32时,一个2T固态最多并行6个任务。

相关推荐

Java多线程问题大揭秘:从底层原理到解决方案

并发编程为什么会出问题?现代计算机为了提高计算机的整体能力,操作系统做出了以下努力:CPU增加了缓存...

一文吃透ConcurrentHashMap的前世与今生

HashMap是线程不安全的类,k-v类型数据操作在多线程下推荐使用ConcurrentHashMap。本文将会延续HashMap的解读思路,对ConcurrentHashMap从关键成员变量,核心方...

一种文件转换器的设计与实现_一种文件转换器的设计与实现方法

摘要:随着计算机技术的飞速发展,数据和信息以各种文件格式被组织并存储在计算机系统中。为了提高对数据和信息的共享效率,需要进行文件格式转换,支持不同软件的处理和应用需要。采用经典的软件开发方法和技术...

聊聊Java8之后的JDK升级内容_jdk8之后的新特性

Java都已经更新到SE12了..公司用的还是Java8,觉得是应该了解下SE8之后的更新内容了,从网上搜集整理了一下核心的功能更新文章概览...

10分钟搭建Linux常用服务器《带视频教程》

详细教程资料+课件关注+后台私信;资料;两个字可以免费视频领取+文档+各大厂面试题资料内容包括:C/C++,Linux,golang,Nginx,ZeroMQ,MySQL,Redis,fastdf...

JVM内存结构_jvm内存结构和内存模型

前言Java程序的运行是通过Java虚拟机来实现的。通过类加载器将class字节码文件加载进JVM,然后根据预定的规则执行。Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同...

阿里架构师整理的 Netty 学习笔记之:Java NIO 网络编程

本系列为Netty学习笔记,本篇介绍总结JavaNIO网络编程...

JVM - CMS垃圾收集器(建议收藏)_java垃圾收集器

今天,继续给大家分享关于JVM的文章,今天给大家带来的是一篇关于JVMCMS垃圾收集器的文章,好了,不多说了,进入今天的正题。...

[Maven]Eclipse插件之Maven配置及问题解析.

前言:今天在自己环境装了Maven环境,并且安装了Eclipse插件,在查找插件过程中确实遇到一些问题,好不容易找到一个却又有问题.装好了插件之后,用Eclipse创建Maven项目却出现两...

升级 JDK17 被这 8 个坑坑惨了!附解决方案,程序员必看

别再盲目升级JDK17了!最近帮三个项目从JDK8升到17,踩了一肚子坑,半夜改bug改到怀疑人生。这些坑看着不起眼,掉进去能让你加班到崩溃。今天把最致命的8个坑和解决方案整理出来,...

JVM-垃圾回收算法和垃圾回收器_jvm 垃圾回收算法

一、GC-垃圾回收:stop-the-world(stw):他会在任何一种GC算法中发生。stw意味着jvm因为需要执行GC而停止了应用程序的执行。当stw发生时,出GC所需的线程外,所有的线程都进...

JDK9~11版本和相关特性,建议收藏使用

JDK9(2017.09.21-2018.01.26)功能特性1、modularitySystem模块系统...

MySQL 主从复制、读写分离理论分析+实战演示

引言在企业应用中,成熟的业务通常数据量都比较庞大,如果对MySQL数据库的读和写都在一台数据库服务器上操作,无论是在安全性、高可用性,还是高并发等各个方面都是不能满足实际需求的。因此,一般来说都是...

「年底备战」Java 高级面试题之Java基础(附答案详解)

前言好哥哥们,Redis系列文章可能会先不弄了,目前的话写到了第二十四篇深入理解Redis主从复制,有感兴趣的好哥哥可以翻翻这个系列的文章(看完记得点赞加关注哟)。后面的话应该是会整理一些面试相关...

搭建Java开发环境_搭建java开发环境的基本步骤是什么?

要开发Java程序首先必须要配置好环境变量,而Java的运行环境的配置比较麻烦。下面来看一下JDK的安装过程。在这里JDK选用的是jdk1.7.0_07版本。安装步骤:首先,...