SSD Nodes Learn Hosting plans →
Panduan Matt ConnorOleh Matt Connor · Diperbarui 2026-08-29

ZFS di FreeBSD dan Linux: Seberapa Boros RAM?

ZFS memberi checksum, snapshot, replikasi send/receive, dan kompresi, tetapi ARC memakai RAM. Pelajari cara menilai dampaknya pada VPS 2 GB atau 4 GB.

ZFS yang Anda dapatkan dan konsekuensinya

ZFS pada FreeBSD dan Linux kini menggunakan satu basis kode, yaitu OpenZFS, sehingga fiturnya sama pada kedua sistem. Server yang menjalankan ZFS mendapatkan data dengan checksum, snapshot yang tidak menggunakan ruang tambahan hingga data berubah, replikasi dengan zfs send, serta kompresi yang dapat diaktifkan dengan mengubah satu properti. Konsekuensinya adalah penggunaan memori: ARC (adaptive replacement cache) secara default menggunakan sebagian besar RAM, sedangkan pada VPS (virtual private server) dengan kapasitas 2 GB atau 4 GB, memori tersebut justru dibutuhkan oleh aplikasi Anda.

Panduan ini menilai ZFS pada VPS sewaan dengan satu atau dua disk virtual, bukan pada server penyimpanan dengan empat puluh bay drive. Fitur yang tetap bermanfaat dalam kondisi tersebut layak Anda gunakan. Bagian yang tidak sesuai dengan kondisi tersebut perlu Anda ketahui sebelum membuat pool.

OpenZFS pada FreeBSD dan Linux: satu basis kode, dua cara pengemasan

FreeBSD menyertakan ZFS dalam sistem dasar sejak FreeBSD 7.0 pada 2008, awalnya sebagai fitur eksperimental. Sejak OpenZFS 2.0 pada Desember 2020, FreeBSD dan Linux dibangun dari pohon sumber yang sama, sehingga zfs dan zpool berperilaku sama pada keduanya, dan pool yang dibuat pada salah satunya dapat diimpor pada yang lain.

Alasan ZFS menjadi paket di Linux dan menjadi bagian dari sistem dasar di FreeBSD adalah perizinan. OpenZFS menggunakan CDDL (common development and distribution license). Kernel Linux menggunakan GPL (general public license) versi 2. Proyek kernel menganggap keduanya tidak kompatibel, sehingga kode ZFS tidak digabungkan ke mainline Linux, dan setiap distribusi menentukan cara menyediakannya. FreeBSD tidak memiliki konflik tersebut, sehingga ZFS langsung tersedia. Itulah keseluruhan penjelasan praktisnya: hanya ada satu perbedaan pengemasan, dan Anda tidak perlu memilih salah satu pihak.

SSD Nodes tidak menyediakan image FreeBSD, sehingga pada server yang disewa di sini, bagian Linux dalam panduan ini yang berlaku. Jika Anda menjalankan FreeBSD di tempat lain, server FreeBSD mendapatkan ZFS tanpa perlu membangun modul dan tanpa perlu mempertahankan kompatibilitas saat kernel diperbarui.

Instal ZFS dan buat pool

Di Ubuntu, modul tersedia di dalam paket kernel, sehingga Anda hanya perlu menginstal perintahnya.

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

zfs version menampilkan dua baris: versi userland dan versi modul kernel. Jika hanya satu baris yang muncul, berarti modul tidak dimuat. Paket tersebut berada di komponen universe, yang diaktifkan secara default pada image server Ubuntu. Jika apt tidak dapat menemukannya, jalankan sudo add-apt-repository universe terlebih dahulu.

Di Debian, paket tersebut berada di komponen contrib, dan modul dibuat di mesin Anda oleh DKMS (dynamic kernel module support). Tambahkan contrib ke baris Components: dalam /etc/apt/sources.list.d/debian.sources, jalankan sudo apt update, lalu:

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

