En guide til installation og brug af ZFS på CentOS 7

ZFS, kort form for Zettabyte Filesystem er et avanceret og meget skalerbart filsystem. Det blev oprindeligt udviklet af Sun Microsystems og er nu en del af OpenZFS-projektet. Med så mange filsystemer, der er tilgængelige på Linux, er det helt naturligt at spørge, hvad der er specielt ved ZFS. I modsætning til andre filsystemer er det ikke kun et filsystem, men også en logisk lydstyringsmanager. Nogle af funktionerne i ZFS, der gør det populært, er:

  • Dataintegritet - Datakonsistens og integritet sikres gennem kopi-på-skriv og checksumteknikker
  • Sammenlægning af lagerplads - tilgængelige lagringsdrev kan samles i en enkelt pool kaldet zpool
  • Software RAID - Opsætning af et raidz array er lige så enkelt som at udstede en enkelt kommando.
  • Indbygget volumen manager - ZFS fungerer også som volumen manager.
  • Snaphots, kloner, kompression - disse er nogle af de avancerede funktioner, som ZFS giver.

ZFS er et 128-bit filsystem og har kapacitet til at gemme 256 zetta bytes! I denne vejledning vil vi lære at installere, konfigurere og også bruge nogle vigtige ZFS-kommandoer på en CentOS 7-server.

BEMÆRK: Installationsdelen er specifik for CentOS-serveren, mens kommandoerne er almindelige på ethvert Linux-system

Terminologi

Før vi går videre, lad os forstå nogle af de terminologier, der almindeligvis anvendes i ZFS.

pool

Logisk gruppering af lagringsdrev. Det er den grundlæggende byggesten i ZFS, og det er herfra, at lagerplads bliver allokeret til datasæt.

datasæt

Komponenterne i ZFS-filsystem, nemlig filsystem, kloner, snapshots og volumener kaldes datasæt.

Spejl

En virtuel enhed, der lagrer identiske datakopier på to eller flere diske. I situationer hvor en disk fejler, er de samme data tilgængelige på andre diske i spejlet.

Resilvering

Fremgangsmåde til kopiering af data fra en disk til en anden i tilfælde af genoprettelse af en enhed.

Skrubbe

Scrub bruges til konsistens kontrol i ZFS ligesom hvordan fsck bruges i andre filsystemer

Installation af ZFS

For at installere ZFS på CentOS skal vi først opsætte EPEL-depotet for at understøtte pakker og derefter ZFS-depotet for at installere de nødvendige ZFS-pakker.

Bemærk: Venligst prefix sudo til alle kommandoer, hvis du ikke er rootbrugeren.

yum localinstall -nogpgcheck http://epel.mirror.net.in/epel/7/x86_64/e/epel-release-7-5.noarch.rpm

yum localinstall -nogpgcheck http://archive.zfsonlinux.org/epel/zfs-release.el7.noarch.rpm

Installer nu kerneudviklings- og zfs-pakkerne. Kerneludviklingspakker er nødvendige, da ZFS er bygget som et modul og indsat i kernen.

yum installere kernel-devel zfs

Kontroller, om zfs-modulet er indsat i kernen ved hjælp af kommandoen 'lsmod' og hvis ikke, indsæt den manuelt ved hjælp af 'modprobe'-kommandoen.

[[Email protected] ~] # lsmod | grep zfs

[[Email protected] ~] # modprobe zfs

[[Email protected] ~] # lsmod | grep zfs
zfs 2790271 0
zunicode 331170 1 zfs
zavl 15236 1 zfs
zcommon 55411 1 zfs
znvpair 89086 2 zfs, zcommon
spl 92029 3 zfs, zcommon, znvpair

Lad os kontrollere, om vi kan bruge zfs-kommandoerne:

[[Email protected] ~] # zfs liste
ingen datasæt til rådighed

Administration

