ZFS

ZFS Concepts and Tutorial

ZFS Concepts and Tutorial

 ZFS: Concepts and Tutorial

På din strävan efter dataintegritet med OpenZFS är oundviklig. I själva verket skulle det vara ganska olyckligt om du använder något annat än ZFS för att lagra dina värdefulla data.  Men många är ovilliga att testa det. Anledningen är att ett företagsklassat filsystem med ett stort antal funktioner inbyggt i det, ZFS måste vara svårt att använda och administrera.  Ingenting kan vara längre ifrån sanningen. Att använda ZFS är så enkelt som det blir. Med en handfull terminologier och ännu färre kommandon är du redo att använda ZFS var som helst - Från företaget till ditt hem / kontor NAS.

Med skaparna av ZFS: "Vi vill göra det enkelt att lägga till lagring i ditt system som att lägga till nya RAM-pinnar.”

Vi kommer senare att se hur det görs. Jag kommer att använda FreeBSD 11.1 för att utföra testerna nedan är kommandona och den underliggande arkitekturen lika för alla Linux-distributioner som stöder OpenZFS.

Hela ZFS-stacken kan läggas ut i följande lager:

Zpool skapa

Till att börja med kan vi börja med en installation av där vi har sex 20 GB-skivor ada [1-6]

$ ls -al / dev / ada?

De ada0 är där operativsystemet är installerat. Resten kommer att användas för denna demonstration.

Namnen på dina diskar kan variera beroende på vilken typ av gränssnitt som används. Typiska exempel är: da0, ada0, acd0 och CD.  Tittar inuti/ devger dig en uppfattning om vad som finns tillgängligt.

A zpool skapas av zpool skapa kommando:

$ zpool skapa OurFirstZpool ada1 ada2 ada3 # Och kör sedan följande kommando: $ zpool status 

Vi ser en snygg utgång som ger oss detaljerad information om poolen:

Detta är den enklaste zpoolen utan redundans eller feltolerans ... Varje disk är sin egen vdev.

Du kommer dock fortfarande att få all ZFS-godhet som kontrollsummor för varje datablock som lagras så att du åtminstone kan upptäcka om data som du lagrade blir skadade.

Filsystem, a.k.en datamängd, kan nu skapas ovanpå denna pool på följande sätt:

$ zfs skapar OurFirstZpool / dataset1 

Använd nu din bekanta df -h kommando eller kör:

$ zfs lista

Så här ser du egenskaperna för ditt nyskapade filsystem:

Observera hur hela utrymmet som erbjuds av de tre skivorna (vdevs) är tillgängligt för filsystemet. Detta gäller för alla filsystem du skapar i poolen såvida vi inte anger något annat.

Om du vill lägga till en ny disk (vdev), ada4, du kan göra det genom att köra:

$ zpool lägg till OurFirstZpool ada4

Nu, om du ser tillståndet för ditt filsystem

Den tillgängliga storleken har nu vuxit utan extra krångel med att växa partitionen eller säkerhetskopiera och återställa data i filsystemet.


Virtuella enheter - Vdevs

Vdevs är byggstenarna i en zpool, det mesta av redundansen och prestandan beror på hur dina diskar är grupperade i dessa, så kallade vdevs . Låt oss titta på några av de viktigaste typerna av vdevs:

1. RAID 0 eller Stripes

Varje disk fungerar som sin egen vdev. Ingen dataredundans och data sprids över alla diskar. Även känd som striping. En enskild disks fel skulle innebära att hela zpoolen görs oanvändbar. Användbart lagringsutrymme är lika med summan av alla tillgängliga lagringsenheter.

Den första zpoolen som vi skapade i föregående avsnitt är en RAID 0 eller striped storage array.

2. RAID 1 eller Mirror

Data speglas mellan nskivor. Den faktiska kapaciteten för vdev begränsas av den råa kapaciteten på den minsta skivan i den n-diskmatris. Data speglas mellan n skivor, det betyder att du tål misslyckandet med n-1 skivor.

Använd nyckelordsspegeln för att skapa en speglad matris:

$ zpool skapa tank spegel ada1 ada2 ada3

