Episode ini mengoptimalkan dan memantau Samba: tuning aio read size, use sendfile, dan NIC bond untuk throughput, lalu monitoring dengan smbstatus, metrik Prometheus via node_exporter, dan analisis log. Kalian belajar mengukur sebelum men-tune dan membangun dashboard yang menceritakan kesehatan file server.

Di episode 8 kalian mengenal parameter performa SMB3; episode 20 adalah versi menyeluruhnya untuk produksi: tuning yang terukur dan monitoring yang berkelanjutan. Dua prinsip yang menaungi episode ini: ukur dulu, baru tune (tuning tanpa pengukuran hanyalah tebakan — kita sudah menyinggungnya di episode 8), dan monitoring adalah perpanjangan dari debugging (masalah yang tidak terpantau tidak pernah terdeteksi lebih awal).
Kita lanjutkan tuning transfer besar dari episode 8 dengan konteks penuh:
[global]
aio read size = 16384
aio write size = 16384
use sendfile = yes
min receivefile size = 131072
write cache size = 262144
socket options = TCP_NODELAYaio read size/aio write size: threshold (byte) di mana operasi I/O menjadi asinkron — beberapa klien tidak saling memblokir saat menulis besar.min receivefile size: file di atas threshold dilewatkan kernel secara zero-copy (splice) — CPU server hampir tidak tersentuh untuk transfer besar.write cache size: buffer tulis per-koneksi — membantu workload dengan banyak tulis kecil, tapi konsumsi RAM naik per koneksi.use sendfile = yes: kirim data langsung dari page cache ke socket.Mengapa ukuran-ukuran ini? Parameter di atas berinteraksi dengan filesystem dan network. Nilai "benar" bergantung workload kalian — jadi lakukan A/B benchmark sebelum dan sesudah mengubahnya (episode 8: metodologi dd/fio + iperf3).
Di sisi jaringan, dua perbaikan yang berdampak besar:
sudo nmcli connection add type bond con-name bond0 ifname bond0 bond.options "mode=802.3ad,miimon=100"
sudo nmcli connection add type ethernet con-name bond0-p1 ifname eno1 master bond0
sudo nmcli connection up bond0sudo sysctl -w net.core.rmem_max=16777216
sudo sysctl -w net.core.wmem_max=16777216
sudo sysctl -w net.ipv4.tcp_rmem="4096 87380 16777216"
sudo sysctl -w net.ipv4.tcp_wmem="4096 65536 16777216"net.ipv4.tcp_rmem/wmem menentukan jendela TCP — untuk RTT tinggi (VPN, WAN), buffer besar meningkatkan throughput. Pastikan disimpan permanen di /etc/sysctl.conf bila hasilnya positif.
Warning
Jangan menyalin semua tuning sekaligus lalu "berdoa". Setiap parameter punya efek samping: aio menambah thread, write cache menambah RAM per koneksi, sendfile kadang bermasalah di filesystem tertentu (episode 8). Ubah satu-satu, ukur, pertahankan yang membantu, balik yang merugikan. Dokumentasikan setiap keputusan — tuning yang tidak terdokumentasi adalah hutang teknis.
smbstatus tetap tool harian terbaik untuk melihat "apa yang terjadi sekarang":
smbstatus -b | head -30
smbstatus -LUntuk melihat tren (bukan snapshot), catat ke file dan ambil statistik:
*/5 * * * * smbstatus -b | awk '/user/ {print $1, $2}' >> /var/log/samba/active-users.logLog yang dibangun di episode 14-16 memberi bahan analisis:
sudo grep -i "NT_STATUS" /var/log/samba/*.log | sort | uniq -c | sort -rn | head
sudo journalctl -u smbd --since today | grep -iE "slow|timeout|denied" | tail -20uniq -c | sort -rn mengubah log mentah menjadi ranking error — kalian langsung melihat error paling sering, bukan yang paling baru.
Prometheus membutuhkan exporter. node_exporter memberi metrik host (CPU, RAM, disk, network) dengan sedikit setup:
services:
node-exporter:
image: prom/node-exporter:latest
network_mode: host
restart: unless-stoppedDi Prometheus, target otomatis terbaca lewat file SD (file_sd_configs) atau static_config. Metrik yang relevan untuk Samba: node_disk_read_bytes_total, node_network_receive_bytes_total, node_filesystem_avail_bytes — semua muncul tanpa konfigurasi tambahan.
Untuk metrik Samba sesungguhnya (jumlah sesi, share aktif), dua pendekatan:
smbstatus berkala, tulis output ke textfile collector node_exporter, scrape lewat node_exporter --collector.textfile:*/5 * * * * smbstatus -b | awk '/^[0-9]+ / {print "samba_active_sessions " $1}' \
> /var/lib/node_exporter/textfile_collector/samba.promaeriscloud/samba_exporter atau yang sejenis mengekspos metrik via HTTP — pastikan sudah dievaluasi sebelum dipakai production.Dengan metrik di Prometheus, bangun Grafana dashboard dengan panel kunci:
samba_active_sessions) — tren pemakaian.node_disk_read_bytes_total per interval) — lonjakan = indikator beban atau serangan.node_filesystem_avail_bytes) — peringatan sebelum penuh (relevan untuk snapshot/retensi episode 12).log rate via loki/promtail bila memakai stack observability).Alert yang layak dipasang: disk < 20%, sesi melonjak > 2x baseline, auth failure meningkat, dan smbd down.
Tip
Jangan mulai dari 50 alert — mulai dari 3 yang paling menyakitkan: server down, disk penuh, dan lonjakan auth failure (episode 15: tanda ransomware). Tambah alert seiring pengalaman. Alert yang banyak tapi berisik akan diabaikan; alert sedikit tapi tepat akan disayangi tim.
write cache size terlalu besar: RAM per koneksi melonjak; dengan 500 koneksi, cache 1 MB = 500 MB RAM.Inti yang harus dibawa pulang:
aio, sendfile, write cache, socket options) harus diukur dengan A/B benchmark.smbstatus untuk real-time; log analysis (uniq -c | sort -rn) untuk pola.smbstatus ke dalam metrik.Di episode 21 selanjutnya kita akan membahas roadmap & community — arah pengembangan AD DC dan SMB3, konferensi SambaXP tahunan, serta ekosistem samba.org, mailing lists, wiki, dan Software Freedom Conservancy. Kalian akan melihat masa depan Samba dan cara ikut serta di dalamnya!