Skip to main content

En introduksjon til Z-filsystemet (ZFS) for Linux

En introduksjon til Z-filsystemet (ZFS) for Linux

Geoffrey Carr

ZFS blir ofte brukt av data hoarders, NAS elskere, og andre geeks som foretrekker å stole på et redundant lagringssystem av seg selv i stedet for skyen. Det er et flott filsystem som skal brukes til å administrere flere disker med data og rivaler noen av de største RAID-oppsettene.

Bilde av Kenny Louie.

Hva er ZFS og hvorfor skal jeg bruke det?

Z-filsystemet er en gratis og åpen kildekode logisk volumleder bygget av Sun Microsystems for bruk i deres Solaris-operativsystem. Noen av sine mest tiltalende funksjoner inkluderer:

Uendelig skalerbarhet

Vel, det er det ikke teknisk sett uendelig, men det er et 128-biters filsystem som kan administrere zettabytes (en milliard terabyte) data. Uansett hvor mye harddiskplass du har, vil ZFS være egnet for å administrere den.

Maksimal integritet

Alt du gjør inne i ZFS bruker et kontrollsum for å sikre filintegritet. Du kan være trygg på at filene dine og deres overflødige kopier ikke kommer til å møte stille data korrupsjon. Også, mens ZFS er opptatt av å sjekke dataene dine for integritet, gjør det automatisk reparasjoner når som helst.

Kjør pooling

Skaperne av ZFS vil at du skal tenke på det som ligner på hvordan datamaskinen bruker RAM. Når du trenger mer minne i datamaskinen, legger du i en annen pinne og du er ferdig. På samme måte som ZFS, når du trenger mer harddiskplass, legger du inn en annen harddisk, og du er ferdig. Du trenger ikke å bruke tidspartisjonering, formatering, initialisering eller noe annet på diskene dine - når du trenger et større lagringsbasseng, bare legg til disker.

RAID

ZFS er i stand til mange forskjellige RAID-nivåer, samtidig som det leverer ytelse som er sammenlignbare med RAID-controllere. Dette gjør at du kan spare penger, gjøre oppsettet lettere, og få tilgang til overlegne RAID-nivåer som ZFS har forbedret.

Installere ZFS

Siden vi bare dekker det grunnleggende i denne veiledningen, skal vi ikke installere ZFS som et rotfilsystem. Denne delen antar at du bruker ext4 eller et annet filsystem, og vil gjerne bruke ZFS for noen sekundære harddisker. Her er kommandoer for å installere ZFS på noen av de mest populære Linux-distribusjonene.

Solaris og FreeBSD bør allerede leveres med ZFS installert og klar til bruk.

Ubuntu:

$ sudo add-apt-repository ppa:zfs-native/stable $ sudo apt-get update $ sudo apt-get install ubuntu-zfs

Debian:

$ su - # wget http://archive.zfsonlinux.org/debian/pool/main/z/zfsonlinux/zfsonlinux_2%7Ewheezy_all.deb # dpkg -i zfsonlinux_2~wheezy_all.deb # apt-get update # apt-get install debian-zfs

RHEL / CentOS:

$ sudo yum localinstall --nogpgcheck http://archive.zfsonlinux.org/epel/zfs-release-1-3.el6.noarch.rpm $ sudo yum install zfs

Hvis du har annen distribusjon, sjekk ut zfsonlinux.org og klikk på distribusjonen din under "Pakker" -listen for instruksjoner om hvordan du installerer ZFS.

Når vi fortsetter med denne veiledningen, skal vi bruke Ubuntu fordi det synes å være # 1-valget for Linux-geeks. Du bør fortsatt kunne følge med, uansett hva, da ZFS-kommandoene ikke endres på tvers av forskjellige distribusjoner.

Installasjon tar litt tid, men når den er ferdig, løp $ sudo zfs list for å sikre at den er riktig installert. Du bør få en utgang som denne:

Vi bruker en ny installasjon av Ubuntu-server akkurat nå, med bare en harddisk.

Konfigurere ZFS

La oss si at vi setter seks flere harddisker inn i datamaskinen vår.

$ sudo fdisk -l | grep Error vil vise oss de seks harddiskene vi nettopp har installert. De er for tiden ubrukelige, siden de ikke inneholder noen form for partisjonstabell.

