O revizuire completă de la selecția componentelor până la configurarea software-ului pentru un sistem de exploatare a criptomonedei Chia.
Chia este o nouă criptomonedă care își propune să obțină un consens descentralizat cu un consum mai mic de energie pe tranzacție decât colegii săi. Acest lucru se realizează prin intermediul a Algoritmul de dovadă a spațiului în loc de dovada muncii.
În timp ce dovada muncii se bazează pe calcularea continuă a unei probleme de matematică (de obicei hash-uri, cum ar fi SHA256) în încercarea de a găsi rezultate care se potrivesc cu un model dorit, Chia se bazează în schimb pe verificarea existenței anumitor proprietăți în fișiere unice pre-generate numite ploturi.
Acest lucru se face într-un proces în două etape numit agricultură constând din:
- Trasarea unde sunt create fișiere unice mari (de obicei 101.6 GB).
- Și recoltat unde fișierele create anterior sunt verificate pentru șansa de a câștiga recompensa acelui bloc (în prezent 2 Chia).
Cu cât un nod are mai multe parcele (de stocare mai mare folosită), cu atât este mai mare șansa de a câștiga recompensa acelui bloc. Există 4608 șanse de câștig zilnic și probabilitatea de a câștiga recompensa acelui bloc se bazează în primul rând pe numărul de parcele pe care le deține, proporțional cu dimensiunea totală a rețelei. Este oferit un calculator de câștiguri aici.
Prin urmare, pentru a maximiza recompensele dorim să avem cea mai mare cantitate de stocare posibilă și suficiente resurse de calcul pentru a umple spațiul de stocare menționat cu parcele.
Ca și în cazul majorității problemelor de proiectare, există o infinitate de soluții valide pentru combinația de dispozitive care pot fi folosite pentru a cultiva Chia. Pentru a ajuta la restrângerea opțiunilor, am început prin a decide asupra unor constrângeri și priorități:
- Costul în USD/TB ar trebui redus la minimum în ciuda complexității suplimentare (în limita motivului).
- Din cauza timpului meu limitat disponibil pentru a-l dedica acestui proiect, sistemul ar trebui să fie compus în cea mai mare parte din piese disponibile (fără PCB-uri personalizate, șasiu personalizat etc.).
Plot – Procesare
În funcție de configurația hardware, crearea unui singur plot poate dura între 4 și 20 de ore. Prin urmare, alegerea hardware-ului potrivit pentru plotare poate fi diferența între a vă umple întreaga fermă în zile față de luni.
Este important să se ia în considerare nu numai viteza cu care este realizată fiecare parcelă, ci și numărul de parcele concurente care pot fi create. De exemplu, o configurație care creează 10 diagrame concomitente la 12 ore fiecare va produce 20 de diagrame (~2TB/zi), în timp ce o configurație care prezintă 1 diagramă simultană la fiecare 4 ore va produce doar 6 diagrame pe zi (0.6TB/zi).
Pentru a minimiza costurile, am decis să caut servere scoase din funcțiune. Aceste servere au câteva proprietăți interesante care le-ar putea face plotere puternice, inclusiv:
- Numărul mare de nuclee poate permite mai multe parcele în paralel. Faza 1 (aproximativ jumătate din timpul de plot) este multithread (de obicei configurată să fie între 2 și 4 fire), dar fazele rămase sunt cu un singur thread.
- RAM disponibilă este, de obicei, peste cea necesară pentru a trasa (~4 GB/parcela simultană).
- Proiectat pentru a funcționa la sarcină mare pentru perioade lungi de timp.
După ce am trecut peste zeci de opțiuni și configurații posibile, m-am mulțumit cu un HP ProLiant DL380p Gen8 cu 2x Intel E5–2670 și 192 GB de RAM DDR3. Cu hyper-threading activat, acest server ar putea suporta ipotetic trasarea simultană a până la 16 parcele în faza 1 pentru mai puțin de 400 USD.
Plot - Stocare temporară
Datorită încărcării mari de scriere în timpul creării plotului (aproximativ 1.6 TB scris pentru plot ak=32), alegerea mediului de stocare temporară poate avea un impact semnificativ asupra timpului și costului de plotare. Câteva puncte de luat în considerare:
- Cu cât stocarea este mai rapidă, cu atât mai rapid pot fi create parcele. Acest fir discută 4 ore de timpi de diagramă folosind RAMDISK (montează un folder pe RAM).
- Având în vedere volumul mare de scriere, este important să se ia în considerare rezistența mediului. Un SSD NVMe de 1TB de gradul de consum are de obicei o rezistență de aproximativ 600 TBW (teraocteți scrisi) înainte de a se aștepta să eșueze, ceea ce ar însemna că ar putea face aproximativ 375 de parcele.
Am ajuns să optez pentru a cumpăra un HP StorageWorks D12 cu 2600 locații și unități SAS de 15K 450GB. Cu această configurare, pot complot simultan pentru fiecare unitate, fără a risca conflicte IO la nivel de unitate. Unitățile JBOD + au fost semnificativ mai ieftine decât o configurare echivalentă cu unități NVMe (fără măcar a lua în considerare costul de înlocuire după ce a fost atins TBW).
Fermă — Depozitare pe termen lung
Spre deosebire de stocarea de plotare, stocarea de recoltare nu necesită un debit mare sau IOP-uri. Din acest motiv, reducerea costurilor a fost cea mai mare prioritate.
Există mai multe configurații posibile, dintre care unele sunt discutate aici. Cu toate acestea, după ce am căutat pe eBay opțiuni second-hand, câteva lucruri au devenit clare:
- Hard disk-urile mai mari de 3.5″ tind să aibă cel mai mic cost. Acest lucru are sens, deoarece majoritatea dispozitivelor din zilele noastre au trecut la dimensiuni mai mici de 2.5″ sau 1.8″.
- Hard disk-urile SAS (nu SSD-urile) păreau să aibă cel mai mic cost pe TB, cu unele loturi de până la 10 USD/TB (din mai 2021). Aceste unități SAS nu sunt compatibile cu plăcile SATA (de consum) și sunt de obicei vândute pe eBay după ce au fost scoase din funcțiune din centrul de date al unei companii.
Odată ce m-am limitat la utilizarea hard disk-urilor SAS de 3.5 inchi, trebuia să găsesc o modalitate de a le conecta efectiv la harvester/plotter-ul meu. Ținând cont de constrângerea de a nu construi carcasa/backplane-ul, am început să caut carcase uzate care ar putea găzdui aceste unități, menținând în același timp cel mai mic cost per locație.
Am dat peste mai multe opțiuni pe eBay și am ajuns să cumpăr câteva modele diferite, inclusiv un HP 24PAR cu 3 de locații și două IBM DS12 cu 3512 locații.
Lista plina
Lista finală a componentelor este prezentată mai jos. Acesta include componentele principale discutate mai sus, dar și părți auxiliare care sunt necesare pentru a monta sistemul.
O mențiune demnă este cardul HBA. Este placa PCIe care expune conectorii externi SAS la care se vor conecta cablurile de la JBOD-uri. Când îl cumpărați, asigurați-vă că obțineți un card de mod țintă inițiator (IT), astfel încât unitățile să apară direct în sistemul de operare, spre deosebire de un card de mod IR. Ca un lucru plăcut, poate doriți să primiți un card flash cu un sistem de operare mai nou (versiunea 20).
Configurarea este în mare parte intuitivă. Cablurile se conectează la orificiile în care se potrivesc. Cu toate acestea, cablarea SAS care conectează JBOD-urile și mașina de trasat/recoltat poate fi conectată în lanț.
În cazul meu, am două cabluri care părăsesc serverul (câte unul pe fiecare port de la HBA). Unul dintre cabluri se conectează la intrarea matricei de stocare temporară (HP D2600), iar ieșirea matricei respective se conectează la matricea HP 3PAR. Celălalt cablu se conectează la prima matrice IBM, iar ieșirea acestuia se conectează la a doua matrice IBM. JBOD-urile au de obicei un port de intrare (primar) și un port de ieșire (de obicei etichetat cu o săgeată spre exterior).
Am instalat Ubuntu 20.04 LTS pe server, deoarece este o distribuție Linux utilizată pe scară largă, ceea ce înseamnă că ar fi mai ușor să găsiți forumuri de depanare dacă apar probleme. Pașii de mai jos descriu configurația rămasă.
Pasul 1: Asigurați-vă că toate unitățile sunt disponibile
Primul pas este să verificați ce unități sunt detectate de sistemul de operare. Acest lucru poate fi realizat prin rularea lsscsi
comanda. A cărui ieșire este prezentată mai jos.
Rețineți că comanda de mai sus nu oferă informații despre sistemul de fișiere sau dimensiunea unităților. Pentru asta, rulați lsblk
comanda.
Important: Rețineți că nu toate unitățile apar sub ambele comenzi! Unitățile care apar sub lsscsi
dar nu lsblk
poate avea unele incompatibilități care fac ca sistemul de operare să nu le facă disponibile pentru montare etc. Un exemplu în acest sens este /dev/sdaw
.
În cazul meu, această problemă a fost cauzată din cauza dimensiunii sectorului de 520, care nu este acceptată de kernel-ul meu Linux instalat (discuția pe acest subiect poate fi găsită aici și aici). Puteți determina dacă acesta este cazul dvs. uitându-vă peste dmesg
jurnalul comenzii pentru un mesaj de eroare precum [sdaw] Unsupported sector size 520
.
Pentru a rezolva acest lucru, am reformatat unitățile folosind o dimensiune de bloc de 512 cu comanda sg_format -v --format --size=512 /dev/sdX
. Această comandă poate dura o perioadă semnificativă de timp pentru a rula (câteva ore), iar rezultatul este afișat mai jos.
La finalizare, unitatea ar trebui să apară în lsblk
ieșire.
Pasul 2: Creați un sistem de fișiere pe unități
Pentru a formata unitățile cu ext4 sistem de fișiere, am rulat următoarea comandă: sudo mkfs -t ext4 — verbose /dev/sda
.
Pasul 3: Montați unitățile
Acum că putem accesa unitățile și acestea au fost formatate cu sistemul de fișiere dorit, putem monta aceste unități.
- Creați folderele în care vom monta unitățile. De exemplu:
/mnt/farm/00
la/mnt/farm/23
pentru unitățile care vor stoca parcelele finale și/mnt/plot-tmp/00
la/mnt/plot-tmp/11
pentru locațiile temporare de parcelare. - Alerga
sudo blkid
pentru a obține ID-urile unice ale unităților (sau partițiilor). Va scoate mai multe linii, cum ar fi/dev/sdae: UUID=”29494f44–2f75–4c01-a766–18755eb583d7" TYPE=”ext4"
. - Editați fișierul fstab cu
sudo vim /etc/fstab
și asociați fiecare dintre unități cu corespondența lor/mnt/...
pliant. Fi atent să nu editați primele linii ale fișierului, deoarece acestea sunt necesare pentru a monta unitatea rădăcină a sistemului de operare. Fișierul meu final este afișat mai jos. - Alerga
sudo mount -a
pentru a monta toate unitățile specificate în fișierul fstab. Acesta va monta doar unități care nu sunt deja montate, astfel încât să fie rulat în siguranță de mai multe ori. - Asigurați-vă că utilizatorii au acces la unități și fișierele acestora, rulând sudo
chmod -R 777 /mnt/farm/00
.
Pasul 4: Rulați software-ul Chia Blockchain
- Urmați instrucțiunile oficiale specificate aici pentru a instala blockchain-ul Chia (nu am instalat GUI-ul).
- Alerga
chia start farmer
pentru a porni demonii pentru portofel, recoltator etc.
Pasul 5: Configurați Plotman (opțional)
Plotman este un manager de plotting care va prelua crearea de noi locuri de muncă de plotting. Este un instrument comod (nu este necesar).
- Instalați Plotman urmând instrucțiunile aici.
- Editati
plotman.yaml
conform specificațiilor plotter-ului dvs. Fișierul meu final este afișat mai jos.
interfața cu utilizatorul:
use_stty_size: Adevărat
directoare:
jurnal: /home/plotter/plotman-logs
tmp:
- /mnt/plot-tmp/f00
- /mnt/plot-tmp/f01
- /mnt/plot-tmp/f02
- /mnt/plot-tmp/f03
- /mnt/plot-tmp/f04
- /mnt/plot-tmp/f05
- /mnt/plot-tmp/f06
- /mnt/plot-tmp/f07
- /mnt/plot-tmp/f08
- /mnt/plot-tmp/f09
- /mnt/plot-tmp/f10
- /mnt/plot-tmp/f11
dst:
#- /mnt/farm/00 FULL
#- /mnt/farm/01 FULL
#- /mnt/farm/02 FULL
#- /mnt/farm/03 FULL
#- /mnt/farm/04 FULL
#- /mnt/farm/05 FULL
#- /mnt/farm/06 FULL
#- /mnt/farm/07 FULL
#- /mnt/farm/08 FULL
#- /mnt/farm/09 FULL
#- /mnt/farm/10 FULL
#- /mnt/farm/11 FULL
- /mnt/farm/12
- /mnt/farm/13
- /mnt/farm/14
- /mnt/farm/15
- /mnt/farm/16
- /mnt/farm/17
- /mnt/farm/18
- /mnt/farm/19
- /mnt/farm/20
- /mnt/farm/21
- /mnt/farm/22
- /mnt/farm/23
programare:
tmpdir_stagger_phase_major: 2
tmpdir_stagger_phase_minor: 1
tmpdir_stagger_phase_limit: 1
tmpdir_max_jobs: 1
global_max_jobs: 20
global_stagger_m: 40
timp_de_votare: 30
complot:
k: 32
e: Fals # Utilizați opțiunea de trasare -e
n_threads: 2 # fire per job
n_buckets: 128 # Numărul de compartimente în care să împărțiți datele
job_buffer: 8096 # Per memorie de lucru
Câteva puncte care merită menționate:
- Plotman nu oprește programarea la drive-uri fermă (în momentul scrierii acestui articol) când unitatea este plină. Prin urmare, trebuie să le eliminați (sau să le comentați ca mai sus).
- Plotman va adăuga automat unități agricole la mașina de recoltat chia.
- eu folosesc
tmpdir_max_jobs
egal cu 1, deoarece complotez pe hard disk-uri care nu au o performanță bună de căutare în comparație cu SSD-urile.
Pasul 6: Rulați plotterul
În acest moment, tot ceea ce este necesar pentru a începe să complotezi este să rulezi plotman interactive
.
Notă: Lucrarea de lungă durată la care se complotează /dev/farm/usb2
este o rulare de depanare care nu este menită să ruleze până la final.
Sper că această cutie a fost de ajutor pentru a vă oferi o idee despre ceea ce este necesar pentru a cultiva Chia!
Începând de acum, ferma mea este plină la 1/3 din drum și plănuiesc să postez actualizări pe măsură ce se umple și când încep să re-plotez pentru piscine.
Multumiri speciale Katie Gandomi pentru ajutor la dezvoltare.
Fericire agricultură!
- acces
- Suplimentar
- TOATE
- în jurul
- Golf
- blockchain
- Clădire
- cumpăra
- Cumpărare
- cauzată
- șansele
- control
- component
- tehnica de calcul
- Consens
- consumator
- consum
- cryptocurrency
- de date
- zi
- descentralizată
- Amenajări
- Dezvoltare
- Dispozitive
- FĂCUT
- Câștig
- eBay
- energie
- EU
- EV
- fermă
- agricultură
- First
- potrivi
- format
- Complet
- Oferirea
- bine
- Piese metalice
- Înalt
- casă
- hr
- HTTPS
- ia
- IBM
- idee
- Impactul
- Inclusiv
- informații
- Intel
- IP
- IT
- Loc de munca
- Locuri de munca
- mare
- Nivel
- Limitat
- linux
- Listă
- încărca
- Lung
- LP
- Meci
- matematica
- mediu
- Minerit
- luni
- reţea
- oficial
- Opţiuni
- Altele
- Model
- performanță
- piscine
- proiect
- dovadă
- RAM
- Resurse
- REZULTATE
- revizuiască
- Recompense
- instalație
- Alerga
- funcţionare
- sigur
- Caută
- sens
- Mărimea
- So
- Software
- vândut
- soluţii
- REZOLVAREA
- Spaţiu
- viteză
- împărţi
- Începe
- început
- depozitare
- stoca
- a sustine
- Suportat
- sistem
- Ţintă
- temporar
- timp
- tranzacție
- actualizări
- utilizatorii
- Impotriva
- volum
- Portofel
- Ce este
- Wikipedia
- câştiga
- în
- Apartamente
- valoare
- scris