ZFS har to hovedværktøjer, zpool og zfs. Mens zpool beskæftiger sig med oprettelse og vedligeholdelse af puljer, der bruger diske, er zfs utility ansvarlig for oprettelse og vedligeholdelse af datasæt.

zpool utility

Oprettelse og ødelæggelse af pools

Kontrollér først de tilgængelige diske for at oprette en lagringsbassin.

[[Email protected] ~] # ls -l / dev / sd *
brw-rw-- 1 root disk 8, 0 Mar 16 08: 12 / dev / sda
brw-rw-- 1 root disk 8, 16 Mar 16 08: 12 / dev / sdb
brw-rw-- 1 root disk 8, 32 Mar 16 08: 12 / dev / sdc
brw-rw-- 1 root disk 8, 48 Mar 16 08: 12 / dev / sdd
brw-rw-- 1 root disk 8, 64 Mar 16 08: 12 / dev / sde
brw-rw- 1 roddisk 8, 80 Mar 16 08: 12 / dev / sdf

Opret en pool fra et sæt drev.

zpool oprette <option> <pool navn. <drev 1> <drev 2> .... <drev n>

[[Email protected] ~] # zpool create -f zfspool sdc sdd sde sdf

Kommandoen 'zpool status' viser status for de tilgængelige puljer

[[Email protected] ~] # zpool status
pool: zfspool
tilstand: ONLINE
scan: ingen anmodet
config:

NAVNSTATUS LÆS SKRIFTLIG KKSUM
zfspool ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
sde ONLINE 0 0 0
sdf ONLINE 0 0 0

fejl: Ingen kendte datafejl

Bekræft, om oprettelsen af ​​poolen var vellykket.

[[Email protected] ~] # df -h
Filsystemstørrelse Anvendt Tilgængelig Brug% Monteret på
/ dev / sda 19G 1.4G 17G 8% /
devtmpfs 488M 0 488M 0% / dev
tmpfs 497M 0 497M 0% / dev / shm
tmpfs 497M 50M 447M 11% / runde
tmpfs 497M 0 497M 0% / sys / fs / cgroup
tmpfs 100M 0 100M 0% / run / bruger / 0
zfspool 3.7G 0 3.7G 0% / zfspool

Som du kan se, har zpool oprettet en pool ved navn 'zfspool' i størrelse 3.7 GB og har også monteret den i / zfspool.

For at ødelægge en pool skal du bruge kommandoen 'zpool destroy'

zpool ødelægge <pool navn>

[[Email protected] ~] # zpool ødelægge zfspool
[[Email protected]7-130 ~]# zpool status
ingen puljer til rådighed

Lad os nu prøve at oprette en simpel spejlpool.

zpool create <option> <pool navn> spejl <drive 1> <drive 2> ... <drive n>

Vi kan også oprette flere spejle på samme tid ved at gentage spejlsøgeordet efterfulgt af drevene.

[[Email protected] ~] # zpool create -f mpool spejl sdc sdd mirror sde sdf
[[Email protected] ~] # zpool status
pool: mpool
tilstand: ONLINE
scan: ingen anmodet
config:

NAVNSTATUS LÆS SKRIFTLIG KKSUM
mpool ONLINE 0 0 0
spejl-0 ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
spejl-1 ONLINE 0 0 0
sde ONLINE 0 0 0
sdf ONLINE 0 0 0

fejl: Ingen kendte datafejl

I ovenstående eksempel har vi lavet spejlbassiner hver med to diske.

På samme måde kan vi oprette en raidz pool.

[[Email protected] ~] # zpool create -f rpool raidz sdc sdd sde sdf
[[Email protected] ~] # zpool status
pool: rpool
tilstand: ONLINE
scan: ingen anmodet
config:

NAVNSTATUS LÆS SKRIFTLIG KKSUM
rpool ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
sde ONLINE 0 0 0
sdf ONLINE 0 0 0

fejl: Ingen kendte datafejl

Administration af enheder i ZFS-pools

