Erinevus lehekülje "ZFS failisüsteemi kasutamine" redaktsioonide vahel

Allikas: Kuutõrvaja
(Jõudluse suurendamine ehk sendfile() funktsioon suurtel failidel)
 
(ei näidata sama kasutaja 87 vahepealset redaktsiooni)
4. rida: 4. rida:
  
 
* praktiliselt piirita mahupiirangud (failisüsteemi suuruse, failide arvu, snapshottide arvu jms omaduste jaoks)
 
* praktiliselt piirita mahupiirangud (failisüsteemi suuruse, failide arvu, snapshottide arvu jms omaduste jaoks)
* 2008 aasta sügisel ilmunud Solaris 10 u6 operatsioonisüsteemi saab ZFS pealt alglaadida
 
 
* kokku on ühendatud failisüsteemi ning logical volume managementi omadused, mis teeb kasutamise mugavaks
 
* kokku on ühendatud failisüsteemi ning logical volume managementi omadused, mis teeb kasutamise mugavaks
 
* ZFS on open-source failisüsteem (Common Development and Distribution License)
 
* ZFS on open-source failisüsteem (Common Development and Distribution License)
 
* töötamise ajal saab failisüsteemi moodustavate seadmete arvu suurendada, aga eemaldada saab vaid teatud tingimustel
 
* töötamise ajal saab failisüsteemi moodustavate seadmete arvu suurendada, aga eemaldada saab vaid teatud tingimustel
 
+
* Failisüsteemi blokisuurus valitakse dünaamiliselt ja on jooksvalt muudetav.
2007 aasta alguses tundub, et ZFS failisüsteemi kasutamiseks on kõige paremad võimalused operatsioonisüsteemiga Solaris.
+
* Snapshotide ja failisüsteemi kloonide tegemise võimalus
 +
* Kõikide plokkidega koos salvestatakse 256 bitine kontrollsumma. Kui kettalt loetud info ja kontrollsumma ei lange kokku taastatakse riknenud andmed automaatselt paarsusinfo abil.  
 +
* Võimalus kasutada pakitud failisüsteeme ja deduplikeerimist
  
 
ZFS versioonid ja neis lisandunud võimalused
 
ZFS versioonid ja neis lisandunud võimalused
38. rida: 39. rida:
 
   22  Received properties
 
   22  Received properties
  
Tabeli paremaks mõistmiseks info, et FreeBSD 8-STABLE/9-CURRENT peale on portud versioon 14 (versioon 13 on 8.0-RELEASE süsteemis).
+
Tabeli paremaks mõistmiseks info, et FreeBSD 8-STABLE/9-CURRENT peale on portud versioon 15 (versioon 13 on 8.0-RELEASE süsteemis).
 
Täpsemat infot FreeBSD peal ZFS kasutamisest ja versioonidest leiab http://wiki.freebsd.org/ZFS
 
Täpsemat infot FreeBSD peal ZFS kasutamisest ja versioonidest leiab http://wiki.freebsd.org/ZFS
  
44. rida: 45. rida:
  
 
Siin tekstis vaadeldud eelkõige ZFS failisüsteemi kasutamist operatsioonisüsteemil Solaris, kuid
 
Siin tekstis vaadeldud eelkõige ZFS failisüsteemi kasutamist operatsioonisüsteemil Solaris, kuid
kuna FreeBSD peale on ZFS samuti täiel mahul porditud ning uuendusi porditakse piisavalt sagedasti
+
kuna FreeBSD peale on ZFS samuti täiel mahul porditud ning võimalik on seda üle Fuse kasutada ka Linuxis
siis on 99% ulatuses toodud käsud rakendatavad ka FreeBSD süsteemis. Lõpus on ära toodud ka mõned FreeBSD spetsiifilised kasutusjuhtumid.
+
siis on 99% ulatuses toodud käsud rakendatavad ka neis süsteemides. Lõpus on ära toodud ka mõned FreeBSD ja Linuxi spetsiifilised kasutusjuhtumid.
  
Peamiseks erinevuseks võrreldes Solarisega on see ,et FreeBSD's pole moodul vaikimisi laetud ning selle jaoks tuleb lisada rc.conf faili rida
+
FreeBSD Peamiseks erinevuseks võrreldes Solarisega on ,et FreeBSD's pole ZFS moodul vaikimisi laetud ning selleks tuleb lisada rc.conf faili
  
 
  zfs_enable="YES"
 
  zfs_enable="YES"
 +
 +
Või tükkida käsk zfs mooduli jooksvalt laadimiseks
 +
 +
# kldload zfs
  
 
===Kasutus===
 
===Kasutus===
64. rida: 69. rida:
 
ZFS pooli tegemisel näidatakse, milliseid füüsilisi seadmed ja millise redundantsusega kasutama asutakse. Kõige otsekohesem on kasutada kogu füüsilist seadet, aga võimalik on kasutada ka nn Solarise partitsioone, nt c4t0d0s6 või tavalisi faile failisüsteemist. Viimane võimalus on praktiliselt sobilik ehk vaid katsetamiseks ning ZFS omaduste tundmaõppimiseks.
 
ZFS pooli tegemisel näidatakse, milliseid füüsilisi seadmed ja millise redundantsusega kasutama asutakse. Kõige otsekohesem on kasutada kogu füüsilist seadet, aga võimalik on kasutada ka nn Solarise partitsioone, nt c4t0d0s6 või tavalisi faile failisüsteemist. Viimane võimalus on praktiliselt sobilik ehk vaid katsetamiseks ning ZFS omaduste tundmaõppimiseks.
  
Näiteks, moodustame kahe Solaris operatsioonisüseemile nähtava kettaseadme c2t0d0 ja c3t0d0 baasil ZFS pool'i nimega tank, milles on füüsilised kettaid paigutatud peeglisse
+
Moodustame 100G suurusele kettaseadmele da0 (/dev/da0) ZFS failisüsteemi
  
  # zpool create tank mirror c2t0d0 c3t0d0
+
  # zpool create tank da0
  
 
Moodustatud pool'i omadusi saab vaadata käsuga
 
Moodustatud pool'i omadusi saab vaadata käsuga
75. rida: 80. rida:
  
 
  # zpool destroy tank
 
  # zpool destroy tank
 +
 +
ZFS võimaldab lisaks failisüsteemi tekitamisele koostada ka erinevaid raid skeeme. Näiteks moodustame kahe Solaris operatsioonisüseemile nähtava kettaseadme c2t0d0 ja c3t0d0 baasil ZFS pool'i nimega tank, milles on füüsilised kettaid paigutatud peeglisse
 +
 +
# zpool create tank mirror c2t0d0 c3t0d0
  
 
Raid 5 skeemiga pooli moodustamiseks tuleb öelda
 
Raid 5 skeemiga pooli moodustamiseks tuleb öelda
  
 
  # zpool create tank raidz c6t8d0 c7t0d0 c7t5d0
 
  # zpool create tank raidz c6t8d0 c7t0d0 c7t5d0
 +
 +
Tegemist on Raid5 laadse süsteemiga kus paarsusinfo paigutatakse mööda kettaid. Kuid kasutusel on erinevad algoritmid mis pakuvad suuremat jõudlust kirjutamise puhul. Raidz üks kasulik omadus on iseparanduvus "self-healing". Kui bad-block on avastatud siis ZFS lisaks korrektsete andmete võtmisele üritab ka viga proovides asendada vigase info korrektsega. Ühe füüsilise ketta riknemise korral suudab ZFS omakorda aga paarsusinfo säilunud block-devicedele ümber jagada.
 +
 +
Raid 10 skeemiga pooli moodustamiseks
 +
 +
# zpool create srv mirror da1 da2 da3 mirror da4 da5 da6
  
 
Ning stripe ehk raid0 tekitamiseks
 
Ning stripe ehk raid0 tekitamiseks
102. rida: 117. rida:
 
   tank  failmode    wait        default
 
   tank  failmode    wait        default
  
Pooli juures on oluline tähele panna, et ta kasutab sisemiselt nn on-disk format'it. Võimalikud väärtused Solaris 10 u6 puhul on
+
Pooli juures on oluline tähele panna, et ta kasutab sisemiselt nn on-disk format'it. Võimalikud väärtused ZFS pool 15 versioonil on:
  
  # zpool upgrade -v
+
  # zpool upgrade -v
  This system is currently running ZFS pool version 10.
+
  This system is currently running ZFS pool version 15.
 
   
 
   
 
  The following versions are supported:
 
  The following versions are supported:
121. rida: 136. rida:
 
   9  refquota and refreservation properties
 
   9  refquota and refreservation properties
 
   10  Cache devices
 
   10  Cache devices
 +
  11  Improved scrub performance
 +
  12  Snapshot properties
 +
  13  snapused property
 +
  14  passthrough-x aclinherit
 +
  15  user/group space accounting
 
  For more information on a particular version, including supported releases, see:
 
  For more information on a particular version, including supported releases, see:
 
   
 
   
134. rida: 154. rida:
 
  # zpool export katsetus
 
  # zpool export katsetus
 
  # zpool import katsetus srv
 
  # zpool import katsetus srv
 +
 +
või
 +
 +
# zfs rename tank/katsetus tank/srv
 +
 +
Võimalik on ka lihtsalt testida milline tulevane raidiskeem välja nägema
 +
hakkab ilma seda reaalselt ketastele loomata, selleks tuleb create järele lisada võti -n
  
 
===Failisüsteem===
 
===Failisüsteem===
211. rida: 238. rida:
  
 
* http://docs.sun.com/app/docs/doc/817-2271/gayog?a=view
 
* http://docs.sun.com/app/docs/doc/817-2271/gayog?a=view
 +
 +
Zpoolis antud käskude vaatamiseks, alates selle loomisest
 +
 +
# '''zpool history'''
 +
History for 'home':
 +
2013-01-23.19:39:31 zpool create -f home raidz da1 da2 ada0 ada1 ada3
 +
