SSD Nodes Learn 🎉 VPS kutoka $5.50/mwezi
Mwongozo Matt ConnorNa Matt Connor · Imeboreshwa 2026-08-13

ZFS kwenye VPS: Jinsi ya kudhibiti matumizi ya RAM

ZFS inatoa ulinzi wa data na compression, lakini ARC inaweza kutumia RAM yote kwenye VPS. Jifunze jinsi ya kurekebisha vfs.zfs_arc_max ili kuzuia mfumo kuishiwa kumbukumbu.

Faida za ZFS na gharama zake

ZFS kwenye FreeBSD na Linux sasa inatumia codebase moja, OpenZFS, kwa hivyo vipengele vyake ni sawa kwenye mifumo yote miwili. Seva inayotumia ZFS hupata data yenye checksum, snapshots ambazo hazigharimu chochote hadi data ibadilike, replication kwa kutumia zfs send, na compression inayowezeshwa kwa kubadilisha property moja tu. Gharama yake ni kumbukumbu (RAM): ARC (adaptive replacement cache) hutumia sehemu kubwa ya RAM kwa chaguo-msingi, na kwenye VPS (virtual private server) ya 2 GB au 4 GB, kumbukumbu hiyo ndiyo hasa ambayo programu yako ilihitaji.

Mwongozo huu unachunguza ZFS kutoka kwa mtazamo wa VPS iliyokodiwa yenye diski moja au mbili za mtandaoni, si kutoka kwa seva ya kuhifadhi data (storage box) yenye nafasi arobaini za diski. Vipengele vinavyofaa katika mazingira haya ndivyo vinavyostahili muda wako. Sehemu zisizofaa ni vyema kuzijua kabla ya kuunda pool.

OpenZFS kwenye FreeBSD na Linux: codebase moja, hadithi mbili za upakiaji

FreeBSD imekuwa na ZFS katika mfumo wake wa msingi tangu FreeBSD 7.0 mwaka 2008, mwanzoni ikiwa kama kipengele cha majaribio. Tangu OpenZFS 2.0 mnamo Desemba 2020, FreeBSD na Linux hujengwa kutoka kwenye source tree moja, kwa hivyo zfs na zpool hufanya kazi kwa njia sawa kwenye mifumo yote miwili, na pool iliyoundwa kwenye mfumo mmoja inaweza kuingizwa (import) kwenye mwingine.

Sababu ya ZFS kuwa kifurushi (package) kwenye Linux na sehemu ya mfumo wa msingi kwenye FreeBSD ni leseni. OpenZFS iko chini ya CDDL (common development and distribution license). Kernel ya Linux iko chini ya GPL (general public license) toleo la 2. Mradi wa kernel huchukulia leseni hizi mbili kuwa haziendani, kwa hivyo code ya ZFS haijaunganishwa kwenye mainline Linux, na kila distribution huamua jinsi ya kuitoa. FreeBSD haina mgogoro huo, kwa hivyo ZFS inapatikana hapo moja kwa moja. Hiyo ndiyo hadithi nzima ya kiutendaji: tofauti moja ya upakiaji, na hakuna unachohitaji kuchukulia msimamo.

SSD Nodes haitoi images za FreeBSD, kwa hivyo kwenye seva iliyokodishwa hapa, nusu ya mwongozo huu inayohusu Linux ndiyo inayotumika. Ikiwa unaendesha FreeBSD mahali pengine, seva ya FreeBSD hupata ZFS bila moduli ya kujenga (build) na bila hitaji la kuhimili uboreshaji wa kernel.

Sakinisha ZFS na uunde pool

Kwenye Ubuntu, moduli inakuja ndani ya vifurushi vya kernel, kwa hivyo unasakinisha amri pekee.

sudo apt update
sudo apt install -y zfsutils-linux
zfs version

zfs version huchapisha mistari miwili, toleo la userland na toleo la moduli ya kernel. Mstari mmoja pekee unamaanisha kuwa moduli haikupakia. Kifurushi kipo kwenye sehemu ya universe, ambayo picha za Ubuntu server huiwasha kwa chaguo-msingi; ikiwa apt haiwezi kuipata, endesha sudo add-apt-repository universe kwanza.

