En introduksjon til Z-filsystemet (ZFS) for Linux
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 den?
Z-filsystemet er en gratis og åpen kildekode logisk volumleder bygget av Sun Microsystems for bruk i sitt 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 sjekksum 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 sammenlignbart 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, kommer vi ikke til å 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-depot ppa: zfs-native / stable
$ sudo apt-get oppdatering
$ sudo apt-get installere 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 oppdatering
# 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 installere 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 som, da ZFS-kommandoene ikke endres på tvers av forskjellige distribusjoner.
Installasjon tar litt tid, men når den er ferdig, løp $ sudo zfs liste
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 satte seks harddisker inn i datamaskinen vår.
$ sudo fdisk -l | grep Feil
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 ved ZFS at vi ikke trenger å plage med partisjoner (selv om du kan hvis du vil). La oss begynne med å ta tre av våre harddisker og sette dem i et lagringsbasseng ved å kjøre følgende kommando:
$ sudo zpool opprette -f geek1 / dev / sdb / dev / sdc / dev / sdd
zpool opprette
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.
Når du har opprettet bassenget ditt, bør du kunne se det med df
kommando eller sudo zfs liste
:
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 ta en titt 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 ødelegge geek1
Bam, vår zpool er borte. Denne gangen, la oss bruke våre tre disker til å opprette 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 får du fortsatt hastigheten på blokknivå-striping, men vil også ha fordelt paritet. Hvis en enkelt disk i bassenget ditt dør, skal du bare erstatte 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 ha dobbel paritet.
For å oppnå dette kan vi bruke det samme zpool opprette
kommando som før, men spesifiser raidz
etter navnet på bassenget:
$ sudo zpool opprette -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 på 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. Ta kontakt med oss for fremtidige artikler om ZFS, se mantsidene, og søk etter de endeløse nisjestyrene og Youtube-videoene som dekker ZFS-funksjoner.