2013-01-24.01:37:42 zfs set primarycache=metadata home
 +
2013-01-30.02:56:40 zpool scrub home
 +
2013-02-10.16:35:02 zpool scrub home
  
 
===Snapshoti kasutamine===
 
===Snapshoti kasutamine===
254. rida: 290. rida:
 
Selleks, et snapshotile vastavasse failisüsteemi saaks kasutada traditsiooniliselt, tuleb temast moodustada failisüsteemi kloon, näiteks selliselt
 
Selleks, et snapshotile vastavasse failisüsteemi saaks kasutada traditsiooniliselt, tuleb temast moodustada failisüsteemi kloon, näiteks selliselt
  
  bash# zfs clone anum/opt-csw@20070331 anum/opt-csw-20070331
+
  # zfs clone anum/opt-csw@20070331 anum/opt-csw-20070331
  
 
Tulemusena tekib failisüsteemi anum/opt-csw-20070331 kasutada nagu tavalist ZFS failisüsteemi.
 
Tulemusena tekib failisüsteemi anum/opt-csw-20070331 kasutada nagu tavalist ZFS failisüsteemi.
284. rida: 320. rida:
 
Alates versioonist Solaris 10 8/07 (u4) saab hõlpsasti jagada võrku iscsi targetina ZFS volume'it, selleks tuleb öelda
 
Alates versioonist Solaris 10 8/07 (u4) saab hõlpsasti jagada võrku iscsi targetina ZFS volume'it, selleks tuleb öelda
  
  bash# zfs create -V 20g tank/iscsishare
+
  # zfs create -V 20g tank/iscsishare
  bash# zfs set shareiscsi=on tank/iscsishare
+
  # zfs set shareiscsi=on tank/iscsishare
  bash# iscsitadm list target
+
  # iscsitadm list target
 
  Target: tank/iscsishare
 
  Target: tank/iscsishare
 
     iSCSI Name: iqn.1986-03.com.sun:02:875dc199-fcc0-e9f3-d548-b18bd837c9d5
 
     iSCSI Name: iqn.1986-03.com.sun:02:875dc199-fcc0-e9f3-d548-b18bd837c9d5
295. rida: 331. rida:
 
Targeti eemaldamiseks tuleb öelda
 
Targeti eemaldamiseks tuleb öelda
  
  bash# zfs set shareiscsi=off tank/iscsishare
+
  # zfs set shareiscsi=off tank/iscsishare
  bash# zfs destroy tank/iscsishare
+
  # zfs destroy tank/iscsishare
  
 
NFS ja iSCSI protokolliga ZFS ressursi võrku jagamisel leiab aset Solarisele iseloomulikuna, et automaatselt käivitatakse sobivalt seadistatud NFS ja iSCSI targeti deemonid.
 
NFS ja iSCSI protokolliga ZFS ressursi võrku jagamisel leiab aset Solarisele iseloomulikuna, et automaatselt käivitatakse sobivalt seadistatud NFS ja iSCSI targeti deemonid.
 
  
 
===Andmete pakkimine===
 
===Andmete pakkimine===
315. rida: 350. rida:
 
Ja mõned testid
 
Ja mõned testid
  
Esimesena sql dumbiga
+
Esimesena sql dumbiga. Faili suurus väljaspool ZFSi pakkimata
 
 
Fail väljaspool ZFSi pakkimata
 
  
# du -h /home/jj/KOOLIELU/koolielu.sql
 
 
  1.1G    /home/jj/KOOLIELU/koolielu.sql
 
  1.1G    /home/jj/KOOLIELU/koolielu.sql
  
Faíl ZFS sees
+
Fail ZFS sees
  
 
  # du -h /zfstest/koolielu.sql
 
  # du -h /zfstest/koolielu.sql
333. rida: 365. rida:
 
  zfstest  compressratio  3.14x    -
 
  zfstest  compressratio  3.14x    -
  
DVD puhul 4.4G iso läks 4.3G suuruseks
+
Selline võit on saavutatav muidugi vaid hõredate tekstifailidega. Näiteks DVD5 ISO faili puhul 4.4G iso läks vaid 4.3G suuruseks
  
freebsd ports /usr/ports oli zfs pakituna 253 mega, seejuures on  
+
FreeBSD ports haru (/usr/ports) oli zfs pakituna 253 mega, seejuures on  
 
ports originaalse suurusega 488 mega
 
ports originaalse suurusega 488 mega
  
OpenSolarise masina peal kunagi tehtud katsetused:
+
Lisa2: OpenSolarise masina peal kunagi tehtud katsetused:
  
 
DD-ga 1 GiB  faili kirjutamiskiirused ZFS-il:
 
DD-ga 1 GiB  faili kirjutamiskiirused ZFS-il:
353. rida: 385. rida:
 
  compress=on dedup=on
 
  compress=on dedup=on
 
  45,1 MB/s
 
  45,1 MB/s
 
===ZFS failisüsteemi kasutamine Solarise non-global tsoonis===
 
 
ZFS failisüsteemi kasutamiseks Solarise non-global tsooni juures saab tsooniga seostada kas ZFS failisüsteemi enda või ZFS dataset'i. Viimasel juhul on tsooni administraatoril enam võimalusi vastava ZFS ressursiga tegeleda, nt saab ta moodustada failisüsteeme ja snapshotte tsooni sees.
 
 
Näiteks teeme nii, et ZFS failisüsteemi tank/data saab kasutada tsoonis 'tsooninimi' ning ta on seal kataloogi /data alt ligipääsetav
 
 
  bash# zfs set mountpoint=legacy tank/data
 
  bash# zonecfg -z tsooninimi
 
  ...
 
  zonecfg:tsoooninimi> add fs
 
  zonecfg:tsoooninimi:fs> set type=zfs
 
  zonecfg:tsoooninimi:fs> set special=tank/data
 
  zonecfg:tsoooninimi:fs> set dir=/data
 
  zonecfg:tsoooninimi:fs> end
 
 
Aga soovides delegeerida non-global tsoonile tank/data kui dataset'i tuleb öelda
 
 
  zonecfg:tsooninimi> add dataset
 
  zonecfg:tsooninimi:dataset> set name=tank/data
 
  zonecfg:tsooninimi:dataset> end
 
 
Tsooni delegeeritud failisüsteemidega ei saa globaalses tsoonis turvakaalutlustega ennem tegeleda, kui tsooni seadistustest on vastav dataset eemaldatud ning lisaks on ka eemaldatud zoned lipp
 
 
bash# zfs set zoned=off tank
 
 
kus tank on dataset'i nimi.
 
  
 
===zpooli versiooni uuendamine===
 
===zpooli versiooni uuendamine===
385. rida: 390. rida:
 
Solarise operatsioonisüsteemi uuendamisel võib juhtuda, et zfs tarkvara toetab uuemat zfs failisüsteemi versiooni kui kasutusel on. Sellest saab teada käsuga
 
Solarise operatsioonisüsteemi uuendamisel võib juhtuda, et zfs tarkvara toetab uuemat zfs failisüsteemi versiooni kui kasutusel on. Sellest saab teada käsuga
  
  bash# zpool status export
+
  # zpool status export
 
   pool: export
 
   pool: export
 
  state: ONLINE
 
  state: ONLINE
395. rida: 400. rida:
 
Nagu arvuti ütleb, versiooni uuendamine toimub selliselt
 
Nagu arvuti ütleb, versiooni uuendamine toimub selliselt
  
  bash# zpool upgrade export
+
  # zpool upgrade export
 
  This system is currently running ZFS version 3.
 
  This system is currently running ZFS version 3.
 
  Successfully upgraded 'export' from version 2 to version 3
 
  Successfully upgraded 'export' from version 2 to version 3
  
===Kõvaketta vahetamine zpoolis===
+
===Kõvaketta vahetamine poolis===
  
Kõvaketta vahetamiseks zpoolis tuleb öelda
+
Kõvaketta vahetamiseks poolis tuleb öelda
  
 
  zpool replace -f anum c5t1d0 c5t2d0
 
  zpool replace -f anum c5t1d0 c5t2d0
426. rida: 431. rida:
 
  errors: No known data errors
 
  errors: No known data errors
  
===Seadme lisamine pooli ehk mitme erineva pooli kombineerimine üheks===
+
===Ketaste lisamine pooli ehk mitme erineva pooli kombineerimine üheks===
  
 
Seadme lisamiseks tuleb öelda, kusjuures poolilt moodustatud failisüsteemid võivad olla samal ajal külge ühendatud
 
Seadme lisamiseks tuleb öelda, kusjuures poolilt moodustatud failisüsteemid võivad olla samal ajal külge ühendatud
526. rida: 531. rida:
 
   
 
   
 
  errors: No known data errors
 
  errors: No known data errors
 
Mõned kiirusetestid, kus võrdleme ühesuguseid kombineeritud raidiskeemide jõudlust võrreldes tavalise lahendusega
 
 
Kaks nelja kettaga raid-z pooli ühes poolis
 
 
#zpool create t1 raidz da0 da1 da2 da3 raidz da4 da5 da6 da7
 
 
#df -h
 
t1            1.5T      0B    1.5T    0%    /t1
 
 
#dd if=/dev/urandom of=/t1/1G bs=1024 count=1024
 
1073741824 bytes transferred in 19.908234 secs (53934559 bytes/sec)
 
 
Kaks nelja kettaga ja üks kolme kettaga raid-z pool ühes poolis
 
 
#create -f t2 raidz da0 da1 da2 da3 raidz da4 da5 da6 da7 raidz ad4 ad6 ad10
 
 
#df -h
 
t2            1.8T      0B    1.8T    0%    /t2
 
 
#dd if=/dev/urandom of=/t2/1G bs=1024k count=1024
 
1073741824 bytes transferred in 20.388560 secs (52663937 bytes/sec)
 
 
Üs raidz pool kolme kettaga
 
 
#zpool create -f t3 raidz ad4 ad6 ad10
 
 
#df -h
 
