Hårdvaru RAID eller ZFS i proxmox?

Permalänk
Medlem

Hårdvaru RAID eller ZFS i proxmox?

Hej!

Jag tänkte montera 2st 10TB mekaniska diskar i min proxmox host för sekundärlagring och min tanke är att configa en RAID 1 setup.
Jag funderar på att installera en RAID controller typ LSI 9260-8i som man kan få till ett bra pris på ebay. Men då är frågan; är det någon mening med det eller kan jag lika gärna köra ett ZFS filsystem motsvarande en RAID 1 istället? Vad är för och nackdelar mellan ZFS och hårdvaru RAID numera?

Tack på förhand

Mvh
Anders

Permalänk
Medlem

Går hårddisken att läsa om raidkortet går sönder?
Jag tror det fungerar med raid 1, men bra om någon som vet kan svara.
Hårdvaru raid avlastar processorn, men går det sönder är det svårare att rädda datan (alltså om raidkortet går sönder), men dom ovan vet ej om det gäller raid 1 eller bara mer avancerade raid som 5 eller 6.
Annars har många moderkort inbyggt raid med...

Permalänk
Medlem
Skrivet av Sions:

Går hårddisken att läsa om raidkortet går sönder?
Jag tror det fungerar med raid 1, men bra om någon som vet kan svara.
Hårdvaru raid avlastar processorn, men går det sönder är det svårare att rädda datan (alltså om raidkortet går sönder), men dom ovan vet ej om det gäller raid 1 eller bara mer avancerade raid som 5 eller 6.
Annars har många moderkort inbyggt raid med...

Hårdvaruraid brukar vara ett gissel när det skiter sig. Då måste du hitta ett liknande kort eftersom de kör sina egna standarder. Du kan antagligen inte ens montera en raid 1 i linux eftersom hårddisken inte ser ut som normalt. Data skrivs till början av disken så att korten vet var och hur de ska hantera dem. Det skiljer heller inte så mycket prestanda på hårdvaru- och mjukvaruraid idag så håll dig till zfs. zfs är bättre än raid på grund av resiliens och återsynkroniseringsfördelar.

Permalänk
Medlem

Går att byta mjukvaran i LSI 9260-8i så den fungerar som HBA-kort iställer för Raid.
Gjort det på min jag har i FreeNAS burken och kör ZFS RaidZ

Permalänk
Medlem
Skrivet av nick-li:

Går att byta mjukvaran i LSI 9260-8i så den fungerar som HBA-kort iställer för Raid.
Gjort det på min jag har i FreeNAS burken och kör ZFS RaidZ

När vill man använda HBA och vad skiljer det från en vanlig RAID controller?

Baserat på kommentarerna ovan så känns ZFS RAIDZ som ett bättre alternativ i de flesta lägen.

Mvh
Anders

Permalänk
Medlem

Egentligen ingenting förutom att du låser dig till en specifik tillverkare om du kör "hårdvaru-RAID". Kör korten som en HBA (IT-mode) och du kan sedan valfritt använda vad som helst för dina arrayer, och skiter det sig så kan du lätt flytta det till en annan dator med samma mjukvara och få igång det igen. Så kör aldrig RAID på korten direkt utan skapa arrayerna direkt med OS:et du kör, om det nu är TrueNAS, Unraid, Windows eller valfri Linux-dist etc. Men se alltid till att kontrollern är i IT-mode och inte IR-mode, mjukvaru-RAID mår bäst när den kan snacka med disken direkt utan något mellanlager som kan strula och sabba din data.

"Hårdvaru-RAID" och "mjukvaru-RAID" är eg exakt samma sak, finns ingen hårdvara i RAID-kortet som hanterar RAID:en åt dig utan det är också en mjukvara i dess firmware som gör det. Sedan kan du ha diverse acceleratorer, batteri-backuper osv men dessa har inget med RAID-driften att göra eg utan bara extrafunktioner för att säkerhetsställa att din data skrivs och skrivs snabbt. Men som en ovanstående nämnde, pajar kortet så måste du oftast hitta samma kort, och t.om samma firmware på kortet för att ens börja försöka återskapa din data.

Höll på att mecka och testa detta i många år, hade en kraschad array pga trasigt RAID-kort som skrev skräp på diskarna, nu kör jag endast typ TrueNAS (ZFS) på omflashade HBA-kort (IT-mode) och det funkar perfa. Skulle kortet eller datorn paja så kan jag lätt flytta över diskarna till annan dator, dra in TrueNAS igen och importera arrayen så är jag igång igen...