Kwenye Debian, vifurushi vipo kwenye sehemu ya contrib na moduli hujengwa kwenye mashine yako na DKMS (dynamic kernel module support). Ongeza contrib kwenye mstari wa Components: ndani ya /etc/apt/sources.list.d/debian.sources, endesha sudo apt update, kisha:

sudo apt install -y linux-headers-$(dpkg --print-architecture) zfs-dkms zfsutils-linux

Usakinishaji huu huunda moduli na kuchapisha Building initial module for 6.12.0-..., jambo linalochukua dakika chache. Kumbuka maana yake: kila uboreshaji wa kernel huijenga upya, na ujenzi ukifeli utaacha pool yako ikiwa haijaingizwa (unimported) hadi utakaporekebisha.

Kwenye FreeBSD hakuna kinachohitajika kusakinishwa. Washa huduma na uianze.

sysrc zfs_enable=YES
service zfs start

Sasa pool. Angalia njia thabiti za vifaa (stable device paths) kwanza, kwa sababu /dev/vdb hutolewa kulingana na mpangilio wa utambuzi na inaweza kubadilika unapoongeza diski nyingine.

ls -l /dev/disk/by-id/
sudo zpool create -o ashift=12 tank /dev/disk/by-id/virtio-abc123def456
zpool status tank

zpool status inapaswa kuchapisha state: ONLINE huku kifaa chako kikiwa kimeorodheshwa chini ya tank. ashift=12 hurekebisha block ndogo zaidi ya pool kuwa 4 KiB, ambayo inalingana na SSD za sasa na haiwezi kubadilishwa baada ya uundaji.

Picha nyingi za seva za kukodi huwaka (boot) kutoka kwenye root ya ext4, kwa hivyo ZFS hapa ni pool ya data kwenye diski ya pili badala ya kuwa mfumo wa faili wa root. Hakikisha kifaa ni kile unachodhani kabla ya kukijengea, kwa sababu kuhakiki diski ya NVMe uliyopewa huchukua dakika moja na ujenzi upya huchukua mchana mzima.

Checksums hufanya ukarabati tu wakati pool ina redundancy

Kila block inayoandikwa na ZFS hubeba checksum, na kila usomaji huithibitisha. Ugunduzi hufanya kazi kila wakati. Ukarabati unahitaji nakala ya pili.

Kwenye pool ya diski moja, ZFS hukuambia ukweli na kuishia hapo. zpool status -v huripoti hivi:

status: One or more devices has experienced an error resulting in data
        corruption.
action: Restore the file in question if possible.  Otherwise restore the
        entire pool from backup.
errors: Permanent errors have been detected in the following files:

        /tank/data/archive.tar

Faili mbovu hutajwa. ext4 ingerejesha bytes hizo bila maoni yoyote, kwa hivyo hii tayari ina thamani. ZFS bado haiwezi kuirekebisha, kwa sababu hakuna nakala ya pili kwenye pool ya kuirekebishia.

Kwenye mirror, usomaji uleule hutolewa kutoka upande mzuri, block mbovu huandikwa upya, na tukio hilo huonekana kwenye safu ya CKSUM ya zpool status. Hiyo ni self-healing, na inahitaji vifaa viwili.

sudo zpool create -o ashift=12 tank mirror /dev/disk/by-id/DISK1 /dev/disk/by-id/DISK2

Kwenye VPS, hifadhi ya host kwa kawaida huwa na redundancy tayari, mara nyingi ni RAID 10 chini ya hypervisor. Hiyo inakulinda dhidi ya diski iliyokufa. Haikuambii wakati block iliporejea ikiwa mbovu, kwa sababu array haina njia ya kujua ni nakala ipi iliyo sahihi. ZFS inajua, kwa sababu inalinganisha data na checksum iliyoiandika yenyewe.

