ZFS kwenye VPS: Jinsi ya kudhibiti matumizi ya RAM
ZFS inatoa usalama wa data na compression, lakini ARC hutumia RAM nyingi. Jifunze jinsi ya kurekebisha vfs.zfs_arc_max ili kuzuia mfumo wako kukosa kumbukumbu kwenye VPS ndogo.
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 hazina gharama hadi data ibadilike, replication kwa kutumia zfs send, na compression inayowezeshwa kwa kubadili 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 yenye nafasi arobaini za diski. Vipengele vinavyofaa katika mazingira haya ndivyo vinavyostahili muda wako. Sehemu ambazo hazifai ni vyema kuzijua kabla ya kuunda pool.
OpenZFS kwenye FreeBSD na Linux: codebase moja, njia mbili za upakiaji
FreeBSD imekuwa na ZFS kwenye mfumo 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 kuwa 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 msimbo wa ZFS haujaunganishwa kwenye mainline Linux, na kila distribution huamua jinsi ya kuusambaza. FreeBSD haina mgogoro huo, kwa hivyo ZFS ipo tu hapo. Hiyo ndiyo hadithi nzima ya kiutendaji: tofauti moja ya upakiaji, na hakuna unachohitaji kuchukulia upande.
SSD Nodes haitoi images za FreeBSD, kwa hivyo kwenye seva iliyokodiwa hapa, nusu ya mwongozo huu inayohusu Linux ndiyo inayotumika. Ikiwa unaendesha FreeBSD mahali pengine, seva ya FreeBSD hupata ZFS bila hitaji la kujenga moduli yoyote au kuhofia kuharibika kwa kernel wakati wa upgrade.
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 versionzfs version huchapisha mistari miwili, toleo la userland na toleo la moduli ya kernel. Mstari mmoja tu unamaanisha 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-linuxUsakinishaji 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 startSasa pool. Angalia njia thabiti za vifaa (stable device paths) kwanza, kwa sababu /dev/vdb hutolewa kulingana na mpangilio wa utambuzi na inaweza kubadilika unapounganisha volume nyingine.
ls -l /dev/disk/by-id/
sudo zpool create -o ashift=12 tank /dev/disk/by-id/virtio-abc123def456
zpool status tankzpool 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 kuundwa.
Picha nyingi za seva zilizokodishwa huwaka (boot) kutoka kwenye root ya ext4, kwa hivyo ZFS hapa ni pool ya data kwenye volume ya pili badala ya kuwa mfumo wa faili wa root. Hakikisha kifaa ni kile unachodhani kabla ya kukijengea, kwa sababu kuthibitisha diski ya NVMe uliyopewa huchukua dakika moja na ujenzi upya huchukua mchana mzima.
Checksums hufanya marekebisho tu wakati pool ina redundancy
Kila block inayoandikwa na ZFS hubeba checksum, na kila usomaji huithibitisha. Ugunduzi hufanya kazi kila wakati. Marekebisho yanahitaji 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.tarFaili mbovu hutajwa. ext4 ingekuwa imerudisha bytes hizo bila maelezo, 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 mzima, 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/DISK2Kwenye VPS, hifadhi ya host kwa kawaida huwa na redundancy tayari, mara nyingi RAID 10 chini ya hypervisor. Hiyo inakulinda dhidi ya diski iliyokufa. Haikwambii wakati block imerudi ikiwa na makosa, 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 virtual na unataka uwezo fulani wa kurekebisha, 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 tankPool 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.timerDatasets ndiyo msingi wa sera
Dataset ni mfumo wa faili ndani ya pool, na kuunda dataset ni jambo rahisi, kwa hivyo tengeneza moja kwa kila kazi. Sifa hurithiwa kutoka kwenye pool, hii inamaanisha unaweka thamani chaguo-msingi mara moja na kuibadilisha pale inapohitajika. Kwenye FreeBSD, hivi ndivyo jails zinavyoendeshwa, dataset moja kwa kila jail ili jail moja iweze kuchukuliwa snapshot na kurejeshwa peke yake, jambo ambalo ni sehemu ya kinachotofautisha jail na Docker container.
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 tankCompression ni sifa ambayo watu huiacha kwa tahadhari, na hiyo ni kinyume na inavyopaswa kuwa. lz4 hutumia kiasi kidogo cha CPU na kupunguza idadi ya bytes zinazopaswa kufika kwenye diski, kwa hivyo kwenye data inayoweza kubanwa, hii mara nyingi hufanya usomaji na uandikaji kuwa wa haraka zaidi. zstd hubana data zaidi kwa kutumia CPU nyingi, jambo linalofaa kwa logs na archives 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.
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 mmoja mdogo kuwa usomaji wa rekodi nzima, mabadiliko, na uandikaji upya. Weka recordsize=16K kwenye dataset ya database kabla ya kupakia data, kwa sababu sifa hii hutumika kwa blocks zilizoandikwa upya pekee.
quota ndiyo njia unayotumia kuzuia dataset moja kujaza pool nzima. ZFS pool inayokaribia 100% ya ujazo huwa polepole na ni ngumu kuisafisha, kwa hivyo acha nafasi ya ziada kwa makusudi.
Snapshots hazigharimu chochote hadi data ibadilike
ZFS haiandiki juu ya block inayotumika. Inaandika block mpya na kusasisha pointers, jambo ambalo ndilo maana ya copy-on-write. Snapshot ni dokezo linalosema "hifadhi blocks ambazo dataset hii ilikuwa ikielekeza sasa hivi", kwa hivyo kuichukua ni hatua ya papo hapo na bila gharama.
sudo zfs snapshot tank/data@2026-08-11
zfs list -t snapshot -o name,used,refer -r tank/dataSafu 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 blocks 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.txtSaraka 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 isiyotarajiwa 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-11Inakataa 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 zpool destroy itachukua 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 imeelezwa 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"zfs send pool/dataset@snap1 | ssh user@remote-host zfs receive pool/dataset
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"zfs send -i pool/dataset@snap1 pool/dataset@snap2 | ssh user@remote-host zfs receive pool/dataset
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 ya kweli ya nje ya tovuti (off-site) kwa sharti moja. Upande wa mbali lazima uwe ZFS pool, kwa sababu object storage haiwezi kupokea mtiririko huu. Wakati target yako ni hifadhi inayooana na S3 au host ya kawaida ya Linux, tumia zana inayoweza kuwasiliana nayo, na restic backups from a VPS inashughulikia njia hiyo.
Kwa nini ZFS inatumia RAM nyingi? ARC
ARC (adaptive replacement cache) ni cache ya kusoma ya ZFS. Inakaa kwenye kumbukumbu ya kernel badala ya cache ya kawaida ya page ya Linux, 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 cha awali ni kikubwa kwa makusudi. OpenZFS 2.3 huweka ukubwa wa juu wa ARC kuwa thamani kubwa 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. Endesha zfs version ili kuona ni ipi inayotumika kwako.
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 ya awali 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 kilichobaki.
Soma namba halisi kutoka kwenye seva yako badala ya kuamini jedwali:
grep -E '^(size|c_max) ' /proc/spl/kstat/zfs/arcstats
arc_summary | head -n 20Safu ya tatu ni bytes. c_max ni kikomo kinachotumika sasa hivi, na size ni kile ambacho ARC inashikilia kwa sasa.
ARC inarudisha kumbukumbu. Kernel huashiria shinikizo na ARC hupungua. Tatizo ni muda, kwa sababu kupungua huko kunachochewa 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 kitu kile kile kuhusu mabadiliko ya mikono: kupunguza kikomo "hakutasababisha ARC kupungua bila shinikizo la kumbukumbu la kuchochea kupungua huko".
Jinsi ya kupunguza ARC kwenye VPS ndogo
Amua kwanza kiasi cha kumbukumbu kinachohitajika na mzigo wa kazi. Jumlisha mahitaji ya database na programu, 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.
Iweke ianze kufanya kazi, kwa bytes. Hii hapa ni 1 GiB.
echo 1073741824 | sudo tee /sys/module/zfs/parameters/zfs_arc_maxIfanye idumu baada ya reboot.
echo 'options zfs zfs_arc_max=1073741824' | sudo tee /etc/modprobe.d/zfs.conf
sudo update-initramfs -uHatua ya initramfs ni muhimu kwa sababu moduli inaweza kupakia kutoka kwenye initramfs kabla ya root filesystem kupandishwa (mount), 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 kuiondoa inamaanisha kuhariri faili na kufanya reboot. Na kupunguza namba hiyo hakupunguzi ARC kubwa papo hapo.
Kwenye FreeBSD kikomo 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 kiwango cha juu kwenye /boot/loader.conf.
Kuna sheria mbili zaidi 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 filesystem inayojaribu kuachia kumbukumbu kunaweza kusababisha deadlock kwenye mashine. Weka swap kwenye partition ya kawaida au faili ya swap 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 halisi ya backup ni bora zaidi. Chagua ext4 au XFS wakati:
- Instance ina 2 GB au 4 GB ya RAM na mzigo wa kazi unahitaji yote.
- 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 kitu huko kinachoweza kupokea
zfs sendstream. - Unatumia Debian na DKMS na huwezi kumudu upgrade ya kernel inayoweza kuacha module bila kujengwa.
- Unahitaji ZFS kwenye mfumo wa faili wa root na images za mtoa huduma zinatoa ext4 pekee.
Endelea kutumia ZFS wakati una data volume tofauti, RAM ya ziada (8 GB na kuendelea ni vyema), na mpango unaotumia snapshots na zfs send badala ya kuziwasha tu. Kwa kila kitu kingine, ext4 pamoja na restic inayoandika backups zilizosimbwa na kufanyiwa deduplication kwenye hifadhi ambayo seva haidhibiti, inashughulikia mahitaji mengi sawa bila kutumia kumbukumbu yoyote ya ziada.
Njia za hitilafu, 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 hiyo haiwezi kuingizwa (import) wakati wa boot. sudo zpool import huorodhesha kile 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 kwenye mfumo mwingine huripoti cannot import 'tank': pool may be in use from other system, na sudo zpool import -f tank hupuuza hitilafu hiyo 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, kwa kawaida kwa sababu headers zinazolingana hazijasakinishwa. dkms status huonyesha kile kilichojengwa kwa kila kernel. sudo apt install -y linux-headers-$(uname -r) kisha 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 inaihusisha, kwa hivyo du na df hayalingani. zfs list -o space -r tank hugawa 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 kimerudisha data mbovu. Kwenye mirror, hesabu hiyo ni onyo na block hiyo ilirekebishwa. Kwenye pool ya diski moja, faili hiyo imepotea, zpool status -v huionyesha, na unapaswa kurejesha faili hiyo kutoka kwenye backup isiyoishi ndani ya pool hiyo.
Seva ni polepole na inafanya swapping. Punguza ARC kama ilivyoelezwa hapo juu, kisha endesha arc_summary na uangalie uwiano wa hit (hit ratio). ARC ndogo isiyoweza kuhifadhi data inayotumika 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 kiasi kikubwa zaidi kati ya RAM kutoa 1 GiB au 5/8 ya RAM, kwa hivyo seva ya 4 GB inaweza kutoa 3 GiB kwa ajili ya cache. Weka zfs_arc_max kwa namba ambayo mzigo wako wa kazi unaweza kuimudu, kisha thibitisha kwa kusoma mstari wa c_max kutoka /proc/spl/kstat/zfs/arcstats.
Je, snapshot ya ZFS ni backup?
Hapana. Snapshot inakaa kwenye pool ileile ya data. Inanusurika wakati wa rm mbaya na upgrade iliyoshindwa, lakini inakufa pamoja na pool au instance hiyo. 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?
Kuna codebase moja tangu OpenZFS 2.0 ya Desemba 2020, amri ni zilezile, muundo wa diski ni uleule, na pool zinaweza kuhamishwa kati ya mifumo hiyo. Tofauti ipo kwenye ufungashaji. 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 kwenye VPS yenye diski moja?
Inatambua uharibifu na kutaja faili husika, lakini haiwezi kuirekebisha, kwa sababu ukarabati unahitaji nakala ya pili ya block hiyo. zfs set copies=2 kwenye dataset inakupa nakala hiyo ya pili kwa kutumia nafasi mara mbili, jambo linaloshughulikia block mbaya lakini si volume iliyopotea. Mirror kwenye volume mbili ndiyo suluhisho linaloweza kuponya kweli.
Je, compression inapunguza kasi ya seva?
lz4 kwa kawaida huifanya kuwa ya haraka zaidi. Blocks zilizobanwa zinamaanisha bytes chache za kuandikwa na kusomwa, 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 angalia zfs get compressratio tank baada ya data halisi kuandikwa.