#t3            291G      0B    291G    0%    /t3
 
 
#dd if=/dev/urandom of=/t3/1G bs=1024k count=1024
 
1073741824 bytes transferred in 24.006931 secs (44726326 bytes/sec)
 
  
 
===Pooli import ja eksport===
 
===Pooli import ja eksport===
580. rida: 553. rida:
 
Ning kui sobib, siis teha kasutatavaks öeldes
 
Ning kui sobib, siis teha kasutatavaks öeldes
  
  bash# zpool import teine_anum
+
  # zpool import teine_anum
  
 
Kui imporditav pool arvab enda kohta nime, mis on juba kasutusel, siis tuleb öelda
 
Kui imporditav pool arvab enda kohta nime, mis on juba kasutusel, siis tuleb öelda
  
  bash# zpool import teine_anum uus_pooli_nimi
+
  # zpool import teine_anum uus_pooli_nimi
  
 
Kusjuures, kui sedasi külge ühendatava pooli sees on kirjeldatud failisüsteemid, mille külgeühenduspunkt ei ole töötavas operatsioonisüsteemis tühi, siis ei toimu külgeühendamist ja saab sarnase teate
 
Kusjuures, kui sedasi külge ühendatava pooli sees on kirjeldatud failisüsteemid, mille külgeühenduspunkt ei ole töötavas operatsioonisüsteemis tühi, siis ei toimu külgeühendamist ja saab sarnase teate
  
  bash# zpool import -f teine_anum           
+
  # zpool import -f teine_anum           
 
  cannot mount '/data': directory is not empty
 
  cannot mount '/data': directory is not empty
  
 
Kui aga on plaanist pooli moodustavad kõvakettad süsteemist eemaldada, tuleb öelda
 
Kui aga on plaanist pooli moodustavad kõvakettad süsteemist eemaldada, tuleb öelda
  
  bash# zpool export anum
+
  # zpool export anum
 +
 
 +
===ZFS ja Deduplication===
 +
 
 +
TODO
 +
 
 +
* For every TB of pool data, you should expect 5 GB of dedup table data,
 +
assuming an average block size of 64K.
 +
* This means you should plan for at least 20GB of system RAM per TB of
 +
pool data, if you want to keep the dedup table in RAM, plus any extra
 +
memory for other metadata, plus an extra GB for the OS.
  
===Probleemid Solarises===
+
(see oli kokkuvõte, muidu on seal üsna pikk ja põhjalik analüüs)
 +
http://constantin.glez.de/blog/2011/07/zfs-dedupe-or-not-dedupe
 +
 
 +
*http://blogs.sun.com/bonwick/entry/zfs_dedup
 +
*http://constantin.glez.de/blog/2010/03/opensolaris-zfs-deduplication-everything-you-need-know
 +
 
 +
===ZFS kasutamine Solarises===
 +
====Probleemid Solarises====
  
 
Kui zfs mingil põhjusel nö eksib väga ära, siis võib arvuti bootimine olla vägagi raskendatud. Aitab bootida nullindasse milestone'i, sarnaselt
 
Kui zfs mingil põhjusel nö eksib väga ära, siis võib arvuti bootimine olla vägagi raskendatud. Aitab bootida nullindasse milestone'i, sarnaselt
609. rida: 599. rida:
 
Kui pooli moodustamisel vastab süsteem, et
 
Kui pooli moodustamisel vastab süsteem, et
  
  bash# zpool create tank c6t8d0 c7t0d0 c7t5d0
+
  # zpool create tank c6t8d0 c7t0d0 c7t5d0
 
  invalid vdev specification
 
  invalid vdev specification
 
  use '-f' to override the following errors:
 
  use '-f' to override the following errors:
620. rida: 610. rida:
 
  bash# zpool create -f tank c6t8d0 c7t0d0 c7t5d0
 
  bash# zpool create -f tank c6t8d0 c7t0d0 c7t5d0
  
===Kasutamine CSW tarkvaraga majandamisel===
+
====Kasutamine Solarises CSW tarkvaraga majandamisel====
  
 
CSW paketid paigaldatakse reeglina kataloogi /opt/csw kusjuures paketihaldusega seotud muudatused fikseeritakse kataloogis /var/sadm, st samas kohas koos nt SUNW pakettidega. Kui need kataloogid paigutada ZFS failisüsteemidele, siis on CSW tarkvara muudatuste tegemisel võimalus suhteliselt hõlpsasti kasutades sobivalt ZFS snapshotte neid muudatusi vajadusel tagasi võtta.  
 
CSW paketid paigaldatakse reeglina kataloogi /opt/csw kusjuures paketihaldusega seotud muudatused fikseeritakse kataloogis /var/sadm, st samas kohas koos nt SUNW pakettidega. Kui need kataloogid paigutada ZFS failisüsteemidele, siis on CSW tarkvara muudatuste tegemisel võimalus suhteliselt hõlpsasti kasutades sobivalt ZFS snapshotte neid muudatusi vajadusel tagasi võtta.  
626. rida: 616. rida:
 
Lisaks, /export ja /usr/local kataloogide pidamine ZFS peal võib samuti anda süsteemi haldamisel juurde paindlikkust.
 
Lisaks, /export ja /usr/local kataloogide pidamine ZFS peal võib samuti anda süsteemi haldamisel juurde paindlikkust.
  
===ZFS ohutu katsetamine FreeBSD süsteemis===
+
====ZFS failisüsteemi kasutamine Solarise non-global tsoonis====
 +
 
 +
ZFS failisüsteemi kasutamiseks Solarise non-global tsooni juures saab tsooniga seostada kas ZFS failisüsteemi enda või ZFS dataset'i. Viimasel juhul on tsooni administraatoril enam võimalusi vastava ZFS ressursiga tegeleda, nt saab ta moodustada failisüsteeme ja snapshotte tsooni sees.
 +
 
 +
Näiteks teeme nii, et ZFS failisüsteemi tank/data saab kasutada tsoonis 'tsooninimi' ning ta on seal kataloogi /data alt ligipääsetav
 +
 
 +
  bash# zfs set mountpoint=legacy tank/data
 +
  bash# zonecfg -z tsooninimi
 +
  ...
 +
  zonecfg:tsoooninimi> add fs
 +
  zonecfg:tsoooninimi:fs> set type=zfs
 +
  zonecfg:tsoooninimi:fs> set special=tank/data
 +
  zonecfg:tsoooninimi:fs> set dir=/data
 +
  zonecfg:tsoooninimi:fs> end
 +
 
 +
Aga soovides delegeerida non-global tsoonile tank/data kui dataset'i tuleb öelda
 +
 
 +
  zonecfg:tsooninimi> add dataset
 +
  zonecfg:tsooninimi:dataset> set name=tank/data
 +
  zonecfg:tsooninimi:dataset> end
 +
 
 +
Tsooni delegeeritud failisüsteemidega ei saa globaalses tsoonis turvakaalutlustega ennem tegeleda, kui tsooni seadistustest on vastav dataset eemaldatud ning lisaks on ka eemaldatud zoned lipp
 +
 
 +
bash# zfs set zoned=off tank
 +
 
 +
kus tank on dataset'i nimi.
 +
 
 +
===ZFSi ohutu katsetamine FreeBSD süsteemis===
  
 
Soovides vaid zfs'i testida ning kasutada seejuures erinevaid img faile ,et mängida
 
Soovides vaid zfs'i testida ning kasutada seejuures erinevaid img faile ,et mängida
633. rida: 650. rida:
 
Loome testiks isofaili mille haagime külge zfs formaadis kettana
 
Loome testiks isofaili mille haagime külge zfs formaadis kettana
  
  dd if=/dev/zero of=zfs.img bs=1024k count=11024
+
  # dd if=/dev/zero of=zfs.img bs=1024k count=11024
 
  5834+0 records in
 
  5834+0 records in
 
  5833+0 records out
 
  5833+0 records out
659. rida: 676. rida:
 
  ..
 
  ..
 
  zfstest            5.6G      0B    5.6G    0%    /zfstest
 
  zfstest            5.6G      0B    5.6G    0%    /zfstest
 
===ZFS ja Deduplication===
 
 
TODO
 
 
*http://blogs.sun.com/bonwick/entry/zfs_dedup
 
*http://constantin.glez.de/blog/2010/03/opensolaris-zfs-deduplication-everything-you-need-know
 
  
 
===Pakitud failisüsteemi ja quota probleem===
 
===Pakitud failisüsteemi ja quota probleem===
687. rida: 697. rida:
 
Probleem tekkis tõenäoliselt kuna tegu oli pakitud failisüsteemiga.
 
Probleem tekkis tõenäoliselt kuna tegu oli pakitud failisüsteemiga.
 
Sellest tuleb järeldada, et ka kataloogikirjed on pakitud mitte vaid inodede sisu. Ehk mõne baidi muutmine suurendab kataloogi ja nullide kirjutamine teeb faili väiksemaks.
 
Sellest tuleb järeldada, et ka kataloogikirjed on pakitud mitte vaid inodede sisu. Ehk mõne baidi muutmine suurendab kataloogi ja nullide kirjutamine teeb faili väiksemaks.
 +
 +
Edit: Tundub, et sama probleem tekib ka vahel mitte pakitud failisüsteemiga. Terve kaustapuu puhul oleks lahenduseks
 +
kõik failid tühjendada
 +
 +
# find /path/to/directory -type f -exec cat /dev/null > {} \;
 +
 +
Ja seejärel rm failiga eemaldada.
 +
 +
===ZFS LInuxil üle ZFS-Fuse===
 +
 +
Debiani puhul tuleb installida järgnevad sõltuvused
 +
 +
# apt-get install libaio-dev libattr1-dev libacl1-dev libz-dev libz-dev libfuse-dev libfuse2 scons libssl-dev
 +
# apt-get install bzip2
 +