Uppgifterna skrivna till tank zpool kommer att speglas bland dessa tre skivor och det faktiska tillgängliga lagringsutrymmet är lika med storleken på den minsta skivan, vilket i detta fall är cirka 20 GB.

I framtiden kanske du vill lägga till fler diskar i poolen, och det finns två möjliga saker du kan göra. Till exempel zpool tank har tre skivor som speglar data som en enda vdev-spegel-0:

Du kanske vill lägga till extra disk, säg ada4, för att spegla samma data. Detta kan göras genom att köra kommandot:

$ zpool bifoga tank ada1 ada4

Detta skulle lägga till en extra disk till vdev som redan har disken ada1 i det, men inte öka tillgängligt lagringsutrymme.

På samma sätt kan du koppla bort enheter från en spegel genom att köra:

$ zpool lossa tanken ada4

Å andra sidan kanske du vill lägga till en extra vdev för att öka kapaciteten för zpool. Det kan göras med kommandot zpool add:

$ zpool lägg till tank spegel ada4 ada5 ada6


Ovanstående konfiguration möjliggör att data kan stripas över vdevs mirror-0 och mirror-1. Du kan förlora 2 diskar per vdev, i det här fallet, och dina data kommer fortfarande att vara intakta. Totalt användbart utrymme ökar till 40 GB.

3. RAID-Z1, RAID-Z2 och RAID-Z3

Om en vdev är av typen RAID-Z1 måste den använda minst tre skivor och vdev kan tolerera bortfallet av enbart en av dessa skivor. RAID-Z-konfigurationer tillåter inte att fästa skivor direkt på en vdev. Men du kan lägga till fler vdevs med zpool lägg till, så att poolens kapacitet kan fortsätta öka.

RAID-Z2 kräver minst 4 skivor per vdev och tål upp till två skivfel och om den tredje skivan misslyckas innan de två skivorna byts ut går din värdefulla data förlorad. Samma sak följer för RAID-Z3, som kräver minst 5 skivor per vdev, med upp till 3 skivor för fel tolerans innan återhämtningen blir hopplös.

Låt oss skapa en RAID-Z1-pool och odla den:

$ zpool skapa tank raidz1 ada1 ada2 ada3

Poolen använder tre 20 GB-skivor som gör 40 GB tillgängliga för användaren.

Om du lägger till ytterligare en vdev krävs ytterligare tre diskar:

$ zpool lägg till tank raidz1 ada4 ada5 ada6


Den totala användbara datan är nu 80 GB och du kan förlora upp till 2 diskar (en från varje vdev) och ändå ha ett hopp om återhämtning.

Slutsats

Nu vet du tillräckligt om ZFS för att importera all din data till den med förtroende. Härifrån kan du leta upp olika andra funktioner som ZFS tillhandahåller som att använda höghastighets-NVM för läs- och skrivcacher, använda inbyggd komprimering för dina datamängder och istället för att bli överväldigad av alla tillgängliga alternativ, leta bara efter vad du behöver för din särskilt användningsfall.

Under tiden finns det några fler användbara tips angående valet av hårdvara som du bör följa:

  1. Använd aldrig hårdvaru-RAID-controller med ZFS.
  2. Felkorrigering av RAM (ECC) rekommenderas, men inte obligatoriskt
  3. Funktionen för deduplicering av data förbrukar mycket minne, använd komprimering istället.
  4. Dataredundans är inte ett alternativ för säkerhetskopiering. Ha flera säkerhetskopior, lagra dessa säkerhetskopior med ZFS!
Hur man utvecklar ett spel på Linux
För ett decennium sedan skulle inte många Linux-användare förutsäga att deras favoritoperativsystem en dag skulle vara en populär spelplattform för ko...
Portar med öppen källkod för kommersiella spelmotorer
Gratis, öppen källkod och plattformsmekaniska rekreationer kan användas för att spela gamla såväl som några av de ganska senaste speltitlarna. I den h...
Bästa kommandoradsspel för Linux
Kommandoraden är inte bara din största allierade när du använder Linux, det kan också vara källan till underhållning eftersom du kan använda den för a...