Proses instalasi mengompilasi modul dan menampilkan Building initial module for 6.12.0-..., yang memerlukan waktu beberapa menit. Ingat artinya: setiap upgrade kernel akan membangun ulang modul tersebut, dan build yang gagal membuat pool Anda tidak dapat diimpor sampai masalahnya diperbaiki.

Di FreeBSD, tidak ada yang perlu diinstal. Aktifkan service tersebut dan jalankan.

sysrc zfs_enable=YES
service zfs start

Sekarang buat pool. Periksa path perangkat yang stabil terlebih dahulu, karena /dev/vdb diberikan berdasarkan urutan deteksi dan dapat berubah saat Anda memasang volume lain.

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

zpool status seharusnya menampilkan state: ONLINE dengan perangkat Anda tercantum di bawah tank. ashift=12 menetapkan ukuran blok terkecil pool sebesar 4 KiB. Nilai ini sesuai dengan SSD saat ini dan tidak dapat diubah setelah pool dibuat.

Sebagian besar image yang disewakan melakukan boot dari root ext4, sehingga ZFS di sini digunakan sebagai data pool pada volume kedua, bukan sebagai filesystem root. Pastikan perangkat tersebut memang sesuai dengan yang Anda maksud sebelum menggunakannya, karena mengonfirmasi disk NVMe yang Anda beli hanya memerlukan waktu satu menit, sedangkan proses rebuild memerlukan waktu sepanjang sore.

Checksum hanya dapat memperbaiki data jika pool memiliki redundansi

Setiap blok yang ditulis ZFS membawa checksum, dan setiap pembacaan memverifikasinya. Deteksi selalu berfungsi. Perbaikan memerlukan salinan kedua.

Pada pool dengan satu disk, ZFS memberi tahu Anda kondisi sebenarnya, lalu 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.tar

Nama file yang rusak ditampilkan. ext4 akan mengembalikan byte tersebut tanpa pesan apa pun, jadi informasi ini sudah bernilai. ZFS tetap tidak dapat memperbaikinya karena tidak ada salinan kedua di dalam pool yang dapat digunakan sebagai sumber perbaikan.

Dengan mirror, pembacaan yang sama dilayani dari sisi yang baik, blok yang rusak ditulis ulang, dan peristiwa tersebut muncul di kolom CKSUM pada zpool status. Inilah self-healing, dan fitur ini memerlukan dua perangkat.

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

Pada VPS, penyimpanan host biasanya sudah memiliki redundansi, sering kali berupa RAID 10 di bawah hypervisor. Ini melindungi Anda dari kerusakan drive. Namun, mekanisme tersebut tidak memberi tahu Anda ketika sebuah blok dikembalikan secara tidak benar karena array tidak memiliki cara untuk mengetahui salinan mana yang benar. ZFS mengetahuinya karena membandingkan data dengan checksum yang ditulisnya sendiri.

Jika Anda memiliki satu disk virtual dan menginginkan kemampuan perbaikan, sudo zfs set copies=2 tank/important menyimpan dua salinan setiap blok dari dataset tersebut pada disk yang sama. Cara ini menggandakan ruang yang digunakan dataset, dapat bertahan terhadap blok yang rusak, dan tidak membantu jika seluruh volume menghilang.

Scrub membaca semua data di dalam pool dan memverifikasinya.

sudo zpool scrub tank
zpool status tank

Pool yang sehat berakhir dengan baris seperti scan: scrub repaired 0B in 00:04:11 with 0 errors. Jadwalkan proses ini; sebulan sekali sudah cukup untuk pool kecil.

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

Dataset adalah unit kebijakan

Dataset adalah filesystem di dalam pool, dan membuatnya tidak mahal, jadi buat satu dataset untuk setiap pekerjaan. Properti diwariskan dari pool, sehingga Anda cukup menetapkan default satu kali lalu menggantinya pada dataset yang memerlukannya. Di FreeBSD, jail biasanya dijalankan dengan cara ini: satu dataset untuk setiap jail, sehingga satu jail dapat dibuat snapshot dan dikembalikan secara mandiri. Hal ini merupakan bagian dari perbedaan jail dan container 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 tank