# apt-get install make
 +
 +
ZFS-Fuse paketi installiks tuleb käivitada järgnevad käsud
 +
 +
Loome kausta kus kompileerida
 +
# cd /usr/src/
 +
Tõmbame algkoodi alla
 +
# wget http://zfs-fuse.net/releases/0.6.9/zfs-fuse-0.6.9.tar.bz2
 +
Pakime lahti
 +
# bunzip2 -d zfs-fuse-0.6.9.tar.bz2
 +
# tar -xf zfs-fuse-0.6.9.tar
 +
Siseneme kausta ja kompileerime scons käsuga
 +
# cd zfs-fuse-0.6.9
 +
# cd src
 +
# scons
 +
 +
To install, run 'scons install' with appropriate privileges. It will
 +
install the binaries in /usr/local/sbin by default.
  
 
===Jõudluse suurendamine ehk sendfile() funktsioon ja suured failid===
 
===Jõudluse suurendamine ehk sendfile() funktsioon ja suured failid===
  
Kui tarkvarad nagu Ftp ja Veebiserver peavad jagama ZFS pealt
+
Kui FTP ja Veebiserver peavad jagama ZFS pealt mahukaid faile siis võib tarkvarade puhul mis kasutavad vaikimisi Sendfile() funktsiooni failide edastamise jõudlus drastiliselt langeda. Sendfile on nimelt mõeldud peamiselt paljude väikeste failide serveerimiseks mitte aga suurte.
suuri faile siis võib tarkvarade puhul mis kasutavad vaikimisi Sendfile() funktsiooni failide edastamise jõudlus drastiliselt langeda. Sendfile on nimelt mõeldud peamiselt paljude väikeste failide serveerimiseks mitte suurte.
 
 
   
 
   
Seega suurte ISO failide ja arhiivide liigutamise puhul tasub see tarkvarast välja lülitada.
+
Seega ISO failide ja arhiivide liigutamise puhul tasub see kasutatavast tarkvarast välja lülitada.  
  
Vsftps piisab näiteks kui lisada vsftpd.conf faili rida
+
Vsftp puhul piisab näiteks kui lisada vsftpd.conf faili rida
  
 
  use_sendfile=NO
 
  use_sendfile=NO
  
Veebiserveri Apache puhul saab seda seadistad isegi täpsemalt kaustade põhiselt
+
Veebiserveri Apache puhul saab seda seadistad isegi täpsemalt kaustade põhiselt:
  
 
  <Directory "/teekond-failideni">
 
  <Directory "/teekond-failideni">
705. rida: 746. rida:
 
  </Directory>
 
  </Directory>
  
* http://www.kernel.org/doc/man-pages/online/pages/man2/sendfile.2.html
+
Zfsil võiks lasta mälusäästu huvides käsnata üksnes metadatat.
 +
 
 +
# zfs set primarycache=metadata tank/datab
 +
 
 +
===Kiirustestid===
 +
 
 +
Mõned subjektiivsed kiirusetestid, kus võrdleme ühesuguseid kombineeritud raidiskeemide jõudlust võrreldes tavalise lahendusega
 +
 
 +
Kaks nelja kettaga raid-z pooli ühes poolis
 +
 
 +
# zpool create t1 raidz da0 da1 da2 da3 raidz da4 da5 da6 da7
 +
 
 +
dd test
 +
 
 +
# dd if=/dev/urandom of=/t1/1G bs=1024 count=1024
 +
1073741824 bytes transferred in 19.908234 secs (53934559 bytes/sec)
 +
 
 +
Kaks nelja kettaga ja üks kolme kettaga raid-z pool ühes poolis
 +
 
 +
# create -f t2 raidz da0 da1 da2 da3 raidz da4 da5 da6 da7 raidz ad4 ad6 ad10
 +
 
 +
dd test
 +
 
 +
# dd if=/dev/urandom of=/t2/1G bs=1024k count=1024
 +
1073741824 bytes transferred in 20.388560 secs (52663937 bytes/sec)
 +
 
 +
Üks raidz pool kolme kettaga
 +
 
 +
# zpool create -f t3 raidz ad4 ad6 ad10
 +
 
 +
dd test
 +
 
 +
# dd if=/dev/urandom of=/t3/1G bs=1024k count=1024
 +
1073741824 bytes transferred in 24.006931 secs (44726326 bytes/sec)
 +
 
 +
===Probleemide avastamine käsuga scrub===
 +
 
 +
Probleem: üks ketas poolis tundub katki
 +
 
 +
Prooviks parandada scrub abil
 +
 
 +
  # zpool scrub srv
 +
  # zpool status
 +
    pool: srv
 +
  state: ONLINE
 +
  status: One or more devices could not be used because the label is missing or
 +
          invalid.  Sufficient replicas exist for the pool to continue
 +
          functioning in a degraded state.
 +
  action: Replace the device using 'zpool replace'.
 +
    see: http://www.sun.com/msg/ZFS-8000-4J
 +
  scrub: scrub in progress for 0h0m, 0.00% done, 345h11m to go
 +
  config:
 +
 
 +
          NAME        STATE    READ WRITE CKSUM
 +
          srv        ONLINE      0    0    0
 +
            raidz1    ONLINE      0    0    0
 +
              ad10    UNAVAIL      0  467 7.64M  corrupted data
 +
              ad8    ONLINE      0    0    0
 +
              ad6    ONLINE      0    0    0
 +
              ad12    ONLINE      0    0    0
 +
              ad14    ONLINE      0    0    0
 +
 
 +
errors: No known data errors
 +
 
 +
Anname scrubi soovitatud käsu
 +
 
 +
# zpool replace -f srv ad10
 +
 
 +
Mille peale algab asendamine
 +
 
 +
# zpool status
 +
  pool: srv
 +
  state: DEGRADED
 +
  scrub: scrub in progress for 0h5m, 7.14% done, 1h6m to go
 +
  config:
 +
 
 +
        NAME          STATE    READ WRITE CKSUM
 +
        srv            DEGRADED    0    0    0
 +
          raidz1      DEGRADED    0    0    0
 +
            replacing  DEGRADED    0    0    0
 +
              ad10/old  UNAVAIL      0    0    0  cannot open
 +
              ad10      ONLINE      0    0    0  2.92G resilvered
 +
            ad8        ONLINE      0    0    0
 +
            ad10      ONLINE      0    0    0
 +
            ad12      ONLINE      0    0    0
 +
            ad14      ONLINE      0    0    0
 +
 +
errors: No known data errors
 +
 
 +
Tulemus..
 +
 
 +
# zpool status
 +
  pool: home
 +
  state: ONLINE
 +
  scrub: resilver completed after 4h22m with 0 errors on Tue Jun 21 22:36:16 2011
 +
config:
 +
 
 +
        NAME        STATE    READ WRITE CKSUM
 +
          home      ONLINE      0    0    0
 +
          raidz1  ONLINE      0    0    0
 +
            ad10    ONLINE      0    0    0  571G resilvered
 +
            ad8    ONLINE      0    0    0
 +
            ad10    ONLINE      0    0    0
 +
            ad12    ONLINE      0    0    0
 +
            ad14    ONLINE      0    0    0
 +
 
 +
Kui vead on parandatud võib vanade vigade näitamise lõpetada selle ajaloo kustutamisega andes käsu
 +
 
 +
# zpool clear
 +
 
 +
===Zfz-stats===
 +
FreeBSD puhul tarvis paigaldada port
 +
 
 +
*/usr/ports/sysutils/zfs-stats
 +
 
 +
Kasutamine
 +
 
 +
# zfs-stats -E
 +
 +
------------------------------------------------------------------------
 +
ZFS Subsystem Report Tue Oct  4 10:36:07 2011
 +
------------------------------------------------------------------------
 +
 +
ARC Efficiency: 9.12m
 +
Cache Hit Ratio: 92.66% 8.45m
 +
Cache Miss Ratio: 7.34% 669.64k
 +
Actual Hit Ratio: 92.66% 8.45m
 +
 +
Data Demand Efficiency: 42.92% 332.24k
 +
 +
CACHE HITS BY CACHE LIST:
 +
  Most Recently Used: 37.01% 3.13m
 +
  Most Frequently Used: 62.99% 5.33m
 +
  Most Recently Used Ghost: 0.32% 26.84k
 +
  Most Frequently Used Ghost: 1.43% 121.08k
 +
 +
CACHE HITS BY DATA TYPE:
 +
  Demand Data: 1.69% 142.60k
 +
  Prefetch Data: 0.00% 0
 +
  Demand Metadata: 98.31% 8.31m
 +
  Prefetch Metadata: 0.00% 0
 +
 +
CACHE MISSES BY DATA TYPE:
 +
  Demand Data: 28.32% 189.63k
 +
  Prefetch Data: 0.00% 0
 +
  Demand Metadata: 71.68% 480.00k
 +
  Prefetch Metadata: 0.00% 5
 +
 +
------------------------------------------------------------------------
 +
 
 +
===GeomWatch===
 +
 
 +
 
 +
 
 +
 
 +
 
 +
Before starting geomWatch, you should edit its configuration file,
 +
/usr/local/etc/geomWatch.conf. Then, add the following line to /etc/rc.conf:
 +
 
 +
geomwatch_enable="YES"
 +
 
 +
Finally, to start it, run the following command:
 +
 
 +
# /usr/local/etc/rc.d/geomWatch start
 +
 
 +
You can also test your SMTP configuration by running the following command:
 +
 
 +
# /usr/local/sbin/geomWatch -t
 +
 
 +
cat /usr/local/etc/geomWatch.conf.
 +
zpool="array4"
 +
  interval="30" # seconds to sleep between checks
 +
 +
senderName="ZFS Watch" # name portion of "From" message header, optional
 +
#senderAddress="geomwatch@some.domain" # SMTP envelope sender and address portion of "From" 
 +
 +
smtpServer="localhost:25" # address and port of SMTP server
 +