Permalänk
Medlem

Jag hade gått på ZFS, alla dagar i veckan.

ZFS är väldigt enkelt, zero-administration filesystem i princip. Du skapar din pool (glöm inte med ashift=12) med diskarna du vill använda, och sedan skapar du filsystem på poolen. Ett filsystem i ZFS är en volym, en mapp och ett ZFS-filsystem med egna properties (encryption, compression och en del andra). ZFS sköter bit-rot, checksums så din data håller sin integritet över tid. Det kostar i princip inget CPU att sätta compression=lz4 på din pool så sparar du lite utrymme. Du kan också ta snapshots per filsystem för att enkelt kunna rulla tillbaka till en tidigare tid (låt oss anta att en Windows-maskin vars disk är en .raw på ett ZFS-fs blir attackerat av ransomware, då är det bara att göra en zfs rollback pool/win-vm@igår så är maskinen återställt till gårdagens stadie. Du kan även skicka filsystem via SSH till en backup någon annanstans (som också kör ZFS).

Villl du sedan leka lite så finns det mycket att fördjupa sig i, om man vill. Tex:

ZFS tycker om mycket minne, behöver inte vara ECC, och per default halva ditt minne kommer gå till ZFS cachen ARC (Adaptive Replacement Cache) som håller två tabellvärden; Most Frequently Used-data och Most Recently Used-data. Om du då alltid accessar samma filer om och om igen, kommer du inte läsa från disk, datan kommer finnas i minnet, så det är gynnsammt om du har mycket minne allokerat till ARC, och i din maskin för övrigt. Du kan alltid ändra det värdet genom att skicka in ett nytt byte-värde i /sys/module/zfs/parameters/zfs_arc_max. Detta är bara prestanda-ökningar, nice-to-haves.

Du kan använda en snabb SSD, partitionera den, och använda en partition för L2ARC (Level 2 ARC), som en snabb(are) cache än HDD för att ha ytterligare ett lager flash-baserad cache mellan ARC och dina roterande diskar. En annan partition kan du använda för en sk. special metadata device. Denna partitionen kommer bara innehålla metadata, vilket kan, ifall du har väldigt många små filer tex, dramatisk öka din läs-prestanda eftersom ZFS vet exakt vart blocken som innehåller datan finns då den läser metadatan från den snabba SSDn.

Cache-disken kan du ta bort från din pool om du inte vill använda den mer, men inte en special metadata device, så om du vill leka lite med ZFS först, så gör det innan du börjar lagra data där för att det är ofta man destroyar och re-creatar en pool tex i början.

Lycka till!

Edit: Håller med @mrpijey ovan. Om du kör med RAID-kort så kör dem i passthrough-mode så OS får direkt-access till diskarna.

Permalänk
Medlem

HBA/IT-mode (för LSI) tar helt bort RAID-funktionaliteten i instickskortet och man kan enkelt säga att RAID-kortet fungerar som en SATA-hubb istället dvs. att diskarna är direkt tillgängliga för operativsystemet vilket är att föredra vid ZFS. ZFS kräver en hel del RAM (rekommenderat 1GB per TB minst) och det är absolut rekommenderat med ECC-ram då icke-ECC RAM kan (i teorin) sabba all data. Det du får i gengäld är möjlighet för utökad redundans, ökad dataintegritet och snapshots m.m.

Jag kan tycka att ZFS är lite overkill för hobbyverksamhet / hemmaserver. Det kräver en hel del resurser och jag personligen har aldrig haft glädje av snapshots m.m. Jag kör istället regelbunden backup av viktiga filer till ex. BackBlaze utifall att huset skulle brinna och unRAID med dubbel paritet för resterande filer på min hemmaserver.

Permalänk
Medlem

Tack för alla tips :-).
Det får bli en ZFS RAIDZ. Kan man bara använda SSD cache? Visst jag har 196GB ram i servern men hade gärna använt det främst till virtuella i form av databaser etc.

Permalänk
Medlem

Ja du kan ha separat skriv- och läscache, dvs ZIL och L2ARC beroende lite på hur du vill cacha. Allt tillgängligt minne i servern kommer ju användas för läscache också så bli inte orolig om din server rapporterar att allt minne är använt. Jag har en server med 2TB RAM och en array på strax över 100TB och jag kör bara skrivcache t.ex för att se till att all data skrivs snabbt till SSD:n och att då sedan ZFS ser till att det skrivs rätt till arrayen, även om servern skulle krascha.