Ikiwa una diski moja ya mtandaoni na unataka uwezo fulani wa ukarabati, sudo zfs set copies=2 tank/important huhifadhi nakala mbili za kila block ya dataset hiyo kwenye diski hiyo hiyo. Inazidisha mara mbili nafasi inayotumiwa na dataset hiyo, inastahimili block mbovu, na haifanyi chochote wakati volume nzima inapopotea.

Scrub husoma kila kitu kwenye pool na kukithibitisha.

sudo zpool scrub tank
zpool status tank

Pool yenye afya huishia na mstari kama scan: scrub repaired 0B in 00:04:11 with 0 errors. Iweke kwenye ratiba; mara moja kwa mwezi inatosha kwa pool ndogo.

systemctl list-unit-files 'zfs-scrub*'
sudo systemctl enable --now zfs-scrub-monthly@tank.timer

Datasets ndiyo kitengo cha sera

Dataset ni mfumo wa faili ndani ya pool, na kuunda moja ni jambo rahisi, kwa hivyo tengeneza dataset moja kwa kila kazi. Sifa hurithiwa kutoka kwenye pool, kumaanisha unaweka thamani chaguo-msingi mara moja na kuibadilisha pale inapohitajika.

sudo zfs create tank/data
sudo zfs create tank/pg
sudo zfs set compression=lz4 tank
sudo zfs set atime=off tank
sudo zfs set quota=20G tank/data
sudo zfs set recordsize=16K tank/pg
zfs get -r compression,compressratio,quota tank

Compression ni sifa ambayo watu huiacha kwa tahadhari, na hilo ni kosa. lz4 hutumia kiasi kidogo cha CPU na hupunguza idadi ya bytes zinazopaswa kufika kwenye disk, kwa hivyo kwenye data inayoweza kubanwa, kwa kawaida hufanya usomaji na uandikaji kuwa wa haraka zaidi. zstd hubana zaidi kwa kutumia CPU nyingi zaidi, jambo linalofaa kwa logi na kumbukumbu ambazo husomi mara kwa mara. Angalia kile unachopata kweli kwa kutumia zfs get compressratio tank, na kumbuka kuwa uwiano huhesabu data iliyoandikwa baada ya sifa hiyo kuwekwa pekee.

recordsize ni block kubwa zaidi ambayo dataset huandika, 128K ikiwa ni chaguo-msingi. Database inayoandika kurasa za 8 KiB kwenye rekodi za 128 KiB hugeuza uandikaji mdogo mmoja kuwa usomaji wa rekodi nzima, mabadiliko, na uandikaji upya. Weka recordsize=16K kwenye dataset ya database kabla ya kupakia data, kwa sababu sifa hiyo hutumika kwa blocks zilizoandikwa upya pekee.

quota ni njia unayotumia kuzuia dataset moja kujaza pool nzima. ZFS pool inayokaribia 100% ya ujazo huwa polepole na ni ngumu kusafisha, kwa hivyo acha nafasi ya ziada kwa makusudi.

Snapshots hazigharimu chochote hadi data ibadilike

ZFS haiandiki kamwe juu ya block iliyo hai. Inaandika block mpya na kusasisha viashiria (pointers), jambo ambalo ndilo maana ya copy-on-write. Snapshot ni dokezo linalosema "hifadhi block ambazo dataset hii ilikuwa ikizielekeza sasa hivi", kwa hivyo kuichukua ni jambo la papo hapo na bila gharama.

sudo zfs snapshot tank/data@2026-08-11
zfs list -t snapshot -o name,used,refer -r tank/data

Safu ya USED kwa ajili ya snapshot ni nafasi inayoshikiliwa na snapshot hiyo pekee. Huanza karibu na sifuri na kukua kadiri unavyobadilisha au kufuta data, kwa sababu block za zamani haziwezi tena kuachiliwa.

Kurejesha faili hakuhitaji hatua yoyote ya restore.

ls /tank/data/.zfs/snapshot/
cp /tank/data/.zfs/snapshot/2026-08-11/notes.txt /tank/data/notes.txt