Kompresi adalah properti yang sering tidak diaktifkan karena kehati-hatian, tetapi anggapan itu keliru. lz4 hanya menggunakan sedikit CPU dan mengurangi jumlah byte yang harus ditulis ke disk, sehingga pada data yang dapat dikompresi, operasi baca dan tulis biasanya menjadi lebih cepat. zstd menghasilkan kompresi yang lebih tinggi dengan penggunaan CPU yang lebih besar, sehingga cocok untuk log dan arsip yang jarang dibaca kembali. Periksa hasil yang sebenarnya dengan zfs get compressratio tank, dan ingat bahwa rasio tersebut hanya menghitung data yang ditulis setelah properti ditetapkan.

recordsize adalah ukuran blok terbesar yang ditulis dataset, dengan nilai default 128K. Database yang menulis halaman berukuran 8 KiB ke dalam record berukuran 128 KiB akan mengubah satu penulisan kecil menjadi pembacaan seluruh record, perubahan, lalu penulisan ulang. Tetapkan recordsize=16K pada dataset database sebelum memuat data, karena properti tersebut hanya berlaku untuk blok yang baru ditulis.

quota digunakan untuk mencegah satu dataset memenuhi seluruh pool. Pool ZFS yang hampir 100% penuh akan menjadi lambat dan sulit dibersihkan, jadi sisakan ruang cadangan secara sengaja.

Snapshot tidak menggunakan ruang hingga data berubah

ZFS tidak pernah menimpa block yang sedang digunakan. ZFS menulis block baru lalu memperbarui pointer. Inilah yang dimaksud dengan copy-on-write. Snapshot adalah catatan yang menyatakan, "pertahankan block yang saat ini ditunjuk oleh dataset ini", sehingga pembuatannya berlangsung seketika dan tidak menggunakan ruang.

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

Kolom USED pada snapshot menunjukkan ruang yang hanya digunakan oleh snapshot tersebut. Nilainya hampir nol pada awalnya dan bertambah saat Anda mengubah atau menghapus data, karena block lama tidak dapat lagi dilepaskan.

Untuk memulihkan file, Anda tidak perlu menjalankan proses restore.

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

Direktori .zfs tersembunyi, bahkan dari ls -a, sampai Anda menjalankan sudo zfs set snapdir=visible tank/data. Buat snapshot sebelum Anda membutuhkannya. Tanpa snapshot, satu rm -rf yang tidak sengaja dapat membawa Anda ke jalur pemulihan ext4, yang dimulai dengan unmount disk dan menjadi semakin rumit setelahnya.

Rollback membuang semua data yang ditulis sejak snapshot tersebut dibuat.

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

Rollback ditolak jika ada snapshot yang lebih baru. -r menghapus snapshot yang lebih baru tersebut agar proses dapat dilanjutkan. Periksa nama dataset dua kali sebelum menekan Enter.

Snapshot bukan backup. Snapshot berada di pool yang sama, pada volume yang sama, dan di server yang sama. Kerusakan volume atau satu zpool destroy akan menghapus snapshot bersama datanya. Snapshot melindungi Anda dari rm yang Anda lakukan sendiri dan dari upgrade yang bermasalah. Perlindungan ini mencakup banyak insiden nyata, tetapi tidak melindungi Anda dari masalah apa pun yang terjadi pada pool itu sendiri. Penjelasan lengkapnya tersedia di sini: alasan snapshot VPS bukan backup.

Kirim dan terima: replikasi dalam satu perintah

zfs send mengubah snapshot menjadi aliran byte pada keluaran standar, sedangkan zfs receive mengubah aliran tersebut kembali menjadi dataset. Salinan pertama adalah pengiriman penuh.

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"

Setelah itu, kirim hanya perubahan 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"