smtpAuth="0" # 1 to enable SMTP authentication
  
 
===Lingid===
 
===Lingid===
714. rida: 932. rida:
  
 
*http://en.wikipedia.org/wiki/Nested_RAID_levels Raidi kombineerimiste näited
 
*http://en.wikipedia.org/wiki/Nested_RAID_levels Raidi kombineerimiste näited
 +
 +
* http://zfs-fuse.net/ ZFS linuxile üle fuse
 +
 +
* http://www.wizy.org/wiki/ZFS_on_FUSE ZFS ja Fuse õpetused
 +
 +
http://zfsonlinux.org/example-zvol.html zfs linuxil

Viimane redaktsioon: 10. veebruar 2014, kell 16:52

ZFS

ZFS (Zettabyte File System) on Sun'i teadlaste poolt välja töötatud failisüsteem, millel on järgmised iseloomulikud tunnused

  • praktiliselt piirita mahupiirangud (failisüsteemi suuruse, failide arvu, snapshottide arvu jms omaduste jaoks)
  • kokku on ühendatud failisüsteemi ning logical volume managementi omadused, mis teeb kasutamise mugavaks
  • ZFS on open-source failisüsteem (Common Development and Distribution License)
  • töötamise ajal saab failisüsteemi moodustavate seadmete arvu suurendada, aga eemaldada saab vaid teatud tingimustel
  • Failisüsteemi blokisuurus valitakse dünaamiliselt ja on jooksvalt muudetav.
  • Snapshotide ja failisüsteemi kloonide tegemise võimalus
  • Kõikide plokkidega koos salvestatakse 256 bitine kontrollsumma. Kui kettalt loetud info ja kontrollsumma ei lange kokku taastatakse riknenud andmed automaatselt paarsusinfo abil.
  • Võimalus kasutada pakitud failisüsteeme ja deduplikeerimist

ZFS versioonid ja neis lisandunud võimalused

VER  DESCRIPTION
---  --------------------------------------------------------
 1   Initial ZFS version
 2   Ditto blocks (replicated metadata)
 3   Hot spares and double parity RAID-Z
 4   zpool history
 5   Compression using the gzip algorithm
 6   bootfs pool property
 7   Separate intent log devices
 8   Delegated administration
 9   refquota and refreservation properties
 10  Cache devices
 11  Improved scrub performance
 12  Snapshot properties
 13  snapused property
 14  passthrough-x aclinherit
 15  user/group space accounting
 16  stmf property support
 17  Triple-parity RAID-Z
 18  Snapshot user holds
 19  Log device removal
 20  Compression using zle (zero-length encoding)
 21  Deduplication
 22  Received properties

Tabeli paremaks mõistmiseks info, et FreeBSD 8-STABLE/9-CURRENT peale on portud versioon 15 (versioon 13 on 8.0-RELEASE süsteemis). Täpsemat infot FreeBSD peal ZFS kasutamisest ja versioonidest leiab http://wiki.freebsd.org/ZFS

Sissejuhatus

Siin tekstis vaadeldud eelkõige ZFS failisüsteemi kasutamist operatsioonisüsteemil Solaris, kuid kuna FreeBSD peale on ZFS samuti täiel mahul porditud ning võimalik on seda üle Fuse kasutada ka Linuxis siis on 99% ulatuses toodud käsud rakendatavad ka neis süsteemides. Lõpus on ära toodud ka mõned FreeBSD ja Linuxi spetsiifilised kasutusjuhtumid.

FreeBSD Peamiseks erinevuseks võrreldes Solarisega on ,et FreeBSD's pole ZFS moodul vaikimisi laetud ning selleks tuleb lisada rc.conf faili

zfs_enable="YES"

Või tükkida käsk zfs mooduli jooksvalt laadimiseks

# kldload zfs

Kasutus

ZFS failisüsteemi kasutuselevõtmine toimub kahes etapis

  1. tuleb moodustada ZFS pool
  2. ZFS poolis tuleb moodustada ZFS failisüsteemid

Üldiselt nimetatakse pooli, failisüsteemi, snapshoti või klooni dataset'iks.

Pool

ZFS pooli tegemisel näidatakse, milliseid füüsilisi seadmed ja millise redundantsusega kasutama asutakse. Kõige otsekohesem on kasutada kogu füüsilist seadet, aga võimalik on kasutada ka nn Solarise partitsioone, nt c4t0d0s6 või tavalisi faile failisüsteemist. Viimane võimalus on praktiliselt sobilik ehk vaid katsetamiseks ning ZFS omaduste tundmaõppimiseks.

Moodustame 100G suurusele kettaseadmele da0 (/dev/da0) ZFS failisüsteemi

# zpool create tank da0

Moodustatud pool'i omadusi saab vaadata käsuga

# zpool status

Pooli eemaldamine toimub käsuga

# zpool destroy tank

ZFS võimaldab lisaks failisüsteemi tekitamisele koostada ka erinevaid raid skeeme. Näiteks moodustame kahe Solaris operatsioonisüseemile nähtava kettaseadme c2t0d0 ja c3t0d0 baasil ZFS pool'i nimega tank, milles on füüsilised kettaid paigutatud peeglisse

# zpool create tank mirror c2t0d0 c3t0d0

Raid 5 skeemiga pooli moodustamiseks tuleb öelda

# zpool create tank raidz c6t8d0 c7t0d0 c7t5d0

Tegemist on Raid5 laadse süsteemiga kus paarsusinfo paigutatakse mööda kettaid. Kuid kasutusel on erinevad algoritmid mis pakuvad suuremat jõudlust kirjutamise puhul. Raidz üks kasulik omadus on iseparanduvus "self-healing". Kui bad-block on avastatud siis ZFS lisaks korrektsete andmete võtmisele üritab ka viga proovides asendada vigase info korrektsega. Ühe füüsilise ketta riknemise korral suudab ZFS omakorda aga paarsusinfo säilunud block-devicedele ümber jagada.

Raid 10 skeemiga pooli moodustamiseks

# zpool create srv mirror da1 da2 da3 mirror da4 da5 da6

Ning stripe ehk raid0 tekitamiseks

# zpool create tank c6t8d0 c7t0d0 c7t5d0

Pooli omadusi saab küsida öeldes

 # zpool get all tank
 NAME  PROPERTY     VALUE       SOURCE
 tank  size         244G        -
 tank  used         132G        -
 tank  available    113G        -
 tank  capacity     53%         -
 tank  altroot      -           default
 tank  health       ONLINE      -
 tank  guid         16227317280498583651  -
 tank  version      4           local
 tank  bootfs       -           default
 tank  delegation   on          default
 tank  autoreplace  off         default
 tank  cachefile    -           default
 tank  failmode     wait        default

Pooli juures on oluline tähele panna, et ta kasutab sisemiselt nn on-disk format'it. Võimalikud väärtused ZFS pool 15 versioonil on:

# zpool upgrade -v
This system is currently running ZFS pool version 15.

The following versions are supported:

VER  DESCRIPTION
---  --------------------------------------------------------
 1   Initial ZFS version
 2   Ditto blocks (replicated metadata)
 3   Hot spares and double parity RAID-Z
 4   zpool history
 5   Compression using the gzip algorithm
 6   bootfs pool property
 7   Separate intent log devices
 8   Delegated administration
 9   refquota and refreservation properties
 10  Cache devices
 11  Improved scrub performance
 12  Snapshot properties
 13  snapused property
 14  passthrough-x aclinherit
 15  user/group space accounting
For more information on a particular version, including supported releases, see:

http://www.opensolaris.org/os/community/zfs/version/N

Where 'N' is the version number.

Pooli moodustamisel saab lisaks määrata ka on-disk format versiooni.

Pooli ümbernimetamiseks tuleb anda järgnevad käsud: Nimetame pooli katsetus ümber srv'ks

# zpool export katsetus
# zpool import katsetus srv

või

# zfs rename tank/katsetus tank/srv

Võimalik on ka lihtsalt testida milline tulevane raidiskeem välja nägema hakkab ilma seda reaalselt ketastele loomata, selleks tuleb create järele lisada võti -n

Failisüsteem

Moodustame poolis kaks failisüsteemi, /opt/csw ning /export/home (tundub, et neil kahel konkreetsel juhul on ZFS failisüsteemist palju abil, samas peab arusaadavalt vaatama, et süsteem, kus tegevusi läbi viia oleks selleks valmis)

# zfs create anum/opt-csw
# zfs create anum/export-home

Peale failisüseemide moodustamist tuleks neile näidata sobivad ühenduspunktid

# zfs set mountpoint=/opt/csw anum/opt-csw
# zfs set mountpoint=/export/home anum/export-home

Ühenduspunkti eemaldamiseks tuleb kasutada mountpoint=none väärtust.

Failisüsteemi külge ja lahti ühendamine toimub vastavalt

# zfs mount anum/opt-csw
# zfs umount anum/opt-csw

Failisüsteemide seisu saab vaadata käsuga

# zfs list

või ise näidates soovitud parameetrid

 # zfs list -o shareiscsi,origin,name,used,avail,refer,mountpoint,type

Failisüseemi eemaldamine toimub sarnase käsuga

bash# zfs destroy anum/opt-csw