@Cloudstone förklaring av allt ovan är väldigt bra, men om du vill ha det enkelt så kör nåt som t.ex TrueNAS där allt är väldigt enkelt att sätta upp utan att behöva grotta ner sig i en terminal. Själv kör jag TrueNAS på alla mina storageservrar då jag också kan köra central management och ha lite mer standardiserad övervakning på allt.

Permalänk
Medlem

Nu har jag skapat en mirror pool med de 2st 10TB mekaniska diskar. Jag dedikerade 100GB optane som LOG. Valde jag rätt när jag valde LOG i detta fallet?

Permalänk
Medlem

Om du vill ha en säker skrivning till arrayen, ja :).

Permalänk
Medlem
Skrivet av AndersL:

Nu har jag skapat en mirror pool med de 2st 10TB mekaniska diskar. Jag dedikerade 100GB optane som LOG. Valde jag rätt när jag valde LOG i detta fallet?

SLOG används enbart för synkrona skrivningar, något som bestäms av applikationen som vill skriva data. Med andra ord kommer inga av dina skrivningar att skrivas till din Optane, om inte applikationen skriver med synchronous writes. Du kan däremot tvinga alla skrivningar att bli synkrona på ditt dataset, och därmed alla skrivningar går via din 100GB optane.

# zfs set sync=always pool/dataset

På det viset kommer alla dina skrivningar gå till din Optane först, för att sedan flushas vidare till dina HDD's.

Bra förklaring här - https://www.servethehome.com/what-is-the-zfs-zil-slog-and-wha...

Om du vill se exakt hur din pool och vdevs används kan du skriva:

# zpool iostat -v 1

Detta visar dig med hög precision vad som händer med I/O i din pool. Testa att köra det i en terminal medans du kopierar en stor fil så ser du hur mycket din SLOG-device används.

Permalänk
Medlem

Hej!

Tack för alla tips. Verkligen superbra info :-). Den ZFS pool man skapar som blir storage i proxmox. Går det att göra så en VM kan skriva direkt till den ZFS pool eller måste man skapa en diskfil? Eller måste man i så fall göra passthrough på diskarna och skapa en ZFS pool i den virtuella maskinen?

Mvh
Anders

Permalänk
Medlem
Skrivet av AndersL:

Hej!

Tack för alla tips. Verkligen superbra info :-). Den ZFS pool man skapar som blir storage i proxmox. Går det att göra så en VM kan skriva direkt till den ZFS pool eller måste man skapa en diskfil? Eller måste man i så fall göra passthrough på diskarna och skapa en ZFS pool i den virtuella maskinen?

Mvh
Anders

Varje VM du skapar behöver sin egna diskfil. Den filen är virtuella maskinens hela lagringsmedia (boot-partition, rotfilspartition tex "C:\" för en Windows-VM eller "/" för Linux). Så länge du, när du skapar en VM i Proxmox, väljer din ZFS-pool som lagring, kommer Proxmox att automatisk skapa VMens diskfil i din zpool, och du får nyttja av alla fördelar med ZFS.

Som diskfilstyp kan du använda .qcow2 för att det är väldigt smidigt att via Proxmox kunna ta snapshots, och då behöver du använda ett .qcow2-format för att det ska fungera.

Hittade en bra video som går genom detta rätt bra:

------------------

Om man känner sig okej med lite ZFS-administration kan man istället för att använda .qcow2, använda .raw-format för lite mera prestanda. Jag vill inte bombardera med för mycket info för att ZFS kan jag prata om hela dagen men anledningen bakom det är att ZFS är redan ett sk. "copy-on-write"-filsystem. Funktionalitetsmässigt ger ett copy-on-write-filsystem dig förmågan att när som helst ta en read-only snapshot av ditt filsystem vid en given tidpunkt, som du sedan kan återställa när du vill. Qcow2-formatet står för QEMU Copy On Write, så att använda ett .qcow2-format på ZFS blir att använda en copy-on-write-fil på ett copy-on-write-filsystem, lite kaka på kaka. Känner man att man vill, och kan så kan man istället få samma funktionalitet med ZFS och ta snapshots på ditt dataset där du har din VM istället, men som sagt, då fungerar det inte att ta snapshots via Proxmox GUI utan man får manuellt ta snaps och återställa via terminalen.

Permalänk
Medlem

@Cloudstone många tack! Jag följde video och det känns som en bra början.

Du borde köra en ZFS workshop på någon SweClockers uppesittarkväll