Mengelola volume yang terus tumbuh: mengubah ukuran PVC secara online dengan allowVolumeExpansion, menyiapkan kapasitas backend di NFS server, meramu mount options NFS yang optimal (hard, timeo, retrans), dan memantau performa I/O dengan nfsstat, df, dan iostat

Data tidak pernah menyusut. Portfolio upload Laravel yang tumbuh bulan demi bulan akan menekan kapasitas volume. Pertanyaan yang menghantui banyak tim: apakah menambah kapasitas harus menghentikan aplikasi?
Jawabannya, dengan allowVolumeExpansion: true di StorageClass kita (episode 5), adalah tidak. Episode 16 membahas tiga hal yang saling berkaitan: resize volume online, mount options yang menentukan perilaku saat NFS bermasalah, dan monitoring/optimasi performa.
Volume statis = waktu penuh = downtime. Ketika NFS penuh, aplikasi tidak bisa menulis, upload gagal diam-diam, dan pengguna mengeluh. Karena itu:
allowVolumeExpansion: true di StorageClass NFS sejak awal.Perlu dipahami: volume NFS hanyalah subdirektori virtual di sisi server. "Menambah kapasitas PVC" berarti:
spec.capacity.storage PV.Jadi yang wajib disiapkan adalah kapasitas backend: jika disk NFS server berupa ZFS dataset atau LVM pool, perluas pool-nya dulu:
# ZFS
sudo zpool online <pool> <new-disk>
sudo zfs set quota=200G <pool>/k8s-shared
# LVM
sudo pvcreate /dev/sdc
sudo vgextend vg-storage /dev/sdc
sudo lvextend -L +100G /dev/vg-storage/lv-nfs
sudo resize2fs /dev/vg-storage/lv-nfsPastikan StorageClass yang dipakai aplikasi punya allowVolumeExpansion:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: nfs-csi
provisioner: nfs.csi.k8s.io
parameters:
server: 192.168.10.20
share: /srv/k8s-shared
subDir: dynamic/${pvc.namespace}/${pvc.name}
mountOptions:
- nfsvers=4.2
- hard
reclaimPolicy: Delete
volumeBindingMode: Immediate
allowVolumeExpansion: truePerbesar kapasitas tanpa downtime:
kubectl edit pvc media-storageUbah baris berikut (contoh 1Gi → 20Gi):
resources:
requests:
storage: 20Gi # ubah dari 1GiVerifikasi:
kubectl get pvc media-storage
kubectl get pv -o yaml | grep -A2 capacityPV menampilkan kapasitas baru, dan filesystem di client sudah di-grow oleh CSI expansion secara online.
Important
Klik-jari-hati: resize diperbolehkan memperbesar, bukan memperkecil. Menurunkan request storage akan ditolak. Jadi tentukan buffer yang masuk akal — misal expand ke 2x kebutuhan + headroom 20%.
Mount options menentukan perilaku saat koneksi NFS terganggu. Dua pendekatan yang berbeda filosofinya:
| Option | Perilaku saat NFS down | Risiko |
|---|---|---|
hard | Proses menunggu (retry terus) sampai server kembali | Aman data; proses bisa tampak hang |
soft / softerr | Operasi error cepat setelah timeout | Cepat tahu masalah; risiko data korup |
Rekomendasi untuk produksi:
mountOptions:
- nfsvers=4.2
- hard
- timeo=600
- retrans=5timeo=600 (dalam sepersepuluh detik → 60 detik) — interval retry lebih santai dari default 0.7 detik.retrans=5 — jumlah pengiriman ulang sebelum minor timeout.hard dipilih karena melindungi data: proses menunggu server kembali alih-alih menulis ke posisi korup. Konsekuensinya adalah proses "hang" yang tampak — itu lebih baik daripada data rusak, dan ini alasan kenapa HA server (episode 20) sangat penting.
nfsstat -m
df -h /var/www/storage
iostat -x 5nfsstat -m — informasi dan statistik tiap mount NFS.df -h — kapasitas & penggunaan.iostat -x 5 — beban perangkat; amati await dan %util.nfsstat -snfsstat -s menampilkan panggilan NFS yang masuk dari seluruh server. Untuk grafik berbasis waktu, scrap metrics node_exporter mountstats ke Prometheus/Grafana — kita bangun dashboards-nya di episode 18.
server {
client_max_body_size 50m;
}df server sebagai peringatan dini — NFS yang penuh sama fatalnya dengan mount yang mati.Pada episode 16 ini, kalian telah menguasai pengelolaan pertumbuhan dan performa volume:
Inti yang harus dibawa pulang:
allowVolumeExpansion: true memungkinkan resize PVC online; pastikan StorageClass aplikasi mengaktifkannya.kubectl edit pvc mengubah request storage; tidak bisa dikurangi.hard (aman data) vs soft/softerr (cepat error); produksi memakai hard,timeo=600,retrans=5.nfsstat -m, df -h, iostat -x di client; nfsstat -s di server; metrics ke Grafana.Di episode 17 selanjutnya kita akan membangun snapshot & restore PVC NFS: memasang snapshot-controller, membuat VolumeSnapshot, merestore PVC dari snapshot, dan memahami batasan snapshot NFS CSI. Sampai jumpa di episode 17!