Saraka ya .zfs imefichwa hata kutoka kwa ls -a hadi utakapokimbiza sudo zfs set snapdir=visible tank/data. Chukua snapshot kabla hujaihitaji, kwa sababu bila hiyo, rm -rf isiyo sahihi itakuingiza kwenye njia ya kurejesha data ya ext4, ambayo huanza kwa ku-unmount diski na hali huwa mbaya zaidi kuanzia hapo.

Rollback hutupa kila kitu kilichoandikwa tangu snapshot ichukuliwe.

sudo zfs rollback tank/data@2026-08-11

Inakataa pale snapshots mpya zaidi zinapokuwepo, na -r huharibu snapshots hizo mpya ili kuendelea. Soma jina la dataset mara mbili kabla ya kubonyeza enter.

Snapshot si backup. Inaishi kwenye pool ileile, kwenye volume ileile, kwenye seva ileile. Volume iliyofeli au moja iliyo zpool destroy huchukua snapshots pamoja na data. Snapshots hukulinda dhidi ya rm yako mwenyewe na dhidi ya upgrade mbaya, jambo linaloshughulikia matukio mengi ya kweli, lakini hazikulindi dhidi ya chochote kinachotokea kwenye pool yenyewe. Hoja kamili imetolewa hapa: kwa nini VPS snapshot si backup.

Kutuma na kupokea: replication kwa amri moja

zfs send hubadilisha snapshot kuwa mtiririko wa baiti (byte stream) kwenye standard output, na zfs receive hubadilisha mtiririko huo kurudi kuwa dataset. Nakala ya kwanza ni full send.

sudo zfs snapshot tank/data@daily-2026-08-11
sudo zfs send tank/data@daily-2026-08-11 | ssh backup.example.com "sudo zfs recv -F backup/data"

Baada ya hapo, tuma tu kile kilichobadilika kati ya snapshots mbili.

sudo zfs snapshot tank/data@daily-2026-08-12
sudo zfs send -i tank/data@daily-2026-08-11 tank/data@daily-2026-08-12 | ssh backup.example.com "sudo zfs recv backup/data"

Upande unaopokea lazima uwe na snapshot unayotuma kutoka kwayo. Ikiwa hauna, upokeaji husimama na cannot receive incremental stream: most recent snapshot of backup/data does not match incremental source, kwa sababu ZFS haina msingi wa kutumia ili kuweka tofauti hizo. Tuma kutoka snapshot ambayo pande zote mbili zinayo, au anza upya na full send.

Toa haki kwenye target badala ya kutumia root ya mbali: sudo zfs allow -u backupuser create,mount,receive backup/data.

Hii ni backup halisi ya nje ya tovuti (off-site) kwa sharti moja. Upande wa mbali lazima uwe ZFS pool, kwa sababu object storage haiwezi kupokea mtiririko. Wakati target yako ni storage inayooana na S3 au host ya kawaida ya Linux, tumia zana inayoweza kuwasiliana nayo, na restic backups kutoka kwa VPS inashughulikia njia hiyo.

Kwa nini ZFS hutumia RAM nyingi? ARC

ARC (adaptive replacement cache) ni cache ya kusoma ya ZFS. Inakaa kwenye kumbukumbu ya kernel badala ya Linux page cache ya kawaida, kwa hivyo free -h haionyeshi kama buff/cache. Inaonekana kama kumbukumbu inayotumika. Seva ya ZFS inayoonekana imejaa mara nyingi huwa na cache iliyochangamka, na hiyo ndiyo sababu ya ripoti nyingi za "ZFS imekula RAM yangu".

Kikomo chaguomsingi ni kikubwa kwa makusudi. OpenZFS 2.3 huweka ukubwa wa juu wa ARC kuwa thamani kubwa zaidi kati ya RAM kutoa 1 GiB au 5/8 ya RAM. OpenZFS 2.2 na matoleo ya awali yalitumia nusu ya RAM kwenye Linux, wakati FreeBSD ilikuwa tayari inatumia kanuni hiyo mpya. Tekeleza zfs version ili kuona ni ipi inayotumika kwako.

