Episode ini membahas keamanan storage: enkripsi LUKS dan dm-crypt di atas atau bawah RAID, enkripsi native ZFS, manajemen kunci, serta peran checksum ZFS dan btrfs untuk mendeteksi silent corruption melalui scrub.

Redundansi menjaga array tetap berjalan, backup menjaga data tetap ada — tapi apa yang melindungi data dari tangan yang salah? Episode 14 ini menjawab dengan enkripsi dan integritas. Disk yang dicuri, server yang disita, atau bit yang rusak diam-diam — semuanya membutuhkan lapisan perlindungan tersendiri.
Di episode 11 kita sempat menyentuh luks-on-raid versus raid-on-luks. Episode 14 membahasnya lebih dalam, termasuk enkripsi native ZFS, manajemen kunci, dan checksum yang membuat ZFS dan btrfs berbeda dari filesystem lain. Mari mulai dari fondasi dm-crypt.
LUKS (Linux Unified Key Setup) adalah format standar untuk disk encryption di Linux, dibangun di atas dm-crypt dari kernel. Saat kalian memakai LUKS di atas array, seluruh /dev/md0 dienkripsi sebagai satu kesatuan:
sudo cryptsetup luksFormat /dev/md0
sudo cryptsetup open /dev/md0 raid_cryptPerintah cryptsetup luksFormat /dev/md0 membuat container LUKS (konfirmasi YES dan buat passphrase yang kuat), lalu cryptsetup open membukanya sebagai mapper bernama raid_crypt. Setelah terbuka, filesystem dibuat di /dev/mapper/raid_crypt.
Pendekatan ini menawarkan kesederhanaan:
Sisi lainnya: jika kalian ingin memindahkan satu disk keluar dari array, disk tersebut tidak berguna sendiri karena hanya berisi irisan data terenkripsi. Untuk fleksibilitas itu, kalian memakai raid-on-luks.
Di pendekatan ini, setiap disk dienkripsi sendiri-sendiri dulu, lalu digabung menjadi array:
sudo cryptsetup luksFormat /dev/sdb
sudo cryptsetup luksFormat /dev/sdc
sudo cryptsetup open /dev/sdb crypt0
sudo cryptsetup open /dev/sdc crypt1
sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/mapper/crypt0 /dev/mapper/crypt1Urutan perintah di atas membuat LUKS di masing-masing disk, membukanya sebagai mapper, lalu membangun array dari mapper tersebut. Hasilnya: setiap disk mandiri dan terenkripsi, dan data array tidak pernah tampil dalam bentuk terang di disk mana pun.
Kelemahan utamanya: saat disk baru menggantikan disk gagal, kalian harus membuat LUKS baru di disk pengganti dengan konfigurasi yang sama. Dan saat boot, setiap mapper perlu dibuka — dengan banyak disk, ini bisa merepotkan tanpa keyfile.
Info
Untuk sebagian besar kasus, luks-on-raid lebih sederhana dan cukup aman. Raid-on-luks lebih cocok jika kalian menginginkan fleksibilitas per disk — misalnya memindahkan disk antar array tanpa membuka seluruh container.
ZFS memiliki enkripsi bawaan yang tidak membutuhkan dm-crypt:
sudo zfs create -o encryption=aes-256-gcm -o keyformat=passphrase tank/secretPerintah zfs create -o encryption=aes-256-gcm membuat dataset terenkripsi dengan AES-256-GCM. Keunggulannya: snapshot, replication, dan compression tetap bekerja normal di atas data terenkripsi — enkripsi terintegrasi dengan ekosistem ZFS.
Enkripsi native ZFS memberi keuntungan besar:
Kunci ZFS bisa dari passphrase, keyfile, atau di-load otomatis saat boot dengan alat seperti zfs-load-key dan systemd:
sudo zfs load-key tank/secretPerintah zfs load-key tank/secret memuat kunci ke kernel. Untuk produksi, hindari passphrase yang harus dimasukkan manual saat reboot; gunakan keyfile yang disimpan di TPM atau server manajemen kunci terpisah.
cryptsetup luksHeaderBackup menyimpan header yang berisi kunci enkripsi; header rusak berarti data tak terbaca.sudo cryptsetup luksHeaderBackup /dev/md0 --header-backup-file /backup/luks-header.binPerintah cryptsetup luksHeaderBackup menyimpan header LUKS ke file cadangan. Simpan file ini di media yang aman — tanpa header, seluruh data terenkripsi tidak bisa dibuka.
Enkripsi melindungi dari pencurian; checksum melindungi dari korupsi. ZFS dan btrfs menyimpan checksum per blok, sehingga saat membaca data, filesystem bisa memverifikasi apakah blok masih sesuai. Ini mendeteksi silent corruption — bit flip yang tidak terdeteksi hardware.
sudo zpool status tankOutput zpool status tank menampilkan kolom errors: di setiap vdev. Angka selain nol menandakan blok yang rusak pernah ditemukan. Jika ZFS punya redundancy (mirror atau RAIDZ), ia memperbaiki otomatis; jika tidak, ia melaporkan korupsi — dan saat itulah backup di episode 12 berperan.
Pemeriksaan menyeluruh checksum dilakukan lewat scrub — kita akan membahas cara menjadwalkan dan menjalankannya di episode 15. Untuk sekarang, ingat: checksum membuat ZFS dan btrfs tahu kapan data rusak; RAID biasa tidak bisa.
Episode 14 melengkapi lapisan keamanan storage: enkripsi LUKS dan dm-crypt di atas atau bawah RAID, enkripsi native ZFS dengan manajemen kunci yang rapi, serta checksum untuk mendeteksi silent corruption. Data kalian kini aman dari pencurian dan korupsi diam-diam.
Inti yang harus dibawa pulang:
zpool status menampilkan error checksum per vdev.Di episode 15 selanjutnya kita akan membahas maintenance & scrub — menjalankan mdadm --check dan --repair, zpool scrub, scrub btrfs, menjadwalkannya secara rutin, serta perawatan fisik seperti UPS, penuaan disk, dan pembaruan firmware. Kalian akan belajar menjaga storage tetap sehat dalam jangka panjang.