Sisi penerima tetap harus memiliki snapshot yang menjadi sumber pengiriman. Jika tidak, proses penerimaan berhenti dengan cannot receive incremental stream: most recent snapshot of backup/data does not match incremental source karena ZFS tidak memiliki basis untuk menerapkan perbedaan tersebut. Kirim dari snapshot yang dimiliki kedua sisi, atau mulai lagi dengan pengiriman penuh.

Berikan hak akses pada target, bukan menggunakan root jarak jauh: sudo zfs allow -u backupuser create,mount,receive backup/data.

Ini merupakan pencadangan off-site yang sebenarnya dengan satu syarat. Sisi tujuan harus berupa pool ZFS karena object storage tidak dapat menerima aliran tersebut. Jika target Anda adalah storage yang kompatibel dengan S3 atau host Linux biasa, gunakan tool yang mendukungnya, dan pencadangan restic dari VPS membahas jalur tersebut.

Mengapa ZFS menggunakan begitu banyak RAM? ARC

ARC (adaptive replacement cache) adalah cache baca ZFS. Cache ini berada di memori kernel, bukan di page cache Linux biasa, sehingga free -h tidak melaporkannya di bawah buff/cache. ARC terlihat sebagai memori yang sedang digunakan. Server ZFS yang tampak hampir penuh biasanya memiliki cache yang sudah terisi, dan hal itu menjelaskan sebagian besar laporan "ZFS menghabiskan RAM saya".

Batas default memang sengaja dibuat besar. OpenZFS 2.3 menetapkan ukuran maksimum ARC sebesar nilai yang lebih besar antara RAM dikurangi 1 GiB dan 5/8 RAM. OpenZFS 2.2 dan versi sebelumnya menggunakan setengah RAM di Linux, sedangkan FreeBSD sudah menggunakan aturan yang lebih baru. Jalankan zfs version untuk melihat aturan yang berlaku pada sistem Anda.

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
  }
]

Angka tersebut berasal dari aturan default yang terdokumentasi dan diterapkan pada ukuran instance umum, bukan dari pengukuran server yang sedang berjalan. Pada instance 4 GB, aturan 2.3 mengizinkan ARC sebesar 3 GiB. Pada server yang sama dengan 2.2, batasnya adalah 2 GiB. Instance 2 GB dengan aturan 2.3 masih mengizinkan 1.25 GiB. Aplikasi Anda mendapatkan sisa memori setelah itu.

Baca angka aktual dari server Anda sendiri, bukan hanya mengandalkan tabel:

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

Kolom ketiga menggunakan satuan byte. c_max adalah batas maksimum yang berlaku saat ini, sedangkan size adalah jumlah yang sedang digunakan ARC.

ARC memang mengembalikan memori. Kernel memberi sinyal tekanan memori, lalu ARC menyusut. Masalahnya adalah waktu, karena proses penyusutan dipicu oleh tekanan tersebut. Akibatnya, proses yang meminta beberapa ratus MiB sekaligus dapat terkena OOM (out of memory) killer ketika ARC masih melepaskan memori. Pada server 2 GB yang menjalankan database dan web server, hal ini bukan kejadian yang jarang. Manual OpenZFS menyatakan hal yang sama tentang perubahan manual: menurunkan batas "tidak akan menyebabkan ARC menyusut tanpa tekanan memori yang memicu penyusutan".

Cara membatasi ARC pada VPS kecil

Tentukan kebutuhan memori workload terlebih dahulu. Jumlahkan kebutuhan database dan aplikasi, sisakan margin untuk sistem operasi, lalu alokasikan sisanya untuk ARC. Pada instance 4 GB yang menjalankan Postgres dan satu aplikasi web, ARC sebesar 512 MiB hingga 1 GiB merupakan titik awal yang wajar.

Terapkan secara langsung, dalam satuan byte. Nilai berikut adalah 1 GiB.

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

Agar tetap berlaku setelah reboot, buat konfigurasinya persisten.

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

Langkah initramfs penting karena modul dapat dimuat dari initramfs sebelum filesystem root di-mount. Akibatnya, modul tidak akan membaca file yang baru saja Anda tulis. Setelah reboot, konfirmasikan nilainya melalui baris c_max dari arcstats.