ChartDefault maximum ARC size by instance RAM, from the OpenZFS default rule (GiB)
The data behind this chart
[
  {
    "label": "2 GB VPS",
    "openzfs_2_2_linux_gib": 1,
    "openzfs_2_3_gib": 1.25
  },
  {
    "label": "4 GB VPS",
    "openzfs_2_2_linux_gib": 2,
    "openzfs_2_3_gib": 3
  },
  {
    "label": "8 GB VPS",
    "openzfs_2_2_linux_gib": 4,
    "openzfs_2_3_gib": 7
  },
  {
    "label": "16 GB VPS",
    "openzfs_2_2_linux_gib": 8,
    "openzfs_2_3_gib": 15
  }
]

Takwimu hizo ni kanuni chaguomsingi iliyoandikwa kwa ukubwa wa kawaida wa instance, si vipimo kutoka kwa seva inayofanya kazi. Kwenye instance ya 4 GB, kanuni ya 2.3 inaruhusu ARC ya 3 GiB. Seva hiyo hiyo kwenye 2.2 huishia kwenye 2 GiB. Instance ya 2 GB chini ya kanuni ya 2.3 bado inaruhusu 1.25 GiB. Programu yako hupata kile kinachobaki.

Soma namba halisi kutoka kwa seva yako mwenyewe badala ya kuamini jedwali:

grep -E '^(size|c_max) ' /proc/spl/kstat/zfs/arcstats
arc_summary | head -n 20

Safu ya tatu ni baiti. c_max ni kikomo kinachotumika sasa hivi, na size ni kile ambacho ARC inashikilia kwa sasa.

ARC hurejesha kumbukumbu. Kernel huashiria shinikizo na ARC hupungua. Tatizo ni muda, kwa sababu kupungua huko husukumwa na shinikizo hilo, kwa hivyo mchakato unaoomba mamia kadhaa ya MiB kwa wakati mmoja unaweza kukutana na OOM (out of memory) killer wakati ARC bado inajiondoa. Kwenye seva ya 2 GB inayoendesha database na web server, hilo si tukio adimu. Mwongozo wa OpenZFS unasema jambo lilo hilo kuhusu mabadiliko ya mikono: kupunguza kikomo "hakutasababisha ARC kupungua bila shinikizo la kumbukumbu la kuchochea kupungua huko".

Jinsi ya kuwekea kikomo ARC kwenye VPS ndogo

Amua kwanza kiasi cha kumbukumbu kinachohitajika na mzigo wa kazi (workload). Jumlisha kile ambacho database na programu vinahitaji, acha nafasi kwa ajili ya mfumo wa uendeshaji, kisha upe ARC kiasi kinachobaki. Kwenye instance ya 4 GB inayoendesha Postgres na programu moja ya wavuti, 512 MiB hadi 1 GiB ya ARC ni kianzio kinachofaa.

Kiweke kianze kufanya kazi, kwa bytes. Hii hapa ni 1 GiB.

echo 1073741824 | sudo tee /sys/module/zfs/parameters/zfs_arc_max

Fanya usanidi huu udumu baada ya reboot.

echo 'options zfs zfs_arc_max=1073741824' | sudo tee /etc/modprobe.d/zfs.conf
sudo update-initramfs -u

Hatua ya initramfs ni muhimu kwa sababu moduli inaweza kupakia kutoka kwenye initramfs kabla ya root filesystem kupandishwa (mounted), jambo ambalo linamaanisha haitasoma faili uliyoiandika. Baada ya reboot, thibitisha kwa kutumia mstari wa c_max kutoka arcstats.

Kuna tahadhari mbili kutoka kwenye mwongozo wenyewe. Huwezi kurudisha thamani hiyo kuwa 0 wakati mfumo unafanya kazi, kwa hivyo kuondoa usanidi huu kunahitaji kuhariri faili na kufanya reboot. Pia, kupunguza namba hiyo hakupunguzi ukubwa wa ARC iliyopo kwa wakati huo.

Kwenye FreeBSD, kikomo hicho hicho ni sysctl chini ya vfs.zfs.arc. Endesha sysctl vfs.zfs.arc ili kuona thamani za sasa na jina kamili linalotumiwa na toleo lako, kisha andika thamani ya juu zaidi kwenye /boot/loader.conf.