Failisüsteemi omaduste küsimiseks tuleb öelda näiteks

 # zfs get all anum/iscsi
 NAME        PROPERTY       VALUE                  SOURCE
 anum/iscsi  type           filesystem             -
 anum/iscsi  creation       Tue Oct  9 15:38 2007  -
 anum/iscsi  used           36.5K                  -
 anum/iscsi  available      6.63G                  -
 anum/iscsi  referenced     36.5K                  -
 anum/iscsi  compressratio  1.00x                  -
 anum/iscsi  mounted        yes                    -
 anum/iscsi  quota          none                   default
 anum/iscsi  reservation    none                   default
 anum/iscsi  recordsize     128K                   default
 anum/iscsi  mountpoint     /anum/iscsi            default
 anum/iscsi  sharenfs       off                    default
 anum/iscsi  checksum       on                     default
 anum/iscsi  compression    off                    default
 anum/iscsi  atime          on                     default
 anum/iscsi  devices        on                     default
 anum/iscsi  exec           on                     default
 anum/iscsi  setuid         on                     default
 anum/iscsi  readonly       off                    default
 anum/iscsi  zoned          off                    default
 anum/iscsi  snapdir        hidden                 default
 anum/iscsi  aclmode        groupmask              default
 anum/iscsi  aclinherit     secure                 default
 anum/iscsi  canmount       on                     default
 anum/iscsi  shareiscsi     off                    default
 anum/iscsi  xattr          on                     default

Failisüsteemi loomisel vaikimisi ei ole määratletud failisüsteemi suurust. Kui sama zfs pooli sisse moodustada mitu failisüsteemi, siis ühe täitumine tähendab kõigi täitumist, selle vastu aitab failisüsteemile suuruse seadmine (ingl. k. quota) öeldes nt

 # zfs set quota=16G anum/export-home

Kui on soov lihtsalt mingitele kaustadele/kasutajatele panna quota pooli siseselt peale siis aitab lihtsalt käsk

# zfs create -o compression=on -o quota=905G poolinimi/mart
# zfs create -o compression=on -o quota=905G poolinimi/ants

Kasuks tuleb ka eelnevalt

# zfs set atime=off poolinimi

Zpoolis antud käskude vaatamiseks, alates selle loomisest

# zpool history
History for 'home':
2013-01-23.19:39:31 zpool create -f home raidz da1 da2 ada0 ada1 ada3
2013-01-24.01:37:42 zfs set primarycache=metadata home
2013-01-30.02:56:40 zpool scrub home
2013-02-10.16:35:02 zpool scrub home

Snapshoti kasutamine

Failisüsteemist snapshoti moodustamisel fikseeritakse ära ajahetkele vastav failisüsteemi olek ning seostatakse selle olekuga nimi. Snapshoti nime abil saab edaspidi selle snapshoti poole pöörduda. Peale failisüsteemist snapshoti moodustamist toimub vastava failisüsteemi enda kasutamine edasi muutusteta.

Snapshot võimaldab

  • ajahetkele vastavale failisüsteemi olekule tagasi pöörduda
  • ajahetkele vastavast failisüsteemist teha koopiat (nt backupi või failisüsteemi klooni tegemise mõttes)
  • vahetult read-only ligipääsu selle ajahetkele vastavale seisule (snapshot on iseenesest read-only)

Failisüsteemist snapshoti moodustamine toimub näiteks käsuga

bash# zfs snapshot anum/opt-csw@20070331

kusjuures @-märgi järel ei pruugi olla tingimata aega tähistav sõne. Snapshoti saab moodustada failisüsteemist, mille failid on avatud, kuid ilmselt saab kooskõlaliste andmetega snapshoti, kui failisüsteem ei ole parasjagu kasutusel (või on teada kuidas olukorda lahendada).

Kui failisüsteem oli snapshoti tegemise ajal ühendatud kataloogi /opt/csw alla, siis snapshotile vastavale failisüsteem asub kataloogis /opt/csw/.zfs/snapshot/20070331. Oluline on tähele panna, et shelli tab klahviga complete'imine ei toimi, '.zfs/' osa tuleb välja kirjutada.

Üheks snapshoti kasutamise eesmärgiks võiks olla tekitada olukord, et peale muudatuste tegemist kõnealusesse failisõsteemi saaks vajadusel hõlpsasti pöörduda tagasi eelmisele seisule. Tingimusel, et taastataval failisüsteemil ei ole avatud faile (st praktiliselt peab olema võimalik failisüsteemi lahti ühendada, mida küll zfs käsk automaatselt teeb), tuleb eelmisele seisule tagasipöördumiseks öelda

bash# zfs rollback anum/opt-csw@20070331

Teiseks snapshoti kasutamise eesmärgiks võiks olla ajahetkele vastava koopia moodustamine, mida saab talletada faili kujul ning millelt saab hiljem vajadusel ajahetkele vastavat failisüsteemi seisu taastada. Koopia tegemine toimub käsuga

bash# zfs send anum/export-home@20070331 | gzip -c > anum-export-home-20070331.gz

Taastamine toimuks käsuga

bash# gunzip -c anum-export-home-20070331.gz | zfs receive anum/export-home

Arvutis olevate snapshottide nimekirja näeb käsuga

bash# zfs list -t snapshot

Snapshoti eemaldamine toimub käsuga

bash# zfs destroy anum/opt-csw@20070331

Failisüsteemi kloon

Selleks, et snapshotile vastavasse failisüsteemi saaks kasutada traditsiooniliselt, tuleb temast moodustada failisüsteemi kloon, näiteks selliselt

# zfs clone anum/opt-csw@20070331 anum/opt-csw-20070331

Tulemusena tekib failisüsteemi anum/opt-csw-20070331 kasutada nagu tavalist ZFS failisüsteemi.

Lisaks on võimalus algne failisüsteem, st see, mille snapshotist kloon tekitati, asendada klooniga öeldes

 # zfs promote anum/opt-csw-20070331

Toimuvat võiks ette kujutada nii, et keskel on snapshot ja promotemise tulemusena vahetavad allikas ja kloon omavahel kohad, mis mille suhtes moodustatud on.

Kui üldiselt tuleb eemaldada asju järjekorras, 1. kloon, 2. snaphost, 3. allikas, siis promote'imise tulemusena saab ilma klooni eemaldamata allika eemaldada.

Selleks, et kloon kannaks allikaks olnud failisüsteemi nime, tuleb kasutada zfs rename käsku.

Failisüsteemi võrku jagamine

ZFS failisüsteemi saab jagada võrku nii nagu tavalist failisüsteemi NFS serveri abil. Solarise puhul on aga mugav seda teha lihtsalt seades ZFS failisüsteemi sharenfs omaduse väärtuseks 'on'. Näiteks selliselt

# zfs set sharenfs=on anum/export-home

Hõplsasti saab käsu share abil veenduda, kas failisüsteem tekkis NFS serveri poolt välja jagatud failisüsteemide nimekirja, näiteks

# share
- /export/home rw "kasutajate kodukataloogid"  
- /var/log/postgresql   ro   "pg logid" 

Selliselt välja jagatud failisüsteemi kasutamine toimub NFS kliendi poolt samuti kui tavalise NFS serveri poolt välja jagatud failisüsteemi kasutamine.

Alates versioonist Solaris 10 8/07 (u4) saab hõlpsasti jagada võrku iscsi targetina ZFS volume'it, selleks tuleb öelda

# zfs create -V 20g tank/iscsishare
# zfs set shareiscsi=on tank/iscsishare
# iscsitadm list target
Target: tank/iscsishare
    iSCSI Name: iqn.1986-03.com.sun:02:875dc199-fcc0-e9f3-d548-b18bd837c9d5
    Connections: 0

Tõsi, tundub, et ZFS volume'ile vastavale ressursile ei pääse praktiliselt muud moodi ligi kui üle iscsi.

Targeti eemaldamiseks tuleb öelda

# zfs set shareiscsi=off tank/iscsishare
# zfs destroy tank/iscsishare

NFS ja iSCSI protokolliga ZFS ressursi võrku jagamisel leiab aset Solarisele iseloomulikuna, et automaatselt käivitatakse sobivalt seadistatud NFS ja iSCSI targeti deemonid.

Andmete pakkimine

Lülitame sisse pakkimise

# zfs set compression=on zfstest

Info küsimiseks kui hästi info pakkimine toimib on olemas käsk

# zfs get compressratio
NAME     PROPERTY       VALUE    SOURCE
zfstest  compressratio  1.85x    -

Ja mõned testid

Esimesena sql dumbiga. Faili suurus väljaspool ZFSi pakkimata

1.1G    /home/jj/KOOLIELU/koolielu.sql

Fail ZFS sees

# du -h /zfstest/koolielu.sql
346M    /zfstest/koolielu.sql

Vaatame mitmekordne võit tekkis

# zfs get compressratio
NAME     PROPERTY       VALUE    SOURCE
zfstest  compressratio  3.14x    -

Selline võit on saavutatav muidugi vaid hõredate tekstifailidega. Näiteks DVD5 ISO faili puhul 4.4G iso läks vaid 4.3G suuruseks

FreeBSD ports haru (/usr/ports) oli zfs pakituna 253 mega, seejuures on ports originaalse suurusega 488 mega

Lisa2: OpenSolarise masina peal kunagi tehtud katsetused:

DD-ga 1 GiB faili kirjutamiskiirused ZFS-il:

vaikelayout (striped?): 44,5 MB/s

RAIDZ:
vanilla:
	45.5 MB/s
compress=gzip-1
	38,6 MB/s
compress=gzip-1, dedup=on
	37,2 MB/s
compress=on dedup=on
	45,1 MB/s

zpooli versiooni uuendamine

Solarise operatsioonisüsteemi uuendamisel võib juhtuda, et zfs tarkvara toetab uuemat zfs failisüsteemi versiooni kui kasutusel on. Sellest saab teada käsuga

# zpool status export
 pool: export
state: ONLINE
status: The pool is formatted using an older on-disk format.  The pool can
        still be used, but some features are unavailable.
action: Upgrade the pool using 'zpool upgrade'.  Once this is done, the
        pool will no longer be accessible on older software versions.

Nagu arvuti ütleb, versiooni uuendamine toimub selliselt

# zpool upgrade export
This system is currently running ZFS version 3.
Successfully upgraded 'export' from version 2 to version 3

Kõvaketta vahetamine poolis

Kõvaketta vahetamiseks poolis tuleb öelda

zpool replace -f anum c5t1d0 c5t2d0

mille tulemusena zpoolis anum asendatakse esimene seade teisega. Samal ajal zpooli olekut vaadates saab teada kui kaugel asendamine on