Dua catatan penting ini berasal dari manual itu sendiri. Anda tidak dapat mengembalikan nilainya ke 0 saat sistem sedang berjalan. Untuk membatalkannya, edit file tersebut lalu reboot. Selain itu, menurunkan nilainya tidak langsung mengecilkan ARC yang sudah besar.

Di FreeBSD, batas yang sama diatur melalui sysctl pada vfs.zfs.arc. Jalankan sysctl vfs.zfs.arc untuk melihat nilai saat ini dan nama persis yang digunakan versi Anda, lalu tulis nilai maksimum ke /boot/loader.conf.

Ada dua aturan memori tambahan untuk server kecil. Nonaktifkan deduplikasi, karena tabel deduplikasi disimpan di memori dan aturan praktis yang umum digunakan adalah 1 hingga 3 GB RAM per TB data unik. Jangan menempatkan swap pada zvol (perangkat blok yang dibuat dari pool), karena proses swap melalui filesystem yang sedang berusaha membebaskan memori dapat menyebabkan deadlock pada mesin. Gunakan partisi biasa atau swap file di luar pool untuk swap.

Kapan ext4 atau XFS plus restic menjadi pilihan yang lebih baik

ZFS sepadan dengan sumber daya yang digunakan pada server yang memiliki memori cadangan dan volume kedua. Di luar kondisi tersebut, filesystem biasa ditambah alat backup yang tepat merupakan pilihan yang lebih baik. Pilih ext4 atau XFS jika:

  • Instance memiliki RAM 2 GB atau 4 GB, dan workload membutuhkan seluruh RAM tersebut.
  • Hanya ada satu virtual disk dan tidak ada salinan kedua, sehingga ZFS hanya memberi kemampuan deteksi tanpa perbaikan.
  • Target backup Anda adalah object storage atau host Linux biasa, sehingga tidak ada komponen di sana yang dapat menerima stream zfs send.
  • Anda menjalankan Debian dengan DKMS dan tidak dapat menanggung risiko upgrade kernel yang menyebabkan modul tidak ter-build.
  • Anda memerlukan ZFS pada root filesystem, sedangkan image dari provider hanya menyediakan ext4.

Pertahankan ZFS jika Anda memiliki volume data terpisah, RAM yang cukup (8 GB atau lebih terasa nyaman), serta rencana yang menggunakan snapshot dan zfs send, bukan sekadar mengaktifkannya. Untuk kondisi lainnya, ext4 dengan restic yang menulis backup terenkripsi dan dideduplikasi ke storage yang tidak dikendalikan server mencakup sebagian besar kebutuhan yang sama tanpa menggunakan memori.

Mode kegagalan dan string yang akan Anda lihat

Pool hilang setelah reboot. zpool status menampilkan no pools available. Service import membaca /etc/zfs/zpool.cache, sehingga pool yang tidak tercantum dalam file tersebut tidak pernah diimpor saat boot. sudo zpool import menampilkan pool yang dapat diimpor, sudo zpool import tank mengembalikannya, dan sudo zpool set cachefile=/etc/zfs/zpool.cache tank membuat konfigurasi tersebut tetap berlaku. Pool yang tidak diekspor dengan benar dari sistem lain akan menampilkan cannot import 'tank': pool may be in use from other system, dan sudo zpool import -f tank mengabaikannya setelah Anda memastikan tidak ada host lain yang menggunakannya.

modprobe: FATAL: Module zfs not found in directory /lib/modules/6.12.0-... di Debian setelah upgrade kernel. DKMS tidak membangun modul untuk kernel baru, biasanya karena header yang sesuai belum diinstal. dkms status menampilkan modul yang dibangun untuk setiap kernel. sudo apt install -y linux-headers-$(uname -r) kemudian sudo dkms autoinstall membangunnya kembali, dan sudo zpool import tank mengembalikan pool.