Som vi nevnte tidligere, er en av de fine tingene om ZFS at vi ikke trenger å plage med partisjoner (selv om du kan hvis du vil). La oss starte med å ta tre av våre harddisker og sette dem i et lagringsbasseng ved å kjøre følgende kommando:

$ sudo zpool create -f geek1 /dev/sdb /dev/sdc /dev/sdd

zpool create er kommandoen brukt til å opprette et nytt lagringsbasseng, -f overstyrer eventuelle feil som oppstår (for eksempel hvis disken / diskene allerede har informasjon om dem), geek1 er navnet på lagringsbassenget, og /dev/sdb /dev/sdc /dev/sdd er harddiskene vi legger i bassenget.

Etter at du har opprettet bassenget ditt, bør du kunne se det med df kommando eller sudo zfs list:

Som du ser, har / geek1 allerede blitt montert og klar til bruk.

Hvis du vil se hvilke tre disker du har valgt for bassenget ditt, kan du kjøre sudo zpool status:

Det vi har gjort så langt, er å skape et 9 TB dynamisk stripepool (effektivt, RAID 0). Hvis du ikke er kjent med hva det betyr, forestill deg at vi opprettet en 3 KB-fil på / geek1. 1 KB ville automatisk gå til sdb, 1 kB til sdc og 1 kb til sdd. Så når vi går til å lese 3 KB-filen, vil hver harddisk presentere 1 KB til oss, og kombinere hastigheten til de tre stasjonene. Dette gjør at du skriver og leser data raskt, men betyr også at vi har et enkelt feilpunkt. Hvis bare en harddisk mislykkes, vil vi miste vår 3 KB-fil.

Forutsatt at det er viktigere å beskytte dataene dine enn å få tilgang til det raskt, la oss se på andre populære oppsett. Først sletter vi zpoolen vi har opprettet, slik at vi kan bruke disse diskene i et mer overflødig oppsett:

$ sudo zpool destroy geek1

Bam, vår zpool er borte. Denne gangen, la oss bruke våre tre disker for å lage et RAID-Z-basseng. RAID-Z er i utgangspunktet en forbedret versjon av RAID 5, fordi den unngår "skrivehullet" ved å bruke copy-on-write. RAID-Z krever minst tre harddisker, og er et kompromiss mellom RAID 0 og RAID 1. I et RAID-Z-basseng vil du fortsatt få hastigheten på blokknivå-striping, men vil også ha fordelt paritet. Hvis en enkelt disk i bassenget ditt dør, bare erstatt den disken, og ZFS vil automatisk gjenoppbygge dataene basert på paritetsinformasjon fra de andre diskene. For å miste all informasjon i lagringsbassenget ditt, måtte to disker dø. For å gjøre ting enda mer overflødig, kan du bruke RAID 6 (RAID-Z2 i tilfelle ZFS) og har dobbel paritet.

For å oppnå dette kan vi bruke det samme zpool create kommando som før, men spesifiser raidz etter navnet på bassenget:

$ sudo zpool create -f geek1 raidz /dev/sdb /dev/sdc /dev/sdd

Som du kan se, df -h viser at vår 9 TB basseng har nå blitt redusert til 6 TB, siden 3 TB blir brukt til å holde paritetsinformasjon. Med zpool status kommando, vi ser at vårt basseng er stort sett det samme som før, men bruker RAID-Z nå.

For å vise hvor enkelt det er å legge til flere disker i lagringsbassenget, la vi legge til de tre andre diskene (en annen 9 TB) til vårt geek1-lagringsområde som en annen RAID-Z-konfigurasjon:

$ sudo zpool add -f geek1 raidz /dev/sde /dev/sdf /dev/sdg

Vi ender med:

Historien fortsetter ...

Vi har knapt skrapt overflaten av ZFS og dens evner, men ved å bruke det du har lært i denne artikkelen, bør du nå kunne opprette overflødige lagringsbassenger av dataene dine. Sjekk tilbake med oss ​​for fremtidige artikler om ZFS, se mannens sider, og søk etter de endeløse nisjeguider og Youtube-videoer som dekker ZFS-funksjoner.

Link
Plus
Send
Send
Pin