Når en pulje er oprettet, er det muligt at tilføje eller fjerne varme reservedele og cache-enheder fra poolen, vedhæfte eller afmontere enheder fra spejle pools og udskifte enheder. Men ikke-redundante og raidz-enheder kan ikke fjernes fra en pool. Vi vil se, hvordan du udfører nogle af disse operationer i dette afsnit.

Jeg laver først en pool kaldet 'testpool' bestående af to enheder, sdc og sdd. En anden enhed sde vil derefter blive tilføjet til dette.

[[Email protected] ~] # zpool create -f testpool sdc sdd

[[Email protected] ~] # zpool tilføj testpool sde
[[Email protected] ~] # zpool status
pool: testpool
tilstand: ONLINE
scan: ingen anmodet
config:

NAVNSTATUS LÆS SKRIFTLIG KKSUM
testpool ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
sde ONLINE 0 0 0

fejl: Ingen kendte datafejl

Som tidligere nævnt kan jeg ikke fjerne denne nyligt tilføjede enhed, da det ikke er en overflødig eller raidz-pool.

[[Email protected] ~] # zpool fjern testpool sde
kan ikke fjerne sde: kun inaktive varme reservedele, cache, topniveau eller log enheder kan fjernes

Men jeg kan tilføje en ekstra disk til denne pool og fjerne den.

[[Email protected] ~] # zpool tilføj testpool spare sdf
[[Email protected] ~] # zpool status
pool: testpool
tilstand: ONLINE
scan: ingen anmodet
config:

NAVNSTATUS LÆS SKRIFTLIG KKSUM
testpool ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
sde ONLINE 0 0 0
reservedele
sdf AVAIL

fejl: Ingen kendte datafejl
[[Email protected] ~] # zpool fjern testpool sdf
[[Email protected] ~] # zpool status
pool: testpool
tilstand: ONLINE
scan: ingen anmodet
config:

NAVNSTATUS LÆS SKRIFTLIG KKSUM
testpool ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
sde ONLINE 0 0 0

fejl: Ingen kendte datafejl

På samme måde kan vi bruge vedhæftningskommandoen til at vedhæfte diske til en spejlvendt eller ikke-spejlet pool og løsne kommandoen for at frigøre diske fra en spejlet pool.

zpool vedhæft <valg> <poolnavn> <enhed> <ny enhed>

zpool løsner <poolnavn> <enhed>

Når en enhed fejler eller bliver beskadiget, kan vi erstatte den med kommandoen 'erstat'.

zpool erstatte <muligheder> <pool navn> <enhed> <ny enhed>

Vi vil teste dette ved kraftigt at beskadige en enhed i en spejlet konfiguration.

[[Email protected] ~] # zpool create -f testpool spejl sdd sde

Dette skaber en spejlpool bestående af diske sdd og sde. Lad os nu bevidst ødelægge sdd-drevet ved at skrive nul i det.

[[Email protected] ~] # dd hvis = / dev / zero af = / dev / sdd
dd: skriv til '/ dev / sdd': Ingen plads tilbage på enheden
2048001 + 0 optegnelser i
2048000 + 0 registrerer ud
1048576000 bytes (1.0 GB) kopieret, 22.4804 s, 46.6 MB / s

Vi vil bruge kommandoen 'scrub' til at opdage denne korruption.

[[Email protected] ~] # zpool scrub testpool
[[Email protected] ~] # zpool status
pool: testpool
tilstand: ONLINE
status: En eller flere enheder kunne ikke bruges, fordi etiketten mangler eller
ugyldig. Tilstrækkelige replikaer eksisterer for poolen at fortsætte
fungerer i en forringet tilstand.
handling: Udskift enheden ved hjælp af 'zpool udskift'.
se: http://zfsonlinux.org/msg/ZFS-8000-4J
scan: scrub repareret 0 i 0h0m med 0 fejl på Fri Mar 18 09: 59: 40 2016
config:

NAVNSTATUS LÆS SKRIFTLIG KKSUM
testpool ONLINE 0 0 0
spejl-0 ONLINE 0 0 0
sdd UNAVAIL 0 0 0 beskadigede data
sde ONLINE 0 0 0

fejl: Ingen kendte datafejl

Vi erstatter nu sdd med sdc.

[[Email protected] ~] # zpool erstatte testpool sdd sdc; zpool status
pool: testpool
tilstand: ONLINE
scan: resilvered 83.5K i 0h0m med 0 fejl på Fri Mar 18 10: 05: 17 2016
config:

NAVNSTATUS LÆS SKRIFTLIG KKSUM
testpool ONLINE 0 0 0
spejl-0 ONLINE 0 0 0
erstatter-0 UNAVAIL 0 0 0
sdd UNAVAIL 0 0 0 beskadigede data
sdc ONLINE 0 0 0
sde ONLINE 0 0 0

fejl: Ingen kendte datafejl

[[Email protected] ~] # zpool status
pool: testpool
tilstand: ONLINE
scan: resilvered 74.5K i 0h0m med 0 fejl på Fri Mar 18 10: 00: 36 2016
config:

NAVNSTATUS LÆS SKRIFTLIG KKSUM
testpool ONLINE 0 0 0
spejl-0 ONLINE 0 0 0
sdc ONLINE 0 0 0
sde ONLINE 0 0 0

fejl: Ingen kendte datafejl

Migration af puljer

Vi kan migrere lagringspuljer mellem forskellige værter ved hjælp af eksport- og importkommandoer. Til dette skal de diske, der anvendes i poolen, være tilgængelige fra begge systemer.

[[Email protected] ~] # zpool eksport testpool
[[Email protected] ~] # zpool status
ingen puljer til rådighed

Kommandoen 'zpool import' viser alle de puljer, der er tilgængelige til import. Udfør denne kommando fra det system, hvor du vil importere puljen.

[[Email protected] ~] # zpool import
pool: testpool
id: 3823664125009563520
tilstand: ONLINE
handling: Puljen kan importeres ved hjælp af navn eller numerisk identifikator.
config:

testpool ONLINE
sdc ONLINE
sdd ONLINE
sde ONLINE

Indfør nu den nødvendige pool

[[Email protected] ~] # zpool import testpool
[[Email protected] ~] # zpool status
pool: testpool
tilstand: ONLINE
scan: ingen anmodet
config:

NAVNSTATUS LÆS SKRIFTLIG KKSUM
testpool ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
sde ONLINE 0 0 0

fejl: Ingen kendte datafejl

iostat

Man kan kontrollere io-statistikkerne for poolenhederne ved hjælp af kommandoen iostat.

[[Email protected] ~] # zpool iostat -v testpool
kapacitet båndbredde
pool alloc gratis læs skrive læse skrive
---- - - - - - -
testpool 1.80M 2.86G 22 27 470K 417K
sdc 598K 975M 8 9 200K 139K
sdd 636K 975M 7 9 135K 139K
sde 610K 975M 6 9 135K 139K
---- - - - - - -

zfs hjælpeprogram

Vi vil nu gå videre til zfs-hjælpeprogrammet. Her vil vi se på, hvordan man opretter, ødelægger datasæt, filsystem kompression, kvoter og snapshots.

Oprettelse og ødelæggelse af filsystem

ZFS-filsystem kan oprettes ved hjælp af kommandoen zfs create

zfs oprette <filesystem>

[[Email protected] ~] # zfs oprette testpool / studerende
[[Email protected] ~] # zfs oprette testpool / professorer
[[Email protected] ~] # df -h
Filsystemstørrelse Anvendt Tilgængelig Brug% Monteret på
/ dev / sda 19G 1.4G 17G 8% /
devtmpfs 488M 0 488M 0% / dev
tmpfs 497M 0 497M 0% / dev / shm
tmpfs 497M 50M 447M 11% / runde
tmpfs 497M 0 497M 0% / sys / fs / cgroup
testpool 2.8G 0 2.8G 0% / testpool
tmpfs 100M 0 100M 0% / run / bruger / 0
testpool / studerende 2.8G 0 2.8G 0% / testpool / studerende
testpool / professorer 2.8G 0 2.8G 0% / testpool / professorer