Pool penuh, tetapi Anda sudah menghapus file. Data yang dihapus tetap berada di disk selama masih dirujuk oleh snapshot, sehingga du dan df menampilkan hasil yang berbeda. zfs list -o space -r tank memisahkan penggunaan menjadi USEDDS dan USEDSNAP, dan USEDSNAP yang besar menunjukkan penyebabnya. Hancurkan snapshot lama dengan sudo zfs destroy tank/data@2026-06-01 agar ruang tersebut kembali tersedia.

Jumlah CKSUM terus meningkat dalam zpool status. Komponen di bawah ZFS mengembalikan data yang rusak. Pada mirror, jumlah tersebut merupakan peringatan dan blok telah diperbaiki. Pada pool dengan satu disk, file tersebut hilang; zpool status -v menampilkan namanya, lalu pulihkan file itu dari backup yang tidak berada di pool ini.

Server lambat dan menggunakan swap. Batasi ARC seperti di atas, lalu jalankan arc_summary dan periksa hit ratio. ARC yang terlalu kecil untuk menampung working set menyebabkan setiap pembacaan dilakukan dari disk. Pada kondisi ini, filesystem biasa yang menggunakan page cache akan memberikan kinerja yang lebih baik.

FAQ

Berapa RAM yang dibutuhkan ZFS pada VPS?

ZFS dapat berjalan pada instance 2 GB. Pertanyaan sebenarnya adalah berapa RAM yang tersisa untuk aplikasi Anda. Tanpa tuning, OpenZFS 2.3 memungkinkan ARC berkembang hingga nilai yang lebih besar antara RAM dikurangi 1 GiB dan 5/8 RAM, sehingga server 4 GB dapat menyerahkan 3 GiB kepada cache. Atur zfs_arc_max ke angka yang dapat disediakan oleh beban kerja Anda, lalu konfirmasikan dengan membaca baris c_max dari /proc/spl/kstat/zfs/arcstats.

Apakah snapshot ZFS merupakan backup?

Tidak. Snapshot berada di pool yang sama dengan data. Snapshot tetap tersedia setelah rm yang buruk dan upgrade yang gagal, tetapi hilang bersama pool atau instance. Jadikan snapshot sebagai backup dengan mengirimkannya ke mesin lain menggunakan zfs send, atau dengan menjalankan alat backup yang menulis ke storage yang tidak dikendalikan server ini.

Apakah ZFS bekerja dengan cara yang sama pada FreeBSD dan Linux?

Keduanya menggunakan codebase yang sama sejak OpenZFS 2.0 pada Desember 2020, perintah yang sama, dan format on-disk yang sama. Pool juga dapat dipindahkan di antara keduanya. Perbedaannya terletak pada packaging. FreeBSD menyediakan ZFS dalam base system. Pada Linux, setiap distribusi menentukan caranya: Ubuntu membangun module ke dalam kernel package, sedangkan Debian membangunnya pada mesin Anda dengan DKMS. Karena itu, upgrade kernel dapat membuat Anda tidak memiliki module sampai proses build ulang berhasil.

Dapatkah ZFS memperbaiki corruption pada VPS dengan satu disk?

ZFS mendeteksi corruption dan menyebutkan nama file, tetapi tidak dapat memperbaikinya karena proses perbaikan memerlukan salinan kedua dari block tersebut. zfs set copies=2 pada dataset menyediakan salinan kedua dengan penggunaan ruang dua kali lipat. Ini menangani block yang rusak, tetapi tidak menangani volume yang hilang. Mirror pada dua volume adalah solusi yang benar-benar dapat melakukan perbaikan.

Apakah compression memperlambat server?

lz4 biasanya justru membuatnya lebih cepat. Block yang dikompresi berarti lebih sedikit byte yang ditulis dan dibaca, sedangkan biaya CPU per block kecil dibandingkan penghematan pada disk. Atur compression=lz4 pada root pool agar setiap dataset mewarisi pengaturan tersebut, lalu periksa zfs get compressratio tank setelah data sebenarnya ditulis.