bash# zpool status
 pool: anum
state: ONLINE
status: One or more devices is currently being resilvered.  The pool will
        continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
 scrub: resilver in progress, 12.91% done, 0h11m to go
config:

       NAME           STATE     READ WRITE CKSUM
       anum           ONLINE       0     0     0
         mirror       ONLINE       0     0     0
           c0t4d0     ONLINE       0     0     0
           replacing  ONLINE       0     0     0
             c5t1d0   ONLINE       0     0     0
             c5t2d0   ONLINE       0     0     0

errors: No known data errors

Ketaste lisamine pooli ehk mitme erineva pooli kombineerimine üheks

Seadme lisamiseks tuleb öelda, kusjuures poolilt moodustatud failisüsteemid võivad olla samal ajal külge ühendatud

 # zpool add poolinimi seadmenimi

Seejuures peab arvestama, et eemaldada saab vaid redundantseid seadmeid.

Näiteks kui on olemas pool

  NAME          STATE     READ WRITE CKSUM
       tank          ONLINE       0     0     0
         mirror      ONLINE       0     0     0
           c0t0d0s4  ONLINE       0     0     0
           c1t0d0s4  ONLINE       0     0     0
         mirror      ONLINE       0     0     0
           c0t1d0s4  ONLINE       0     0     0
           c1t1d0s4  ONLINE       0     0     0

siis sinna ühe mirroripaari lisamiseks tuleb öelda

 # zpool add tank mirror c0t0d0s3 c1t0d0s3

ning tulemuseks on

  NAME          STATE     READ WRITE CKSUM
       tank          ONLINE       0     0     0
         mirror      ONLINE       0     0     0
           c0t0d0s4  ONLINE       0     0     0
           c1t0d0s4  ONLINE       0     0     0
         mirror      ONLINE       0     0     0
           c0t1d0s4  ONLINE       0     0     0
           c1t1d0s4  ONLINE       0     0     0
         mirror      ONLINE       0     0     0
           c0t0d0s3  ONLINE       0     0     0
           c1t0d0s3  ONLINE       0     0     0

Keerukam näide raid-z peal erienvate raiditüüpidega: Meil on neli ketast da0 da1 da2 da3 mis 250Gb suurused, neli ketast da4 da5 da6 da7 mis 300Gb suurused ning kolm ketasad10 ad4 ad6 mis 160G suurused

selleks, et me ei kaotaks ruumi, kui raid arvutatakse kõige väiksemate ketaste alusel, kuid saaksime nad üheks suureks pooliks kokku kombineerida

# zpool create usr1 raidz da0 da1 da2 da3
# zpool add usr1 raidz da4 da5 da6 da7

Välja näeb tulemus selline

# zpool status
  pool: usr1
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        usr1        ONLINE       0     0     0
          raidz1    ONLINE       0     0     0
            da0     ONLINE       0     0     0
            da1     ONLINE       0     0     0
            da2     ONLINE       0     0     0
            da3     ONLINE       0     0     0
          raidz1    ONLINE       0     0     0
            da4     ONLINE       0     0     0
            da5     ONLINE       0     0     0
            da6     ONLINE       0     0     0
            da7     ONLINE       0     0     0

Soovides lisada veel 3 ketast 160g suurused tuleb anda käsk

# zpool add usr1 raidz ad10 ad4 ad6
invalid vdev specification
use '-f' to override the following errors:
mismatched replication level: pool uses 4-way raidz and new vdev uses 3-way raidz 

Tegemist on hoiatusega ja seda võib siiski ignoreerida. Peamine mis kannatab on raidi kiiruste pool, see võib pisut langeda.

# zpool status
  pool: home
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        home        ONLINE       0     0     0
          raidz1    ONLINE       0     0     0
            da0     ONLINE       0     0     0
            da1     ONLINE       0     0     0
            da2     ONLINE       0     0     0
            da3     ONLINE       0     0     0
          raidz1    ONLINE       0     0     0
            da4     ONLINE       0     0     0
            da5     ONLINE       0     0     0
            da6     ONLINE       0     0     0
            da7     ONLINE       0     0     0
          raidz1    ONLINE       0     0     0
            ad4     ONLINE       0     0     0
            ad6     ONLINE       0     0     0
            ad10    ONLINE       0     0     0

errors: No known data errors

Pooli import ja eksport

Kui arvutile lisada kõvakettad, mis omavahel moodustavad pooli, siis saab seda tutvustada operatsioonisüsteemile käsuga

test-baas:~# zpool import
  pool: teine_anum
    id: 3176370179574190780
 state: ONLINE
status: The pool is formatted using an older on-disk version.
action: The pool can be imported using its name or numeric identifier, though
        some features will not be available without an explicit 'zpool upgrade'.
        The pool may be active on on another system, but can be imported using
        the '-f' flag.
config:
        teine_anum  ONLINE
          c7t0d0s3  ONLINE
          c6t8d0s3  ONLINE

Ning kui sobib, siis teha kasutatavaks öeldes

# zpool import teine_anum

Kui imporditav pool arvab enda kohta nime, mis on juba kasutusel, siis tuleb öelda

# zpool import teine_anum uus_pooli_nimi

Kusjuures, kui sedasi külge ühendatava pooli sees on kirjeldatud failisüsteemid, mille külgeühenduspunkt ei ole töötavas operatsioonisüsteemis tühi, siis ei toimu külgeühendamist ja saab sarnase teate

# zpool import -f teine_anum          
cannot mount '/data': directory is not empty

Kui aga on plaanist pooli moodustavad kõvakettad süsteemist eemaldada, tuleb öelda

# zpool export anum

ZFS ja Deduplication

TODO

  • For every TB of pool data, you should expect 5 GB of dedup table data,

assuming an average block size of 64K.

  • This means you should plan for at least 20GB of system RAM per TB of

pool data, if you want to keep the dedup table in RAM, plus any extra memory for other metadata, plus an extra GB for the OS.

(see oli kokkuvõte, muidu on seal üsna pikk ja põhjalik analüüs) http://constantin.glez.de/blog/2011/07/zfs-dedupe-or-not-dedupe

ZFS kasutamine Solarises

Probleemid Solarises

Kui zfs mingil põhjusel nö eksib väga ära, siis võib arvuti bootimine olla vägagi raskendatud. Aitab bootida nullindasse milestone'i, sarnaselt

{0} ok boot /sbus@7,0/SUNW,fas@3,8800000/sd@2,0 -m milestone=none

sisestada juurkasutaja parool ning eemaldada fail

/etc/zfs/zpool.cache

Iseenesest jäävad zfs andmed selle liigutuse tulemusel hävitamata, kuid ilmselt on seal midagi suhteliselt katki ning nad vajavad oskuslikku lähenemist.

Kui pooli moodustamisel vastab süsteem, et

# zpool create tank c6t8d0 c7t0d0 c7t5d0
invalid vdev specification
use '-f' to override the following errors:
/dev/dsk/c6t8d0s0 contains a ufs filesystem.
/dev/dsk/c6t8d0s2 contains a ufs filesystem.
/dev/dsk/c6t8d0s3 is part of exported or potentially active ZFS pool kolmas_anum. Please see zpool(1M).

ning on teada, et võib neid asjaolusid mitte arvestad, siis sobib kasutada create järel võtit -f

bash# zpool create -f tank c6t8d0 c7t0d0 c7t5d0

Kasutamine Solarises CSW tarkvaraga majandamisel

CSW paketid paigaldatakse reeglina kataloogi /opt/csw kusjuures paketihaldusega seotud muudatused fikseeritakse kataloogis /var/sadm, st samas kohas koos nt SUNW pakettidega. Kui need kataloogid paigutada ZFS failisüsteemidele, siis on CSW tarkvara muudatuste tegemisel võimalus suhteliselt hõlpsasti kasutades sobivalt ZFS snapshotte neid muudatusi vajadusel tagasi võtta.

Lisaks, /export ja /usr/local kataloogide pidamine ZFS peal võib samuti anda süsteemi haldamisel juurde paindlikkust.

ZFS failisüsteemi kasutamine Solarise non-global tsoonis

ZFS failisüsteemi kasutamiseks Solarise non-global tsooni juures saab tsooniga seostada kas ZFS failisüsteemi enda või ZFS dataset'i. Viimasel juhul on tsooni administraatoril enam võimalusi vastava ZFS ressursiga tegeleda, nt saab ta moodustada failisüsteeme ja snapshotte tsooni sees.

Näiteks teeme nii, et ZFS failisüsteemi tank/data saab kasutada tsoonis 'tsooninimi' ning ta on seal kataloogi /data alt ligipääsetav

 bash# zfs set mountpoint=legacy tank/data
 bash# zonecfg -z tsooninimi
 ...
 zonecfg:tsoooninimi> add fs
 zonecfg:tsoooninimi:fs> set type=zfs
 zonecfg:tsoooninimi:fs> set special=tank/data
 zonecfg:tsoooninimi:fs> set dir=/data
 zonecfg:tsoooninimi:fs> end

Aga soovides delegeerida non-global tsoonile tank/data kui dataset'i tuleb öelda

 zonecfg:tsooninimi> add dataset
 zonecfg:tsooninimi:dataset> set name=tank/data
 zonecfg:tsooninimi:dataset> end

Tsooni delegeeritud failisüsteemidega ei saa globaalses tsoonis turvakaalutlustega ennem tegeleda, kui tsooni seadistustest on vastav dataset eemaldatud ning lisaks on ka eemaldatud zoned lipp

bash# zfs set zoned=off tank

kus tank on dataset'i nimi.

ZFSi ohutu katsetamine FreeBSD süsteemis

Soovides vaid zfs'i testida ning kasutada seejuures erinevaid img faile ,et mängida läbi mitmesuguseid raid jms kompressimise lahendusi tuleb toimetad sedasi