Fra ovenstående output bemærke, at selvom der ikke er noget monteringspunkt givet på tidspunktet for filsystemoprettelsen, oprettes mountpoint ved hjælp af samme sti forhold som poolen.

zfs create gør det muligt at bruge -o med det ved hjælp af som vi kan angive muligheder som mountpoint, kompression, kvote, exec osv.

Man kan liste det tilgængelige filsystem ved hjælp af zfs-listen:

[[Email protected] ~] # zfs liste
NAVN ANVENDT TILGØR REFEREN MOUNTPOINT
testpool 100M 2.67G 19K / testpool
testpool / professorer 31K 1024M 20.5K / testpool / professorer
testpool / studerende 1.57M 98.4M 1.57M / testpool / studerende

Vi kan ødelægge et filsystem ved hjælp af ødelæggelsesmuligheden

zfs ødelægge <filesystem>

Compression

Vi forstår nu, hvordan komprimering virker i ZFS. Før vi begynder at bruge komprimering, skal vi aktivere den ved hjælp af 'set compression'

zfs sæt <compression = value> <filesystem | volume> snapshot>

Når dette er gjort, sker kompression og dekompression på filsystemet på fluen gennemsigtigt.

I vores eksempel vil jeg muliggøre kompression på elevkataloget ved hjælp af lz4 komprimeringsalgoritme.

[[Email protected] ~] # zfs set kompression = lz4 testpool / studerende

Jeg vil nu kopiere en fil med størrelse 15M til dette filsystem og kontrollere størrelsen, når den er kopieret.

[[Email protected] /] # cd / var / log
[[Email protected] log] # du -h sikkert
15M sikker

[[Email protected] ~] # cp / var / log / secure / testpool / studerende /

[[Email protected] studerende] # df -h.
Filsystemstørrelse Anvendt Tilgængelig Brug% Monteret på
testpool / studerende 100M 1.7M 99M 2% / testpool / studerende

Bemærk, at størrelsen, der bruges i filsystemet, kun er 1.7M, mens filstørrelsen var 15M. Vi kan også kontrollere kompressionsforholdet.

[[Email protected] ~] # zfs få komprimering testpool
NAVN EJENDOMSVÆRDI KILDE
testpool komprimering 9.03x -

Kvoter og reservation

Lad mig forklare kvoter med et egentligt eksempel. Antag, at vi har et krav på et universitet for at begrænse diskpladsen, der bruges af filsystemet til professorer og studerende. Lad os antage, at vi skal tildele 100MB til studerende og 1GB til professorer. Vi kan gøre brug af 'kvoter' i ZFS for at opfylde dette krav. Kvoter sikrer, at mængden af ​​diskplads, der bruges af et filsystem, ikke overstiger de fastsatte grænser. Reservation hjælper med at faktisk tildele og garantere, at den krævede mængde diskplads er tilgængelig for filsystemet.

zfs set quota = <value> <filesystem | volume> snapshot>

zfs sæt reservation = <værdi> <filesystem | volumen | snapshot>

[[Email protected] ~] # zfs set kvote = 100M testpool / studerende
[[Email protected] ~] # zfs sæt reservation = 100M testpool / studerende
[[Email protected] ~] # zfs liste
NAVN ANVENDT TILGØR REFEREN MOUNTPOINT
testpool 100M 2.67G 19K / testpool
testpool / professorer 19K 2.67G 19K / testpool / professorer
testpool / studerende 1.57M 98.4M 1.57M / testpool / studerende

