En komplett översyn från komponentval till mjukvarukonfiguration för ett Chia-system för lantbruk med kryptovaluta.
Chia är en ny kryptovaluta som syftar till att uppnå decentraliserad konsensus med lägre energiförbrukning per transaktion än sina konkurrenter. Detta uppnås via en bevis på rymdalgoritm istället för bevis på arbetet.
Medan bevis på arbete förlitar sig på att kontinuerligt beräkna ett matematiskt problem (vanligtvis hash som SHA256) i ett försök att hitta resultat som matchar ett önskat mönster, litar Chia istället på att kontrollera förekomsten av vissa egenskaper i unika förgenererade filer som kallas plots.
Detta görs i en tvåstegsprocess som kallas odling bestå av:
- plottning där stora unika filer (vanligtvis 101.6 GB) skapas.
- Och skörd där de tidigare skapade filerna kontrolleras för en chans att vinna det blockets belöning (för närvarande 2 Chia).
Ju fler plotter (större lagring som används) en nod har, desto högre är chansen att vinna det blockets belöning. Det finns 4608 chanser att vinna dagligen och sannolikheten att vinna det blockets belöning baseras i första hand på antalet tomter man äger i proportion till den totala nätverksstorleken. En inkomstkalkylator tillhandahålls här..
Därför, för att maximera belöningarna vill vi ha så mycket lagring som möjligt och tillräckligt med datorresurser för att fylla upp nämnda lagring med plotter.
Som med de flesta designproblem finns det en oändlighet av giltiga lösningar på kombinationen av enheter som kan användas för att odla Chia. För att begränsa alternativen började jag med att bestämma mig för några begränsningar och prioriteringar:
- Kostnaden i $/TB bör minimeras trots ytterligare komplexitet (inom rimliga gränser).
- På grund av min begränsade tid tillgänglig för att ägna åt detta projekt, bör systemet mestadels bestå av delar från hyllan (inga anpassade kretskort, anpassade chassi, etc).
Plottning — Bearbetning
Beroende på hårdvaruinställningen kan en enda plot ta mellan 4 till 20 timmar att skapa. Att välja rätt plottningshårdvara kan därför vara skillnaden mellan att fylla hela din gård på dagar kontra månader.
Det är viktigt att inte bara ta hänsyn till hastigheten med vilken varje plot görs utan också antalet samtidiga plots som kan skapas. Till exempel kommer en uppsättning som skapar 10 samtidiga plotter på 12 timmar vardera att producera 20 plots (~2TB/dag) medan en uppsättning som plottar 1 samtidiga plot var 4:e timme endast kommer att producera 6 plots per dag (0.6TB/dag).
För att minimera kostnaden bestämde jag mig för att söka efter avvecklade servrar. Dessa servrar har några intressanta egenskaper som kan göra dem till kraftfulla plottrar, inklusive:
- Stort antal kärnor kan tillåta flera plotter parallellt. Fas 1 (ungefär hälften av plottningstiden) är flertrådad (vanligtvis konfigurerad att vara mellan 2 och 4 trådar), men återstående faser är enkelgängade.
- Tillgängligt RAM-minne är vanligtvis högre än vad som krävs för att plotta (~4GB/samtidig plot).
- Designad för att arbeta med hög belastning under längre tidsperioder.
Efter att ha gått igenom dussintals alternativ och möjliga konfigurationer nöjde jag mig med en HP ProLiant DL380p Gen8 med 2x Intel E5–2670 och 192 GB DDR3 RAM. Med hyper-threading aktiverad kan den här servern hypotetiskt stödja plottning av upp till 16 plotter i fas 1 samtidigt för under $400.
Tomtsättning — Tillfällig förvaring
På grund av den höga skrivbelastningen under skapandet av plotten (cirka 1.6TB skrivet för ak=32 plot), kan valet av temporärt lagringsmedium ha en betydande inverkan på plottningstiden och kostnaden. Några punkter att tänka på:
- Ju snabbare lagring, desto snabbare kan tomter skapas. Denna tråd diskuterar 4 timmars plottider med RAMDISK (montera en mapp till RAM).
- Med tanke på den stora skrivvolymen är det viktigt att ta hänsyn till mediets uthållighet. En konsumentklassad 1TB NVMe SSD har vanligtvis cirka 600 TBW (skriven terabyte) uthållighet innan den förväntas misslyckas, vilket skulle innebära att den skulle kunna göra cirka 375 plotter.
Det slutade med att jag valde att köpa en 12-fack HP StorageWorks D2600 med 15K 450GB SAS-enheter. Med den här inställningen kan jag plotta till varje enhet samtidigt utan att riskera IO-stridigheter på enhetsnivå. JBOD +-enheterna var betydligt billigare än en motsvarande installation med NVMe-enheter (utan att ens ta hänsyn till ersättningskostnaden efter att TBW har uppnåtts).
Gård — Långtidsförvaring
Till skillnad från plottinglagret kräver skördelagret inte hög genomströmning eller IOPs. Av denna anledning var minimering av kostnaderna högsta prioritet.
Det finns flera möjliga inställningar av vilka några diskuteras här.. Men efter att ha sökt på eBay efter begagnade alternativ blev några saker tydliga:
- De större 3.5-tums hårddiskarna tenderar att ha den lägsta kostnaden. Detta är vettigt eftersom de flesta enheter nuförtiden har flyttat till de mindre storlekarna 2.5 tum eller 1.8 tum.
- SAS-hårddiskar (inte SSD-enheter) verkade ha den lägsta kostnaden per TB med vissa partier så låga som $10/TB (från och med maj 2021). Dessa SAS-enheter är inte kompatibla med SATA-kort (konsumentkort) och säljs vanligtvis på eBay efter att ha tagits ur drift från ett företags datacenter.
När jag väl började använda 3.5″ SAS-hårddiskar behövde jag hitta ett sätt att faktiskt ansluta dem till min skördare/plotter. Jag höll mig till begränsningen att inte bygga höljet/bakplanet och började leta efter begagnade höljen som kunde hysa dessa enheter samtidigt som jag bibehöll den lägsta kostnaden per fack.
Jag stötte på flera alternativ på eBay och det slutade med att jag köpte några olika modeller inklusive en 24-fack HP 3PAR och två 12-fack IBM DS3512.
Full lista
Den slutliga listan över komponenter visas nedan. Det inkluderar de huvudkomponenter som diskuterats ovan men också tillbehör som krävs för att sätta ihop systemet.
Ett värt att nämna är HBA-kortet. Det är PCIe-kortet som exponerar SAS externa kontakter som kablarna från JBOD:erna kommer att anslutas till. När du köper det, se till att du får ett initiator target (IT)-lägeskort så att enheterna visas direkt för operativsystemet i motsats till ett IR-lägeskort. Som en trevlig att ha, kanske du vill få ett kort flashat med ett nyare OS (version 20).
Inställningen är för det mesta intuitiv. Kablar ansluts till hålen där de passar. SAS-kablarna som förbinder JBOD:erna och plottnings-/skördmaskinen är dock kedjefästiga.
I mitt fall har jag två kablar som lämnar servern (en på varje port från HBA). En av kablarna ansluts till ingången på den temporära lagringsmatrisen (HP D2600) och utgången från den matrisen ansluts till HP 3PAR-matrisen. Den andra kabeln ansluts till den första IBM-matrisen och utgången från den ansluts till den andra IBM-matrisen. JBOD:erna har vanligtvis en ingångsport (primär) och en utgångsport (vanligtvis märkt med en utåtriktad pil).
Jag installerade Ubuntu LTS 20.04 på servern eftersom det är en mycket använd Linux-distribution vilket innebär att det skulle vara lättare att hitta felsökningsforum om några problem skulle uppstå. Stegen nedan beskriver den återstående konfigurationen.
Steg 1: Se till att alla enheter är tillgängliga
Det första steget är att kontrollera vilka enheter som upptäcks av operativsystemet. Detta kan åstadkommas genom att köra lsscsi
kommando. Vars utdata visas nedan.
Observera att kommandot ovan inte ger information om filsystemet eller storleken på enheterna. För det, kör lsblk
kommando.
Viktigt: Observera att inte alla enheter visas under båda kommandona! De enheter som visas under lsscsi
men inte lsblk
kan ha viss inkompatibilitet som gör att operativsystemet inte gör dem tillgängliga för montering, etc. Ett exempel på detta är /dev/sdaw
.
I mitt fall orsakades det här problemet på grund av att sektorstorleken är 520 vilket inte stöds av min installerade Linux-kärna (diskussion om detta ämne kan hittas här. och här.). Du kan avgöra om detta är ditt fall genom att titta över dmesg
kommandots logg för ett felmeddelande som [sdaw] Unsupported sector size 520
.
För att lösa detta formaterade jag om enheterna med en blockstorlek på 512 med kommandot sg_format -v --format --size=512 /dev/sdX
. Det här kommandot kan ta en betydande tid att köra (flera timmar) och resultatet visas nedan.
När det är klart bör enheten dyka upp i lsblk
utgång.
Steg 2: Skapa filsystem på enheter
För att formatera enheterna med ext4 filsystemet körde jag följande kommando: sudo mkfs -t ext4 — verbose /dev/sda
.
Steg 3: Montera enheter
Nu när vi kan komma åt enheterna och de har formaterats med önskat filsystem, kan vi montera dessa enheter.
- Skapa mapparna där vi ska montera enheterna. Till exempel:
/mnt/farm/00
till/mnt/farm/23
för enheterna som kommer att lagra de sista tomterna, och/mnt/plot-tmp/00
till/mnt/plot-tmp/11
för de tillfälliga ritplatserna. - Körning
sudo blkid
för att få de unika ID:n för dina enheter (eller partitioner). Det kommer att mata ut flera rader som t.ex/dev/sdae: UUID=”29494f44–2f75–4c01-a766–18755eb583d7" TYPE=”ext4"
. - Redigera fstab-filen med
sudo vim /etc/fstab
och associera var och en av enheterna med deras motsvarande/mnt/...
mapp. Vara noggrann att inte redigera de första raderna i filen eftersom de krävs för att montera OS-rotenheten. Min sista fil visas nedan. - Körning
sudo mount -a
för att montera alla enheter som anges i fstab-filen. Det kommer bara att montera enheter som inte redan är monterade så det är säkert att köra flera gånger. - Se till att användare har tillgång till enheterna och dess filer genom att köra sudo
chmod -R 777 /mnt/farm/00
.
Steg 4: Kör Chia Blockchain Software
- Följ de officiella instruktionerna som anges här. för att installera Chia blockchain (jag installerade inte GUI).
- Körning
chia start farmer
för att starta demonerna för plånboken, skördaren, etc.
Steg 5: Konfigurera Plotman (valfritt)
Plotman är en plottledare som ska ta över skapandet av nya plottjobb. Det är ett bekvämlighetsverktyg (inget krav).
- Installera Plotman enligt instruktionerna här..
- Redigera
plotman.yaml
enligt din plotters specifikationer. Min sista fil visas nedan.
användargränssnitt:
use_stty_size: Sant
kataloger:
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 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
schemaläggning:
tmpdir_stagger_phase_major: 2
tmpdir_stagger_phase_minor: 1
tmpdir_stagger_phase_limit: 1
tmpdir_max_jobs: 1
globala_max_jobs: 20
global_stagger_m: 40
polling_time_s: 30
plotta:
k: 32
e: Falskt # Använd plottningsalternativet -e
n_trådar: 2 # trådar per jobb
n_buckets: 128 # Antal hinkar att dela upp data i
job_buffer: 8096 # Per jobbminne
Några punkter värda att nämna:
- Plotman slutar inte schemalägga till farm drives (när detta skrivs) när enheten är full. Därför måste du ta bort dem (eller kommentera dem enligt ovan).
- Plotman lägger automatiskt till gårdsdrifter till chiaskördaren.
- jag använder
tmpdir_max_jobs
lika med 1 eftersom jag plottar till hårddiskar som inte har en bra sökprestanda jämfört med SSD.
Steg 6: Kör plottern
Vid det här laget är allt som behövs för att börja plotta att köra plotman interactive
.
Obs: Det mycket långvariga jobbet som planerar att /dev/farm/usb2
är en felsökningskörning som inte är avsedd att köras till slut.
Hoppas att denna kan var till hjälp för att ge dig en uppfattning om vad som krävs för att odla Chia!
Från och med nu är min gård 1/3 av vägen full och jag planerar att lägga upp uppdateringar när den fylls upp och när jag börjar planera om för pooler.
Ett särskilt tack till Katie Gandomi för hjälp med utveckling.
Lycka till med jordbruket!
- tillgång
- Annat
- Alla
- runt
- bukt
- blockchain
- Byggnad
- Köp
- Uppköp
- orsakas
- chanser
- kontroll
- komponent
- databehandling
- Konsensus
- Konsumenten
- konsumtion
- kryptovaluta
- datum
- dag
- decentraliserad
- Designa
- Utveckling
- enheter
- DID
- Resultat
- eBay
- energi
- EU
- EV
- gård
- odling
- Förnamn
- passa
- format
- full
- Ge
- god
- hårdvara
- Hög
- Huset
- hr
- HTTPS
- ia
- IBM
- Tanken
- Inverkan
- Inklusive
- informationen
- Intel
- IP
- IT
- Jobb
- Lediga jobb
- Large
- Nivå
- Begränsad
- linux
- Lista
- läsa in
- Lång
- LP
- Match
- matte
- Medium
- Gruvdrift
- månader
- nät
- tjänsteman
- Tillbehör
- Övriga
- Mönster
- prestanda
- Pools
- projektet
- bevis
- RAM
- Resurser
- Resultat
- översyn
- Belöningar
- rik
- Körning
- rinnande
- säker
- Sök
- känsla
- Storlek
- So
- Mjukvara
- säljs
- Lösningar
- LÖSA
- Utrymme
- fart
- delas
- starta
- igång
- förvaring
- lagra
- stödja
- Som stöds
- system
- Målet
- temporär
- tid
- transaktion
- Uppdateringar
- användare
- Kontra
- volym
- plånbok
- Vad är
- wikipedia
- vinna
- inom
- Arbete
- värt
- skrivning