Een compleet overzicht van componentselectie tot softwareconfiguratie voor een Chia cryptocurrency-landbouwsysteem (mijnbouw).
Chia is een nieuwe cryptocurrency die gericht is op het bereiken van gedecentraliseerde consensus met een lager energieverbruik per transactie dan zijn soortgenoten. Dit wordt bereikt via een proof of space-algoritme in plaats van bewijs van werk.
Terwijl proof of work afhankelijk is van het continu berekenen van een wiskundig probleem (meestal hashes zoals SHA256) in een poging resultaten te vinden die overeenkomen met een gewenst patroon, vertrouwt Chia in plaats daarvan op het controleren op het bestaan van bepaalde eigenschappen in unieke, vooraf gegenereerde bestanden die plots worden genoemd.
Dit gebeurt in een tweestapsproces genaamd landbouw bestaande uit:
- Plotten waar grote unieke bestanden (meestal 101.6 GB) worden gemaakt.
- En oogst waar de eerder gemaakte bestanden worden gecontroleerd op een kans om de beloning van dat blok te winnen (momenteel 2 Chia).
Hoe meer plots (meer opslagruimte gebruikt) een knooppunt heeft, hoe groter de kans om de beloning van dat blok te winnen. Er zijn dagelijks 4608 kansen om te winnen en de kans om de beloning van dat blok te winnen is voornamelijk gebaseerd op het aantal plots dat iemand bezit in verhouding tot de totale netwerkgrootte. Er is een inkomstencalculator beschikbaar hier.
daarom Om de beloningen te maximaliseren, willen we over de grootst mogelijke hoeveelheid opslagruimte beschikken en voldoende computerbronnen om de opslag met plots te vullen.
Zoals bij de meeste ontwerpproblemen zijn er oneindig veel geldige oplossingen voor de combinatie van apparaten die kunnen worden gebruikt om Chia te kweken. Om de opties te helpen beperken, begon ik met het bepalen van een aantal beperkingen en prioriteiten:
- De kosten in $/TB moeten ondanks de extra complexiteit (binnen redelijke grenzen) worden geminimaliseerd.
- Omdat ik weinig tijd heb om aan dit project te besteden, zou het systeem grotendeels moeten bestaan uit kant-en-klare onderdelen (geen op maat gemaakte PCB's, op maat gemaakte chassis, enz.).
Plotten - Verwerken
Afhankelijk van de hardware-installatie kan het maken van één plot tussen de 4 en 20 uur duren. Daarom kan het kiezen van de juiste plothardware het verschil maken tussen het vullen van uw hele boerderij in dagen of maanden.
Het is belangrijk om niet alleen rekening te houden met de snelheid waarmee elke plot wordt gemaakt, maar ook met het aantal gelijktijdige plots dat kan worden gemaakt. Een opstelling die bijvoorbeeld 10 gelijktijdige plots maakt op elk 12 uur, zal 20 plots produceren (~2TB/dag), terwijl een opstelling die elke 1 uur één gelijktijdige plot maakt, slechts 4 plots per dag zal produceren (6TB/dag).
Om de kosten te minimaliseren, besloot ik te zoeken naar buiten gebruik gestelde servers. Deze servers hebben een aantal interessante eigenschappen waardoor ze krachtige plotters kunnen worden, waaronder:
- Een groot aantal kernen kan meerdere parallelle plots mogelijk maken. Fase 1 (ongeveer de helft van de plottijd) is multithreaded (meestal geconfigureerd met tussen de 2 en 4 threads), maar de overige fasen zijn single-threaded.
- Het beschikbare RAM-geheugen is doorgaans groter dan het RAM-geheugen dat nodig is om te plotten (~4GB/gelijktijdige plot).
- Ontworpen om gedurende langere tijd onder hoge belasting te werken.
Nadat ik tientallen opties en mogelijke configuraties had doorgenomen, heb ik genoegen genomen met een HP ProLiant DL380p Gen8 met 2x Intel E5–2670 en 192 GB DDR3 RAM. Als hyperthreading is ingeschakeld, kan deze server hypothetisch het gelijktijdig plotten van maximaal 16 plots in fase 1 ondersteunen voor minder dan $ 400.
Plotten — Tijdelijke opslag
Vanwege de hoge schrijfbelasting tijdens het maken van een plot (ongeveer 1.6 TB geschreven voor een k=32 plot), kan de keuze voor een tijdelijk opslagmedium een aanzienlijke impact hebben op de plottijd en -kosten. Een paar punten om te overwegen:
- Hoe sneller de opslag, hoe sneller plots kunnen worden aangemaakt. Deze draad bespreekt 4 uur plottijden met behulp van RAMDISK (koppel een map aan RAM).
- Gezien het grote schrijfvolume is het belangrijk om rekening te houden met de duurzaamheid van het medium. Een 1TB NVMe SSD van consumentenkwaliteit heeft doorgaans een uithoudingsvermogen van ongeveer 600 TBW (terabytes geschreven) voordat hij naar verwachting zal falen, wat zou betekenen dat hij ongeveer 375 plots zou kunnen maken.
Uiteindelijk heb ik ervoor gekozen om een 12-bay HP StorageWorks D2600 met 15K 450GB SAS-schijven te kopen. Met deze opstelling kan ik tegelijkertijd naar elke schijf plotten zonder het risico te lopen dat er IO-conflicten op schijfniveau ontstaan. De JBOD+-schijven waren aanzienlijk goedkoper dan een gelijkwaardige opstelling met NVMe-schijven (zonder zelfs maar rekening te houden met de vervangingskosten nadat TBW is bereikt).
Boerderij — Langetermijnopslag
In tegenstelling tot de plotopslag vereist de oogstopslag geen hoge doorvoer of IOP's. Om deze reden had het minimaliseren van de kosten de hoogste prioriteit.
Er zijn verschillende mogelijke opstellingen, waarvan er enkele worden besproken hier. Na het zoeken op eBay naar tweedehands opties werden echter een paar dingen duidelijk:
- De grotere 3.5″ harde schijven hebben doorgaans de laagste kosten. Dit is logisch omdat de meeste apparaten tegenwoordig zijn overgestapt op de kleinere formaten van 2.5″ of 1.8″.
- SAS-harde schijven (geen SSD's) leken de laagste kosten per TB te hebben, met in sommige gevallen slechts $ 10/TB (vanaf mei 2021). Deze SAS-schijven zijn niet compatibel met SATA-kaarten (consumenten) en worden meestal op eBay verkocht nadat ze buiten gebruik zijn gesteld uit het datacenter van een bedrijf.
Toen ik me eenmaal bezighield met het gebruik van 3.5″ SAS-harde schijven, moest ik een manier vinden om ze daadwerkelijk op mijn harvester/plotter aan te sluiten. Omdat ik vasthield aan de beperking om de behuizing/backplane niet te bouwen, ging ik op zoek naar gebruikte behuizingen waarin deze schijven konden worden ondergebracht, met behoud van de laagste kosten per bay.
Ik kwam verschillende opties tegen op eBay en kocht uiteindelijk een paar verschillende modellen, waaronder een 24-bay HP 3PAR en twee 12-bay IBM DS3512.
Volle lijst
De definitieve lijst met componenten wordt hieronder weergegeven. Het omvat de belangrijkste componenten die hierboven zijn besproken, maar ook aanvullende onderdelen die nodig zijn om het systeem samen te stellen.
Een vermelding waard is de HBA-kaart. Het is de PCIe-kaart die de externe SAS-connectoren blootlegt waarop de kabels van de JBOD's zullen worden aangesloten. Wanneer u deze koopt, zorg er dan voor dat u een initiator target (IT)-moduskaart aanschaft, zodat de schijven rechtstreeks in het besturingssysteem verschijnen in plaats van een IR-moduskaart. Als leuk extraatje wil je misschien een kaart laten flashen met een nieuwer besturingssysteem (versie 20).
De installatie is grotendeels intuïtief. Kabels worden aangesloten op de gaten waarin ze passen. De SAS-bekabeling die de JBOD's en de plot-/oogstmachine met elkaar verbindt, kan echter in serie worden geschakeld.
In mijn geval heb ik twee kabels die de server verlaten (één op elke poort van de HBA). Eén van de kabels wordt aangesloten op de ingang van de tijdelijke opslagarray (HP D2600) en de uitgang van die array wordt aangesloten op de HP 3PAR-array. De andere kabel wordt aangesloten op de eerste IBM-array en de uitgang daarvan wordt aangesloten op de tweede IBM-array. De JBOD's hebben meestal een invoerpoort (primaire) en een uitvoerpoort (meestal gemarkeerd met een pijl naar buiten).
ik installeerde Ubuntu LTS 20.04 op de server omdat het een veelgebruikte Linux-distributie is, wat betekent dat het gemakkelijker is om forums voor probleemoplossing te vinden als er zich problemen voordoen. De onderstaande stappen schetsen de resterende configuratie.
Stap 1: Zorg ervoor dat alle schijven beschikbaar zijn
De eerste stap is om te controleren welke schijven door het besturingssysteem worden gedetecteerd. Dit kan worden bereikt door het uitvoeren van de lsscsi
commando. De output daarvan is hieronder weergegeven.
Houd er rekening mee dat de bovenstaande opdracht geen informatie geeft over het bestandssysteem of de grootte van de schijven. Voer daarvoor de lsblk
opdracht.
Belangrijk: Houd er rekening mee dat niet alle schijven onder beide commando's verschijnen! De schijven die verschijnen onder lsscsi
maar niet lsblk
kan een incompatibiliteit hebben die ervoor zorgt dat het besturingssysteem ze niet beschikbaar maakt voor montage, enz. Een voorbeeld hiervan is /dev/sdaw
.
In mijn geval werd dit probleem veroorzaakt doordat de sectorgrootte 520 was, wat niet wordt ondersteund door mijn geïnstalleerde Linux-kernel (discussie over dit onderwerp kun je vinden hier en hier). U kunt bepalen of dit bij u het geval is door naar de pagina te kijken dmesg
commandologboek voor een foutmelding zoals [sdaw] Unsupported sector size 520
.
Om dit op te lossen heb ik de schijven opnieuw geformatteerd met een blokgrootte van 512 met de opdracht sg_format -v --format --size=512 /dev/sdX
. Het uitvoeren van deze opdracht kan een aanzienlijke hoeveelheid tijd in beslag nemen (enkele uren) en de uitvoer wordt hieronder weergegeven.
Na voltooiing zou de schijf moeten verschijnen in het lsblk
uitgang.
Stap 2: Maak een bestandssysteem op schijven
Om de schijven te formatteren met de ext4 bestandssysteem, heb ik het volgende commando uitgevoerd: sudo mkfs -t ext4 — verbose /dev/sda
.
Stap 3: Schijven monteren
Nu we toegang hebben tot de schijven en ze zijn geformatteerd met het gewenste bestandssysteem, kunnen we dat doen monteren deze schijven.
- Maak de mappen waarin we de schijven gaan monteren. Bijvoorbeeld:
/mnt/farm/00
naar/mnt/farm/23
voor de schijven waarop de definitieve plots worden opgeslagen, en/mnt/plot-tmp/00
naar/mnt/plot-tmp/11
voor de tijdelijke plotlocaties. - lopen
sudo blkid
om de unieke ID's van uw schijven (of partities) te verkrijgen. Er worden verschillende regels uitgevoerd, zoals/dev/sdae: UUID=”29494f44–2f75–4c01-a766–18755eb583d7" TYPE=”ext4"
. - Bewerk het fstab-bestand met
sudo vim /etc/fstab
en koppel elk van de schijven aan hun overeenkomstige schijven/mnt/...
map. Zijn voorzichtig om de eerste regels van het bestand niet te bewerken, aangezien deze nodig zijn om de rootdrive van het besturingssysteem te koppelen. Mijn uiteindelijke bestand wordt hieronder weergegeven. - lopen
sudo mount -a
om alle schijven te mounten die zijn opgegeven in het fstab-bestand. Het koppelt alleen schijven aan die nog niet zijn gemonteerd, dus het is veilig om meerdere keren te draaien. - Zorg ervoor dat gebruikers toegang hebben tot de schijven en de bijbehorende bestanden door sudo uit te voeren
chmod -R 777 /mnt/farm/00
.
Stap 4: Voer Chia Blockchain-software uit
- Volg de officiële instructies hier om de Chia-blockchain te installeren (ik heb de GUI niet geïnstalleerd).
- lopen
chia start farmer
om de daemons voor de portemonnee, harvester, enz. te starten.
Stap 5: Plotman instellen (optioneel)
Plotman is een plotmanager die de creatie van nieuwe plotbanen overneemt. Het is een gemakshulpmiddel (niet vereist).
- Installeer Plotman volgens de instructies hier.
- Edit
plotman.yaml
volgens de specificaties van uw plotter. Mijn uiteindelijke bestand wordt hieronder weergegeven.
gebruikersomgeving:
use_stty_size: waar
mappen:
log: /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 VOL
#- /mnt/farm/01 VOL
#- /mnt/farm/02 VOL
#- /mnt/farm/03 VOL
#- /mnt/farm/04 VOL
#- /mnt/farm/05 VOL
#- /mnt/farm/06 VOL
#- /mnt/farm/07 VOL
#- /mnt/farm/08 VOL
#- /mnt/farm/09 VOL
#- /mnt/farm/10 VOL
#- /mnt/farm/11 VOL
- /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
het roosteren:
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
polling_time_s: 30
plotten:
k: 32
e: False # Gebruik de plotoptie -e
n_threads: 2 # Threads per taak
n_buckets: 128 # Aantal buckets waarin gegevens moeten worden gesplitst
job_buffer: 8096 # Per taakgeheugen
Enkele punten die het vermelden waard zijn:
- Plotman stopt niet met het plannen van boerderijschijven (op het moment van schrijven) wanneer de schijf vol is. Daarom moet u ze verwijderen (of commentaar geven zoals hierboven).
- Plotman voegt automatisch boerderijaandrijvingen toe aan de chia-oogstmachine.
- ik gebruik
tmpdir_max_jobs
gelijk aan 1, omdat ik aan het plotten ben op harde schijven die geen goede zoekprestaties hebben in vergelijking met SSD's.
Stap 6: Voer de plotter uit
Op dit punt is rennen het enige dat nodig is om te beginnen met plotten plotman interactive
.
Opmerking: De zeer langlopende taak die wordt geplot /dev/farm/usb2
is een debug-run die niet bedoeld is om volledig te worden uitgevoerd.
Ik hoop dat dit je geholpen heeft om je een idee te geven van wat er nodig is om Chia te kweken!
Vanaf nu is mijn boerderij voor 1/3 vol en ik ben van plan updates te posten zodra deze vol raakt en wanneer ik opnieuw plannen ga maken voor zwembaden.
Met speciale dank aan Katie Gandomi voor hulp bij de ontwikkeling.
Fijne landbouw!
- toegang
- Extra
- Alles
- rond
- Baai
- blockchain
- Gebouw
- kopen
- Buying
- veroorzaakt
- kansen
- controleren
- bestanddeel
- computergebruik
- Overeenstemming
- consument
- consumptie
- cryptogeld
- gegevens
- dag
- gedecentraliseerde
- Design
- Ontwikkeling
- systemen
- DEED
- Verdiensten
- eBay
- energie-niveau
- EU
- EV
- boerderij
- landbouw
- Voornaam*
- geschikt
- formaat
- vol
- Vrijgevigheid
- goed
- Kopen Google Reviews
- Hardware
- Hoge
- Huis
- hr
- HTTPS
- ia
- IBM
- idee
- Impact
- Inclusief
- informatie
- Intel
- IP
- IT
- Jobomschrijving:
- Vacatures
- Groot
- Niveau
- Beperkt
- linux
- Lijst
- laden
- lang
- LP
- Match
- wiskunde
- Medium
- Mijnbouw
- maanden
- netwerk
- officieel
- Opties
- Overige
- Patronen
- prestatie
- Zwembaden
- project
- bewijs
- RAM
- Resources
- Resultaten
- beoordelen
- Beloningen
- tuig
- lopen
- lopend
- veilig
- Ontdek
- zin
- Maat
- So
- Software
- uitverkocht
- Oplossingen
- OPLOSSEN
- Tussenruimte
- snelheid
- spleet
- begin
- gestart
- mediaopslag
- shop
- ondersteuning
- ondersteunde
- system
- doelwit
- tijdelijk
- niet de tijd of
- transactie
- updates
- gebruikers
- Tegen
- volume
- Portemonnee
- Wat is
- Wikipedia
- winnen
- binnen
- Mijn werk
- waard
- het schrijven van