ZFS pada FreeBSD dan Linux: Adakah RAM anda mencukupi?
ZFS menawarkan checksum, snapshot, dan pemampatan, namun ARC akan menggunakan banyak RAM. Ketahui cara mengurus memori pada VPS dengan had 2 GB atau 4 GB RAM anda.
Apa yang ZFS tawarkan, dan apa yang ia perlukan
ZFS pada FreeBSD dan Linux kini menggunakan satu kod asas, iaitu OpenZFS, jadi ciri-cirinya adalah sama pada kedua-dua sistem. Pelayan yang menjalankan ZFS mendapat data dengan checksum, snapshot yang tidak memakan ruang sehingga data berubah, replikasi dengan zfs send, dan pemampatan yang boleh diaktifkan dengan hanya menukar satu properti. Apa yang ia perlukan ialah memori: ARC (adaptive replacement cache) akan menuntut sebahagian besar RAM secara lalai, dan pada VPS (virtual private server) dengan 2 GB atau 4 GB RAM, memori tersebut adalah apa yang diperlukan oleh aplikasi anda.
Panduan ini menilai ZFS daripada perspektif VPS sewaan dengan satu atau dua cakera maya, bukan daripada pelayan storan dengan empat puluh ruang pemacu. Ciri-ciri yang masih relevan dalam situasi ini adalah yang berbaloi untuk anda pelajari. Bahagian yang tidak relevan pula perlu diketahui sebelum anda membina pool.
OpenZFS pada FreeBSD dan Linux: satu kod asas, dua kaedah pembungkusan
FreeBSD telah menyertakan ZFS dalam sistem asas sejak FreeBSD 7.0 pada tahun 2008, pada mulanya sebagai ciri eksperimen. Sejak OpenZFS 2.0 pada Disember 2020, FreeBSD dan Linux dibina daripada pepohon sumber yang sama, jadi zfs dan zpool berkelakuan sama pada kedua-duanya, dan pool yang dicipta pada satu sistem boleh diimport pada sistem yang lain.
Sebab ZFS menjadi pakej pada Linux dan sebahagian daripada sistem asas pada FreeBSD adalah disebabkan pelesenan. OpenZFS berada di bawah CDDL (common development and distribution license). Kernel Linux berada di bawah GPL (general public license) versi 2. Projek kernel menganggap kedua-duanya sebagai tidak serasi, jadi kod ZFS tidak digabungkan ke dalam Linux arus perdana, dan setiap pengedaran memutuskan cara untuk menyediakannya. FreeBSD tidak mempunyai konflik sedemikian, jadi ZFS tersedia secara terus. Itulah keseluruhan cerita praktikalnya: satu perbezaan pembungkusan, dan tiada apa yang perlu anda pertikaikan.
SSD Nodes tidak menawarkan imej FreeBSD, jadi pada pelayan yang disewa di sini, bahagian Linux dalam panduan ini adalah yang terpakai. Jika anda menjalankan FreeBSD di tempat lain, pelayan FreeBSD mendapat ZFS tanpa modul untuk dibina dan tanpa peningkatan kernel yang perlu dihadapi.
Memasang ZFS dan mencipta pool
Pada Ubuntu, modul tersebut disertakan di dalam pakej kernel, jadi anda hanya perlu memasang arahan-arahannya sahaja.
sudo apt update
sudo apt install -y zfsutils-linux
zfs versionzfs version mencetak dua baris, iaitu versi userland dan versi modul kernel. Jika hanya satu baris dipaparkan, bermakna modul tersebut tidak dimuatkan. Pakej ini berada dalam komponen universe, yang diaktifkan secara lalai pada imej Ubuntu server; jika apt tidak menemuinya, jalankan sudo add-apt-repository universe terlebih dahulu.
Pada Debian, pakej-pakej tersebut berada dalam komponen contrib dan modul tersebut dibina pada mesin anda melalui DKMS (dynamic kernel module support). Tambahkan contrib pada baris Components: di dalam /etc/apt/sources.list.d/debian.sources, jalankan sudo apt update, kemudian:
sudo apt install -y linux-headers-$(dpkg --print-architecture) zfs-dkms zfsutils-linuxProses pemasangan akan menyusun atur (compile) modul tersebut dan mencetak Building initial module for 6.12.0-..., yang mengambil masa beberapa minit. Ingat maksudnya: setiap kali naik taraf kernel, modul ini akan dibina semula, dan jika binaan gagal, pool anda tidak akan dapat diimport sehingga anda membaikinya.
Pada FreeBSD, tiada apa yang perlu dipasang. Aktifkan servis tersebut dan mulakannya.
sysrc zfs_enable=YES
service zfs startSekarang, sediakan pool. Lihat laluan peranti yang stabil terlebih dahulu, kerana /dev/vdb diberikan mengikut urutan pengesanan dan boleh berubah apabila anda menyambungkan volum lain.
ls -l /dev/disk/by-id/
sudo zpool create -o ashift=12 tank /dev/disk/by-id/virtio-abc123def456
zpool status tankzpool status sepatutnya mencetak state: ONLINE dengan peranti anda disenaraikan di bawah tank. ashift=12 menetapkan blok terkecil pool pada 4 KiB, yang sepadan dengan SSD semasa dan tidak boleh diubah selepas penciptaan.
Kebanyakan imej sewaan melakukan but daripada root ext4, jadi ZFS di sini merupakan pool data pada volum kedua dan bukannya sistem fail root. Pastikan peranti tersebut adalah peranti yang betul sebelum anda membina pool di atasnya, kerana mengesahkan cakera NVMe yang anda sewa hanya mengambil masa satu minit, manakala pembinaan semula mengambil masa sepanjang petang.
Checksum hanya membaiki apabila pool mempunyai redundansi
Setiap blok yang ditulis oleh ZFS membawa checksum, dan setiap bacaan akan disahkan. Pengesanan sentiasa berfungsi. Pembaikan memerlukan salinan kedua.
Pada pool cakera tunggal, ZFS memberitahu anda perkara sebenar dan berhenti di situ. zpool status -v melaporkannya seperti ini:
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.tarFail yang rosak akan dinamakan. ext4 akan mengembalikan bait tersebut tanpa sebarang ulasan, jadi ini sudah pun mempunyai nilai. ZFS masih tidak dapat membaikinya, kerana tiada salinan kedua dalam pool untuk dijadikan rujukan pembaikan.
Dengan mirror, bacaan yang sama akan dilayan daripada bahagian yang baik, blok yang rosak akan ditulis semula, dan peristiwa tersebut akan muncul dalam lajur CKSUM bagi zpool status. Itu adalah penyembuhan kendiri (self-healing), dan ia memerlukan dua peranti.
sudo zpool create -o ashift=12 tank mirror /dev/disk/by-id/DISK1 /dev/disk/by-id/DISK2Pada VPS, storan hos biasanya sudah mempunyai redundansi, sering kali RAID 10 di bawah hypervisor. Itu melindungi anda daripada pemacu yang mati. Ia tidak memberitahu anda apabila blok kembali dengan ralat, kerana tatasusunan tersebut tidak mempunyai cara untuk mengetahui salinan mana yang betul. ZFS mengetahuinya, kerana ia membandingkan data dengan checksum yang ditulisnya sendiri.
Jika anda mempunyai satu cakera maya dan mahukan keupayaan pembaikan, sudo zfs set copies=2 tank/important menyimpan dua salinan bagi setiap blok dataset tersebut pada cakera yang sama. Ia menggandakan ruang yang digunakan oleh dataset tersebut, ia mampu bertahan daripada blok yang rosak, dan ia tidak memberi kesan apabila keseluruhan volum hilang.
Scrub membaca segala-galanya dalam pool dan mengesahkannya.
sudo zpool scrub tank
zpool status tankPool yang sihat akan berakhir dengan baris seperti scan: scrub repaired 0B in 00:04:11 with 0 errors. Letakkan ia dalam jadual; bulanan sudah memadai untuk pool yang kecil.
systemctl list-unit-files 'zfs-scrub*'
sudo systemctl enable --now zfs-scrub-monthly@tank.timerDataset ialah unit dasar
Dataset ialah sistem fail di dalam pool, dan proses menciptanya adalah ringan, jadi cipta satu dataset bagi setiap tugasan. Sifat (properties) diwarisi daripada pool, yang bermaksud anda menetapkan nilai lalai sekali sahaja dan mengubahnya di tempat yang perlu. Pada FreeBSD, inilah cara jail biasanya dijalankan, iaitu satu dataset bagi setiap jail supaya jail tunggal boleh diambil snapshot dan dipulihkan secara berasingan, yang merupakan sebahagian daripada perbezaan antara jail dengan kontena Docker.
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 tankMampatan (compression) ialah sifat yang sering diabaikan oleh pengguna kerana berhati-hati, sedangkan tindakan itu adalah salah. lz4 menggunakan sedikit CPU dan mengurangkan jumlah bait yang perlu sampai ke cakera, jadi pada data yang boleh dimampatkan, ia biasanya menjadikan proses baca dan tulis lebih pantas. zstd memampatkan dengan lebih kuat menggunakan lebih banyak CPU, yang sesuai untuk log dan arkib yang jarang dibaca semula. Semak hasil sebenar dengan zfs get compressratio tank, dan ingat bahawa nisbah tersebut hanya mengira data yang ditulis selepas sifat itu ditetapkan.
recordsize ialah blok terbesar yang ditulis oleh dataset, dengan nilai lalai 128K. Pangkalan data yang menulis halaman 8 KiB ke dalam rekod 128 KiB akan menukarkan satu penulisan kecil kepada proses membaca keseluruhan rekod, membuat perubahan, dan menulis semula. Tetapkan recordsize=16K pada dataset pangkalan data sebelum anda memuatkan data, kerana sifat ini hanya terpakai pada blok yang baru ditulis.
quota ialah cara anda menghalang satu dataset daripada memenuhi keseluruhan pool. Pool ZFS yang hampir 100% penuh akan menjadi perlahan dan sukar untuk dibersihkan, jadi sengajakan ruang kosong (headroom) untuk kegunaan masa depan.
Snapshots tidak menelan kos sehingga data berubah
ZFS tidak pernah menulis ganti blok yang sedang digunakan. Ia menulis blok baharu dan mengemas kini penunjuk, itulah maksud copy-on-write. Snapshot ialah nota yang menyatakan "kekalkan blok yang ditunjuk oleh dataset ini sekarang", jadi proses mengambilnya adalah serta-merta dan percuma.
sudo zfs snapshot tank/data@2026-08-11
zfs list -t snapshot -o name,used,refer -r tank/dataLajur USED bagi snapshot ialah ruang yang dipegang oleh snapshot itu sahaja. Ia bermula hampir sifar dan meningkat apabila anda menukar atau memadam data, kerana blok lama tidak lagi boleh dilepaskan.
Mendapatkan semula fail tidak memerlukan langkah pemulihan (restore).
ls /tank/data/.zfs/snapshot/
cp /tank/data/.zfs/snapshot/2026-08-11/notes.txt /tank/data/notes.txtDirektori .zfs disembunyikan walaupun daripada ls -a sehingga anda menjalankan sudo zfs set snapdir=visible tank/data. Ambil snapshot sebelum anda memerlukannya, kerana tanpanya, rm -rf yang tersilap akan membawa anda ke laluan pemulihan ext4, yang bermula dengan menyahlekap (unmount) cakera dan keadaan menjadi lebih rumit selepas itu.
Rollback membuang segala-galanya yang ditulis sejak snapshot diambil.
sudo zfs rollback tank/data@2026-08-11Ia akan menolak jika terdapat snapshot yang lebih baharu, dan -r akan memusnahkan snapshot yang lebih baharu itu untuk meneruskan proses. Baca nama dataset dua kali sebelum anda menekan enter.
Snapshot bukanlah sandaran (backup). Ia berada dalam pool yang sama, pada volum yang sama, di pelayan yang sama. Volum yang gagal atau zpool destroy akan membawa snapshot tersebut bersama-sama dengan data. Snapshot melindungi anda daripada rm anda sendiri dan daripada naik taraf yang bermasalah, yang merangkumi banyak insiden sebenar, namun ia tidak melindungi anda daripada apa-apa yang berlaku kepada pool itu sendiri. Hujah penuh dinyatakan di sini: mengapa snapshot VPS bukanlah sandaran.
Menghantar dan menerima: replikasi dalam satu arahan
zfs send menukarkan snapshot kepada aliran bait pada output standard, dan zfs receive menukarkan semula aliran tersebut menjadi dataset. Salinan pertama ialah penghantaran penuh (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"Selepas itu, hantar hanya bahagian yang berubah antara dua snapshot.
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"Pihak penerima mesti masih menyimpan snapshot yang anda gunakan sebagai punca penghantaran. Apabila ia tidak lagi menyimpannya, proses penerimaan akan terhenti dengan cannot receive incremental stream: most recent snapshot of backup/data does not match incremental source, kerana ZFS tidak mempunyai asas untuk menggunakan perbezaan tersebut. Hantar daripada snapshot yang disimpan oleh kedua-dua pihak, atau mulakan semula dengan penghantaran penuh.
Berikan hak akses pada sasaran dan bukannya menggunakan root jauh: sudo zfs allow -u backupuser create,mount,receive backup/data.
Ini merupakan sandaran luar tapak (off-site backup) yang sebenar dengan satu syarat. Hujung destinasi mestilah sebuah ZFS pool, kerana storan objek tidak boleh menerima aliran data. Apabila sasaran anda ialah storan yang serasi dengan S3 atau hos Linux biasa, gunakan alat yang boleh berhubung dengannya, dan sandaran restic daripada VPS merangkumi laluan tersebut.
Mengapa ZFS menggunakan begitu banyak RAM? ARC
ARC (adaptive replacement cache) ialah cache bacaan bagi ZFS. Ia berada dalam memori kernel dan bukannya dalam page cache Linux biasa, jadi free -h tidak melaporkannya di bawah buff/cache. Ia dibaca sebagai memori yang sedang digunakan. Pelayan ZFS yang kelihatan hampir penuh biasanya merupakan pelayan dengan cache yang hangat, dan ini menyumbang kepada kebanyakan laporan "ZFS memakan RAM saya".
Had lalai ditetapkan secara sengaja dengan nilai yang besar. OpenZFS 2.3 menetapkan saiz maksimum ARC kepada nilai yang lebih besar antara RAM tolak 1 GiB atau 5/8 daripada jumlah RAM. OpenZFS 2.2 dan versi sebelumnya menggunakan separuh daripada RAM pada Linux, manakala FreeBSD sudah menggunakan peraturan baharu tersebut. Jalankan zfs version untuk melihat peraturan yang terpakai pada sistem anda.
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
}
]Angka-angka tersebut adalah peraturan lalai yang didokumentasikan untuk saiz instans biasa, bukan ukuran daripada pelayan yang sedang berjalan. Pada instans 4 GB, peraturan 2.3 membenarkan ARC sebesar 3 GiB. Pelayan yang sama pada versi 2.2 akan terhad pada 2 GiB. Instans 2 GB di bawah peraturan 2.3 masih membenarkan 1.25 GiB. Aplikasi anda akan mendapat baki memori yang tinggal.
Baca angka sebenar daripada pelayan anda sendiri dan jangan hanya bergantung pada jadual:
grep -E '^(size|c_max) ' /proc/spl/kstat/zfs/arcstats
arc_summary | head -n 20Lajur ketiga adalah dalam unit bait. c_max ialah had maksimum yang berkuat kuasa sekarang, dan size ialah jumlah yang dipegang oleh ARC pada masa ini.
ARC akan mengembalikan memori. Kernel akan memberi isyarat tekanan memori dan ARC akan mengecil. Masalahnya ialah dari segi masa, kerana pengecilan didorong oleh tekanan tersebut, jadi proses yang meminta beberapa ratus MiB secara serentak boleh menyebabkan OOM (out of memory) killer bertindak semasa ARC masih dalam proses melepaskan memori. Pada pelayan 2 GB yang menjalankan pangkalan data dan pelayan web, ini bukanlah kejadian yang jarang berlaku. Manual OpenZFS menyatakan perkara yang sama mengenai perubahan manual: menurunkan had "tidak akan menyebabkan ARC mengecil tanpa tekanan memori untuk mendorong pengecilan tersebut".
Cara mengehadkan ARC pada VPS kecil
Tentukan beban kerja memori terlebih dahulu. Jumlahkan keperluan pangkalan data dan aplikasi, sediakan margin untuk sistem pengendalian, dan berikan baki memori kepada ARC. Pada instans 4 GB yang menjalankan Postgres dan satu aplikasi web, 512 MiB hingga 1 GiB ARC adalah titik permulaan yang munasabah.
Tetapkan nilai secara langsung, dalam bait. Contoh ini adalah 1 GiB.
echo 1073741824 | sudo tee /sys/module/zfs/parameters/zfs_arc_maxPastikan tetapan kekal selepas but semula.
echo 'options zfs zfs_arc_max=1073741824' | sudo tee /etc/modprobe.d/zfs.conf
sudo update-initramfs -uLangkah initramfs adalah penting kerana modul boleh dimuatkan daripada initramfs sebelum sistem fail root dilekapkan, yang bermaksud ia tidak akan membaca fail yang baru anda tulis. Selepas but semula, sahkan dengan baris c_max daripada arcstats.
Terdapat dua peringatan daripada manual itu sendiri. Anda tidak boleh menetapkan nilai kembali kepada 0 semasa sistem berjalan, jadi untuk membatalkannya anda perlu menyunting fail dan but semula. Selain itu, mengurangkan nombor tidak mengecilkan ARC yang besar serta-merta.
Pada FreeBSD, had yang sama adalah sysctl di bawah vfs.zfs.arc. Jalankan sysctl vfs.zfs.arc untuk melihat nilai semasa dan nama tepat yang digunakan oleh versi anda, kemudian tulis nilai maksimum ke dalam /boot/loader.conf.
Dua lagi peraturan memori untuk pelayan kecil. Pastikan deduplication dimatikan, kerana jadual dedup berada dalam memori dan peraturan umum yang disyorkan ialah 1 hingga 3 GB RAM bagi setiap TB data unik. Jangan letakkan swap pada zvol (peranti blok yang dibentuk daripada pool), kerana proses swap melalui sistem fail yang sedang cuba mengosongkan memori boleh menyebabkan deadlock pada mesin. Kekalkan swap pada partition biasa atau fail swap di luar pool.
Apabila ext4 atau XFS dan restic menjadi pilihan yang lebih baik
ZFS berbaloi digunakan pada pelayan yang mempunyai memori lebihan dan volum kedua. Selain daripada itu, sistem fail biasa yang digabungkan dengan alat sandaran sebenar adalah lebih baik. Pilih ext4 atau XFS apabila:
- Instans mempunyai RAM 2 GB atau 4 GB dan beban kerja memerlukan kesemuanya.
- Terdapat hanya satu cakera maya dan tiada salinan kedua, jadi ZFS hanya memberikan pengesanan tanpa pembaikan.
- Sasaran sandaran anda ialah storan objek atau hos Linux biasa, jadi tiada apa-apa di sana yang boleh menerima aliran
zfs send. - Anda menjalankan Debian dengan DKMS dan tidak mampu menanggung peningkatan kernel yang menyebabkan modul tidak dibina.
- Anda memerlukan ZFS pada sistem fail root tetapi imej daripada penyedia hanya menawarkan ext4.
Kekalkan ZFS apabila anda mempunyai volum data yang berasingan, RAM yang mencukupi (8 GB ke atas adalah selesa), dan pelan yang menggunakan snapshot serta zfs send dan bukannya sekadar mengaktifkannya. Untuk segala-galanya, ext4 dengan restic yang menulis sandaran terenkripsi dan dinyahduplikasi ke storan yang tidak dikawal oleh pelayan tersebut merangkumi kebanyakan fungsi yang sama tanpa menggunakan memori.
Mod kegagalan, berserta rentetan yang akan anda lihat
Pool hilang selepas but semula. zpool status mencetak no pools available. Servis import membaca /etc/zfs/zpool.cache, jadi pool yang tiada dalam fail tersebut tidak akan diimport semasa but. sudo zpool import menyenaraikan apa yang boleh diimport, sudo zpool import tank mengimportnya semula, dan sudo zpool set cachefile=/etc/zfs/zpool.cache tank menjadikannya kekal. Pool yang tidak dieksport dengan sempurna daripada sistem lain melaporkan cannot import 'tank': pool may be in use from other system, dan sudo zpool import -f tank mengatasi ralat tersebut sebaik sahaja anda pasti tiada hos lain yang menggunakannya.
modprobe: FATAL: Module zfs not found in directory /lib/modules/6.12.0-... pada Debian selepas naik taraf kernel. DKMS tidak membina modul untuk kernel baharu, biasanya kerana header yang sepadan tidak dipasang. dkms status menunjukkan apa yang dibina untuk kernel yang mana. sudo apt install -y linux-headers-$(uname -r) kemudian sudo dkms autoinstall membina semula modul tersebut, dan sudo zpool import tank mengembalikan pool tersebut.
Pool penuh tetapi anda telah memadam fail. Data yang dipadam kekal pada cakera selagi snapshot masih merujuknya, jadi du dan df tidak menunjukkan angka yang sama. zfs list -o space -r tank memecahkan penggunaan kepada USEDDS dan USEDSNAP, dan nilai USEDSNAP yang besar adalah puncanya. Musnahkan snapshot lama dengan sudo zfs destroy tank/data@2026-06-01 dan ruang tersebut akan kembali.
Kiraan CKSUM meningkat dalam zpool status. Sesuatu di bawah ZFS mengembalikan data yang rosak. Pada mirror, kiraan tersebut adalah amaran dan blok telah dibaiki. Pada pool cakera tunggal, fail tersebut hilang, zpool status -v menamakan fail tersebut, dan anda perlu memulihkan fail itu daripada sandaran yang tidak berada dalam pool ini.
Pelayan perlahan dan melakukan swapping. Hadkan ARC seperti di atas, kemudian jalankan arc_summary dan lihat nisbah hit. ARC yang terlalu kecil untuk menampung set kerja bermakna setiap bacaan pergi ke cakera, iaitu tahap di mana sistem fail biasa yang menggunakan page cache akan memberikan prestasi yang lebih baik.
FAQ
Berapakah jumlah RAM yang diperlukan oleh ZFS pada VPS?
ZFS boleh dijalankan pada instans 2 GB. Persoalan sebenar ialah berapa banyak RAM yang tinggal untuk aplikasi anda. Tanpa penalaan, OpenZFS 2.3 membenarkan ARC berkembang kepada nilai yang lebih besar antara RAM tolak 1 GiB atau 5/8 daripada jumlah RAM, jadi pelayan 4 GB boleh memperuntukkan 3 GiB kepada cache. Tetapkan zfs_arc_max kepada nilai yang boleh dikorbankan oleh beban kerja anda, kemudian sahkan nilainya dengan membaca baris c_max daripada /proc/spl/kstat/zfs/arcstats.
Adakah snapshot ZFS dianggap sebagai sandaran (backup)?
Tidak. Snapshot wujud dalam pool yang sama dengan data asal. Ia mampu bertahan daripada rm yang rosak dan naik taraf yang gagal, namun ia akan hilang jika pool atau instans tersebut musnah. Jadikan ia sandaran dengan menghantarnya ke mesin lain menggunakan zfs send, atau dengan menjalankan alat sandaran yang menulis ke storan yang tidak dikawal oleh pelayan ini.
Adakah ZFS berfungsi sama pada FreeBSD dan Linux?
Kod asasnya adalah sama sejak OpenZFS 2.0 pada Disember 2020, perintahnya sama, format pada cakera juga sama, dan pool boleh dipindahkan antara kedua-duanya. Perbezaannya terletak pada pembungkusan. FreeBSD menyertakan ZFS dalam sistem asas. Pada Linux, setiap pengedaran mempunyai pendekatan tersendiri: Ubuntu membina modul ke dalam pakej kernelnya, manakala Debian membina modul tersebut pada mesin anda menggunakan DKMS, jadi naik taraf kernel boleh menyebabkan anda kehilangan modul sehingga proses bina semula berjaya.
Bolehkah ZFS membaiki kerosakan pada VPS dengan satu cakera?
Ia dapat mengesan kerosakan dan menamakan fail yang terlibat, namun ia tidak dapat membaikinya kerana pembaikan memerlukan salinan kedua bagi blok tersebut. zfs set copies=2 pada dataset memberikan anda salinan kedua tersebut dengan penggunaan ruang dua kali ganda, yang mampu menangani blok yang rosak tetapi bukan volum yang hilang. Cermin (mirror) merentasi dua volum adalah jawapan yang benar-benar memulihkan data.
Adakah pemampatan (compression) melambatkan pelayan?
lz4 biasanya menjadikan pelayan lebih pantas. Blok yang dimampatkan bermakna lebih sedikit bait yang ditulis dan dibaca, dan kos CPU bagi setiap blok adalah kecil berbanding penjimatan ruang cakera yang diperoleh. Tetapkan compression=lz4 pada punca pool supaya setiap dataset mewarisinya, kemudian semak zfs get compressratio tank setelah data sebenar ditulis.