Kuna sheria nyingine mbili za kumbukumbu kwa seva ndogo. Acha deduplication ikiwa imezimwa, kwa sababu jedwali la dedup hukaa kwenye kumbukumbu na kanuni inayojulikana sana ni 1 hadi 3 GB ya RAM kwa kila TB ya data ya kipekee. Na usiweke swap kwenye zvol (kifaa cha block kilichotengwa kutoka kwenye pool), kwa sababu kufanya swap kupitia mfumo wa faili unaojaribu kuachia kumbukumbu kunaweza kusababisha deadlock kwenye mashine. Weka swap kwenye partition ya kawaida au faili ya swap iliyo nje ya pool.

Wakati ext4 au XFS pamoja na restic ni suluhisho bora

ZFS inafaa zaidi kwenye seva yenye kumbukumbu ya ziada na diski ya pili. Nje ya hapo, mfumo wa faili wa kawaida pamoja na zana madhubuti ya backup ni bora zaidi. Chagua ext4 au XFS wakati:

  • Instance ina 2 GB au 4 GB ya RAM na mzigo wa kazi unahitaji kumbukumbu yote hiyo.
  • Kuna diski moja ya virtual na hakuna nakala ya pili, kwa hivyo ZFS inakupa uwezo wa kugundua hitilafu bila uwezo wa kuzirekebisha.
  • Lengo lako la backup ni object storage au host ya kawaida ya Linux, kwa hivyo hakuna sehemu inayoweza kupokea stream ya zfs send.
  • Unatumia Debian na DKMS na huwezi kumudu upgrade ya kernel inayoweza kuacha moduli ikiwa haijajengwa.
  • Unahitaji ZFS kwenye mfumo wa faili wa root na images za mtoa huduma wako zinatoa ext4 pekee.

Endelea kutumia ZFS wakati una diski tofauti ya data, RAM ya ziada (8 GB na kuendelea ni vyema), na mpango unaotumia snapshots na zfs send badala ya kuziwasha tu. Kwa mambo mengine yote, ext4 pamoja na restic inayohifadhi backups zilizosimbwa na kuondolewa nakala rudufu (deduplicated) kwenye hifadhi ambayo seva haidhibiti, inatoa ulinzi sawa bila kutumia kumbukumbu nyingi.

Njia za kufeli, pamoja na ujumbe utakaouona

Pool imepotea baada ya reboot. zpool status huchapisha no pools available. Huduma ya import husoma /etc/zfs/zpool.cache, kwa hivyo pool isiyokuwepo kwenye faili hilo haiwezi kuingizwa (import) wakati wa boot. sudo zpool import huorodhesha kinachoweza kuingizwa, sudo zpool import tank huirejesha, na sudo zpool set cachefile=/etc/zfs/zpool.cache tank huifanya idumu. Pool ambayo haikutolewa (export) kwa usahihi kutoka kwa mfumo mwingine huripoti cannot import 'tank': pool may be in use from other system, na sudo zpool import -f tank hupuuza kizuizi hicho pindi unapohakikisha kuwa hakuna seva nyingine inayotumia pool hiyo.

modprobe: FATAL: Module zfs not found in directory /lib/modules/6.12.0-... kwenye Debian baada ya kuboresha kernel. DKMS haikujenga moduli kwa ajili ya kernel mpya, mara nyingi kwa sababu header zinazohitajika hazijasakinishwa. dkms status huonyesha kile kilichojengwa kwa kila kernel. sudo apt install -y linux-headers-$(uname -r) ikifuatiwa na sudo dkms autoinstall huijenga upya, na sudo zpool import tank huirejesha pool.

Pool imejaa lakini umefuta faili. Data iliyofutwa hubaki kwenye diski ikiwa snapshot bado inaitumia, kwa hivyo du na df havitalingana. zfs list -o space -r tank hugawanya matumizi katika USEDDS na USEDSNAP, na USEDSNAP kubwa ndiyo sababu ya tatizo. Futa snapshot za zamani kwa kutumia sudo zfs destroy tank/data@2026-06-01 na nafasi itarejea.