Loome testiks isofaili mille haagime külge zfs formaadis kettana

# dd if=/dev/zero of=zfs.img bs=1024k count=11024
5834+0 records in
5833+0 records out
6116343808 bytes transferred in 136.348605 secs (44858133 bytes/sec)

Kontrollime ISO suurust

# du -h zfs.img
5.7G    zfs.img

Haagime selle BSDle dev block seadmena külge

# mdconfig -f zfs.img
md5

Loome tekkinud md5 nimelise block seadme peale zfs pooli

# zpool create zfstest /dev/md5

Vaatame kas kõik läks viisakalt ning seade haagiti failisüseemile automaatselt külge

# df -h
Filesystem         Size    Used   Avail Capacity  Mounted on
/dev/ad0s1a        148G     59G     77G    43%    /
..
zfstest            5.6G      0B    5.6G     0%    /zfstest

Pakitud failisüsteemi ja quota probleem

ZFS failisüsteem läks üle quota ja pealse seda ei lubanud enam faile kustutada: Disk quota exceeded.

$ rm boxroom-0.6.3.zip
rm: boxroom-0.6.3.zip: Disc quota exceeded

Lahenduseks on kustutatav fail esmalt nullida: http://lists.freebsd.org/pipermail/freebsd-current/2008-January/082615.html

$ ls -larth boxroom-0.6.3.zip
-rw-r--r--  1 laas  wheel   344K Apr 19  2009 boxroom-0.6.3.zip
 
$ cat /dev/null > boxroom-0.6.3.zip
$ rm boxroom-0.6.3.zip

Niiviisi vabastatud 334 kilobaidist piisas, et sai faili enda eemaldada ning seejärel minna suuremate failide kallale

Probleem tekkis tõenäoliselt kuna tegu oli pakitud failisüsteemiga. Sellest tuleb järeldada, et ka kataloogikirjed on pakitud mitte vaid inodede sisu. Ehk mõne baidi muutmine suurendab kataloogi ja nullide kirjutamine teeb faili väiksemaks.

Edit: Tundub, et sama probleem tekib ka vahel mitte pakitud failisüsteemiga. Terve kaustapuu puhul oleks lahenduseks kõik failid tühjendada

# find /path/to/directory -type f -exec cat /dev/null > {} \;

Ja seejärel rm failiga eemaldada.

ZFS LInuxil üle ZFS-Fuse

Debiani puhul tuleb installida järgnevad sõltuvused

# apt-get install libaio-dev libattr1-dev libacl1-dev libz-dev libz-dev libfuse-dev libfuse2 scons libssl-dev
# apt-get install bzip2
# apt-get install make

ZFS-Fuse paketi installiks tuleb käivitada järgnevad käsud

Loome kausta kus kompileerida

# cd /usr/src/

Tõmbame algkoodi alla

# wget http://zfs-fuse.net/releases/0.6.9/zfs-fuse-0.6.9.tar.bz2

Pakime lahti

# bunzip2 -d zfs-fuse-0.6.9.tar.bz2
# tar -xf zfs-fuse-0.6.9.tar 

Siseneme kausta ja kompileerime scons käsuga

# cd zfs-fuse-0.6.9
# cd src
# scons

To install, run 'scons install' with appropriate privileges. It will install the binaries in /usr/local/sbin by default.

Jõudluse suurendamine ehk sendfile() funktsioon ja suured failid

Kui FTP ja Veebiserver peavad jagama ZFS pealt mahukaid faile siis võib tarkvarade puhul mis kasutavad vaikimisi Sendfile() funktsiooni failide edastamise jõudlus drastiliselt langeda. Sendfile on nimelt mõeldud peamiselt paljude väikeste failide serveerimiseks mitte aga suurte.

Seega ISO failide ja arhiivide liigutamise puhul tasub see kasutatavast tarkvarast välja lülitada.

Vsftp puhul piisab näiteks kui lisada vsftpd.conf faili rida

use_sendfile=NO

Veebiserveri Apache puhul saab seda seadistad isegi täpsemalt kaustade põhiselt:

<Directory "/teekond-failideni">
EnableSendfile Off
</Directory>

Zfsil võiks lasta mälusäästu huvides käsnata üksnes metadatat.

# zfs set primarycache=metadata tank/datab

Kiirustestid

Mõned subjektiivsed kiirusetestid, kus võrdleme ühesuguseid kombineeritud raidiskeemide jõudlust võrreldes tavalise lahendusega

Kaks nelja kettaga raid-z pooli ühes poolis

# zpool create t1 raidz da0 da1 da2 da3 raidz da4 da5 da6 da7 

dd test

# dd if=/dev/urandom of=/t1/1G bs=1024 count=1024
1073741824 bytes transferred in 19.908234 secs (53934559 bytes/sec)

Kaks nelja kettaga ja üks kolme kettaga raid-z pool ühes poolis

# create -f t2 raidz da0 da1 da2 da3 raidz da4 da5 da6 da7 raidz ad4 ad6 ad10

dd test

# dd if=/dev/urandom of=/t2/1G bs=1024k count=1024
1073741824 bytes transferred in 20.388560 secs (52663937 bytes/sec)

Üks raidz pool kolme kettaga

# zpool create -f t3 raidz ad4 ad6 ad10

dd test

# dd if=/dev/urandom of=/t3/1G bs=1024k count=1024
1073741824 bytes transferred in 24.006931 secs (44726326 bytes/sec)

Probleemide avastamine käsuga scrub

Probleem: üks ketas poolis tundub katki

Prooviks parandada scrub abil

 # zpool scrub srv
 # zpool status
   pool: srv
  state: ONLINE
 status: One or more devices could not be used because the label is missing or
         invalid.  Sufficient replicas exist for the pool to continue
         functioning in a degraded state.
 action: Replace the device using 'zpool replace'.
    see: http://www.sun.com/msg/ZFS-8000-4J
  scrub: scrub in progress for 0h0m, 0.00% done, 345h11m to go
 config:
 
         NAME        STATE     READ WRITE CKSUM
          srv         ONLINE       0     0     0
           raidz1    ONLINE       0     0     0
             ad10    UNAVAIL      0   467 7.64M  corrupted data
             ad8     ONLINE       0     0     0
             ad6     ONLINE       0     0     0
             ad12    ONLINE       0     0     0
             ad14    ONLINE       0     0     0 
 
errors: No known data errors

Anname scrubi soovitatud käsu

# zpool replace -f srv ad10

Mille peale algab asendamine

# zpool status
  pool: srv
 state: DEGRADED
 scrub: scrub in progress for 0h5m, 7.14% done, 1h6m to go
 config:
 
        NAME           STATE     READ WRITE CKSUM
        srv            DEGRADED     0     0     0
          raidz1       DEGRADED     0     0     0
           replacing   DEGRADED     0     0     0
             ad10/old  UNAVAIL      0     0     0  cannot open
             ad10      ONLINE       0     0     0  2.92G resilvered
            ad8        ONLINE       0     0     0
            ad10       ONLINE       0     0     0
            ad12       ONLINE       0     0     0
            ad14       ONLINE       0     0     0

errors: No known data errors

Tulemus..

# zpool status
  pool: home
 state: ONLINE
 scrub: resilver completed after 4h22m with 0 errors on Tue Jun 21 22:36:16 2011
config:
       NAME        STATE     READ WRITE CKSUM
         home      ONLINE       0     0     0
          raidz1   ONLINE       0     0     0
           ad10    ONLINE       0     0     0  571G resilvered
           ad8     ONLINE       0     0     0
           ad10    ONLINE       0     0     0
           ad12    ONLINE       0     0     0
           ad14    ONLINE       0     0     0

Kui vead on parandatud võib vanade vigade näitamise lõpetada selle ajaloo kustutamisega andes käsu

# zpool clear

Zfz-stats

FreeBSD puhul tarvis paigaldada port

  • /usr/ports/sysutils/zfs-stats

Kasutamine

# zfs-stats -E

------------------------------------------------------------------------
ZFS Subsystem Report				Tue Oct  4 10:36:07 2011
------------------------------------------------------------------------

ARC Efficiency:				9.12m 
	Cache Hit Ratio:		92.66%	8.45m
	Cache Miss Ratio:		7.34%	669.64k
	Actual Hit Ratio:		92.66%	8.45m

	Data Demand Efficiency:		42.92%	332.24k

	CACHE HITS BY CACHE LIST:
	  Most Recently Used:		37.01%	3.13m
	  Most Frequently Used:		62.99%	5.33m
	  Most Recently Used Ghost:	0.32%	26.84k
	  Most Frequently Used Ghost:	1.43%	121.08k

	CACHE HITS BY DATA TYPE:
	  Demand Data:			1.69%	142.60k
	  Prefetch Data:		0.00%	0
	  Demand Metadata:		98.31%	8.31m
	  Prefetch Metadata:		0.00%	0

	CACHE MISSES BY DATA TYPE:
	  Demand Data:			28.32%	189.63k
	  Prefetch Data:		0.00%	0
	  Demand Metadata:		71.68%	480.00k
	  Prefetch Metadata:		0.00%	5

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

GeomWatch

Before starting geomWatch, you should edit its configuration file, /usr/local/etc/geomWatch.conf. Then, add the following line to /etc/rc.conf:

geomwatch_enable="YES"

Finally, to start it, run the following command:

# /usr/local/etc/rc.d/geomWatch start

You can also test your SMTP configuration by running the following command:

# /usr/local/sbin/geomWatch -t

cat /usr/local/etc/geomWatch.conf.

zpool="array4"
 interval="30"					# seconds to sleep between checks

senderName="ZFS Watch"				# name portion of "From" message header, optional
#senderAddress="geomwatch@some.domain"		# SMTP envelope sender and address portion of "From"  

smtpServer="localhost:25"			# address and port of SMTP server
smtpAuth="0"					# 1 to enable SMTP authentication

Lingid

http://zfsonlinux.org/example-zvol.html zfs linuxil