[[Email protected] ~] # zfs set kvote = 1G testpool / professorer
[[Email protected] ~] # zfs liste
NAVN ANVENDT TILGØR REFEREN MOUNTPOINT
testpool 100M 2.67G 19K / testpool
testpool / professorer 19K 1024M 19K / testpool / professorer
testpool / studerende 1.57M 98.4M 1.57M / testpool / studerende

I ovenstående eksempel har vi tildelt 100MB til studerende og 1GB til professorer. Overhold kolonnen 'AVAIL' i 'zfs list'. I starten havde de størrelsen af ​​2.67GB hver, og efter at kvoten er sat, er værdierne ændret i overensstemmelse hermed.

Snapshots

Snapshots er skrivebeskyttet kopi af ZFS-filsystemet på et givet tidspunkt. De spiser ikke noget ekstra plads i zfs pool. Vi kan enten vende tilbage til samme tilstand på et senere tidspunkt eller kun udtrække et enkelt eller et sæt af filer i henhold til brugerkravet.

Jeg vil nu oprette nogle mapper og en fil under '/ testpool / professors' fra vores tidligere eksempel og derefter tage et øjebliksbillede af dette filsystem.

[[Email protected] ~] # cd / testpool / professorer /

[[Email protected] professorer] # mkdir matematik fysik kemi

[[Email protected] professorer] # cat> qpaper.txt
Spørgsmål til år 2016-17
[[Email protected] professorer] # ls -la
Total 4
drwxr-xr-x 5 rod rod 6 Mar 19 10: 34.
drwxr-xr-x 4 rod rod 4 Mar 19 09: 59 ..
drwxr-xr-x 2 rod rod 2 Mar 19 10: 33 kemi
drwxr-xr-x 2 root rod 2 Mar 19 10: 32-matematik
drwxr-xr-x 2 rod rod 2 Mar 19 10: 32 fysik
-rw-r-r- 1 rod rod 36 Mar 19 10: 35 qpaper.txt

For at tage et øjebliksbillede, brug følgende syntaks:

zfs snapshot <filesystem |[Email protected]<Snap >>

[[Email protected] professorer] # zfs snapshot testpool /[Email protected]
[[Email protected] professorer] # zfs liste -t ​​øjebliksbillede
NAVN ANVENDT TILGØR REFEREN MOUNTPOINT
testpool /[Email protected] 0 - 20.5K -

Jeg vil nu slette filen, der blev oprettet og uddrage den fra snapshots

[[Email protected] professorer] # rm -rf qpaper.txt
[[Email protected] professorer] # ls
kemi matematik fysik
[[Email protected] professorer] # cd .zfs
[[Email protected] .zfs] # cd snapshot / 03-2016 /
[[Email protected] 03-2016] # ls
kemi matematik fysik qpaper.txt

[[Email protected] 03-2016] # cp -a qpaper.txt / testpool / professorer /
[[Email protected] 03-2016] # cd / testpool / professorer /
[[Email protected] professorer] # ls
kemi matematik fysik qpaper.txt

Den slettede fil er tilbage på plads.

Vi kan liste alle tilgængelige snapshots ved hjælp af zfs liste:

[[Email protected] ~] # zfs liste -t ​​øjebliksbillede
NAVN ANVENDT TILGØR REFEREN MOUNTPOINT
testpool /[Email protected] 10.5K - 20.5K -

Endelig lad os ødelægge snapshotet ved hjælp af zfs destroy command:

zfs ødelægge <filesystem |[Email protected]<Snap >>

[[Email protected] ~] # zfs ødelægge testpool /[Email protected]

[[Email protected] ~] # zfs liste -t ​​øjebliksbillede
ingen datasæt til rådighed

Konklusion

I denne artikel har du lært, hvordan du installerer ZFS på CentOS 7 og brug nogle grundlæggende og vigtige kommandoer fra zpool og zfs utilities. Dette er ikke en omfattende liste. ZFS har mange flere evner, og du kan udforske dem længere fra sin officielle side.

Giv en kommentar

Dette websted bruger Akismet til at reducere spam. Lær, hvordan dine kommentardata behandles.