Hesabu za CKSUM zinapanda katika zpool status. Kitu kilicho chini ya ZFS kimerejesha data mbovu. Kwenye mirror, hesabu hii ni onyo na block husika ilirekebishwa. Kwenye pool ya diski moja, faili limepotea, zpool status -v hulitaja, na unapaswa kurejesha faili hilo kutoka kwenye backup ambayo haimo kwenye pool hii.

Seva ni polepole na inafanya swapping. Punguza ukubwa wa ARC kama ilivyoelezwa hapo juu, kisha endesha arc_summary na uangalie uwiano wa hit (hit ratio). ARC ndogo isiyoweza kuhifadhi data inayotumika mara kwa mara inamaanisha kila usomaji huenda kwenye diski, hali ambayo filesystem ya kawaida inayotumia page cache ingekufaa zaidi.

FAQ

ZFS inahitaji RAM kiasi gani kwenye VPS?

ZFS inaweza kufanya kazi kwenye instance ya 2 GB. Swali la msingi ni kiasi gani kinabaki kwa ajili ya programu yako. Bila marekebisho yoyote, OpenZFS 2.3 inaruhusu ARC kukua hadi kufikia thamani kubwa zaidi kati ya RAM kutoa 1 GiB na 5/8 ya RAM, kwa hivyo seva ya 4 GB inaweza kutoa 3 GiB kwa ajili ya cache. Weka zfs_arc_max kwenye namba ambayo mzigo wako wa kazi unaweza kuimudu, kisha thibitisha kwa kusoma mstari wa c_max kutoka /proc/spl/kstat/zfs/arcstats.

Je, ZFS snapshot ni backup?

Hapana. Snapshot inakaa kwenye pool ileile ya data. Inanusurika wakati wa rm mbaya na upgrade iliyoshindwa, lakini inafutika ikitokea pool au instance nzima imepotea. Igeuze kuwa backup kwa kuituma kwenye mashine nyingine kwa kutumia zfs send, au kwa kuendesha zana ya backup inayoandika kwenye hifadhi ambayo seva hii haidhibiti.

Je, ZFS inafanya kazi sawa kwenye FreeBSD na Linux?

Codebase ni ileile tangu OpenZFS 2.0 ya Desemba 2020, amri ni zilezile, muundo wa data kwenye diski ni uleule, na pools zinaweza kuhamishwa kati ya mifumo hiyo. Tofauti ipo kwenye ufungashaji (packaging). FreeBSD inakuja na ZFS ndani ya mfumo wake wa msingi. Kwenye Linux, kila distribution inaamua: Ubuntu inajenga module ndani ya vifurushi vyake vya kernel, wakati Debian inaijenga kwenye mashine yako kwa kutumia DKMS, kwa hivyo upgrade ya kernel inaweza kukuacha bila module hadi ujenzi upya utakapofanikiwa.

Je, ZFS inaweza kurekebisha uharibifu (corruption) kwenye VPS yenye diski moja?

Inagundua uharibifu na kutaja faili husika, lakini haiwezi kuirekebisha, kwa sababu urekebishaji unahitaji nakala ya pili ya block hiyo. zfs set copies=2 kwenye dataset inakupa nakala hiyo ya pili kwa kutumia nafasi mara mbili zaidi, jambo linaloshughulikia block mbaya lakini si kupotea kwa volume nzima. Mirror kati ya volumes mbili ndiyo suluhisho linaloweza kuponya uharibifu.

Je, compression inapunguza kasi ya seva?

lz4 kwa kawaida huongeza kasi. Blocks zilizobanwa humaanisha bytes chache za kuandika na kusoma, na gharama ya CPU kwa kila block ni ndogo ikilinganishwa na nafasi ya diski inayookolewa. Weka compression=lz4 kwenye mzizi wa pool ili kila dataset iirithi, kisha kagua zfs get compressratio tank baada ya data halisi kuandikwa.