练习分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
连通性测试#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个任务。
本文暂时没有评论,来添加一个吧(●'◡'●)