File Storage #
File storage adalah jenis penyimpanan yang paling familiar — ia menyimpan data dalam hierarki direktori dan file, dan bisa di-mount oleh beberapa instance sekaligus menggunakan protokol jaringan standar seperti NFS atau SMB. Ini adalah solusi untuk pertanyaan: “bagaimana beberapa server bisa membaca dan menulis ke filesystem yang sama secara bersamaan?” — sesuatu yang tidak bisa dilakukan block storage biasa dan tidak sesuai dengan semantik object storage. File storage mengisi niche spesifik ini di ekosistem cloud storage.
Cara Kerja File Storage #
File Storage adalah filesystem yang di-share melalui jaringan:
[File Storage Service] ← dikelola provider (managed NAS)
│
│ NFS (Linux) atau SMB/CIFS (Windows)
│ Mount seperti disk lokal
┌────┴────┐
▼ ▼
Instance A Instance B Instance C
/mnt/shared /mnt/shared /mnt/shared
Semua instance melihat filesystem yang sama:
→ File yang ditulis Instance A langsung terlihat oleh B dan C
→ Direktori, permissions, timestamps — semua konsisten
→ Seperti network drive di Windows atau mount NFS di Linux
Perbedaan dari perspektif aplikasi:
Block Storage: mount sebagai /dev/sda, format sendiri
File Storage: mount sebagai /mnt/share via network
Object Storage: akses via HTTP API (PUT, GET, DELETE)
Protokol File Storage #
NFS — Network File System #
NFS (Network File System):
→ Protokol standar POSIX filesystem untuk Linux/Unix
→ Mendukung: file permissions, ownership, symbolic links,
file locking, random read/write
Cara mount di Linux:
mount -t nfs4 fs-xxxxxxxx.efs.amazonaws.com:/ /mnt/efs
Karakteristik:
✓ POSIX compliant — aplikasi tidak perlu diubah
✓ Multi-instance concurrent access
✓ Cocok untuk: shared application data, content management,
development environments, home directories
✗ Latensi lebih tinggi dari local block storage (network overhead)
✗ Throughput terbatas dibanding direct-attached storage
SMB/CIFS — untuk Windows #
SMB (Server Message Block) / CIFS:
→ Protokol file sharing untuk Windows
→ Juga tersedia di Linux via Samba client
Cara mount di Windows:
Map Network Drive → \\fs-xxxxx.file.core.windows.net\share
Karakteristik:
✓ Native Windows filesystem semantics
✓ Integrasi dengan Active Directory untuk authentication
✓ Cocok untuk: Windows workloads, Microsoft applications,
home directories untuk pengguna Windows
✗ Lebih kompleks konfigurasinya di lingkungan hybrid
Kapan File Storage Tepat Digunakan #
File storage mengisi kebutuhan spesifik yang tidak bisa dipenuhi block atau object storage.
File Storage cocok untuk:
Shared application data:
✓ Beberapa instance aplikasi yang butuh baca/tulis filesystem yang sama
✓ Content Management System yang menyimpan uploaded files
dan perlu accessible dari beberapa web server
✓ Job processing di mana multiple worker perlu akses file input/output
Legacy application migration:
✓ Aplikasi yang hardcode path filesystem (/var/app/uploads)
dan tidak bisa diubah untuk pakai object storage
✓ Aplikasi yang butuh POSIX filesystem semantics
(file locking, permissions, inode)
Development environments:
✓ Shared code atau data di antara developer instances
✓ Build cache yang bisa di-share antar CI/CD worker
Home directories dan user files:
✓ Enterprise environment di mana setiap user butuh
persistent home directory yang accessible dari mana saja
File Storage TIDAK cocok untuk:
✗ Database storage
→ Sebagian besar database membutuhkan block storage
untuk performa IOPS yang konsisten dan rendah latensi
→ File storage punya overhead network yang tidak cocok
✗ Backup dan archive data dalam jumlah besar
→ Object storage jauh lebih murah per GB untuk data inaktif
→ File storage lebih mahal dari object storage
✗ Serving media langsung ke pengguna
→ Object storage + CDN jauh lebih efisien
→ File storage tidak dirancang untuk serving HTTP content
✗ Data analytics dengan dataset sangat besar
→ Object storage (data lake) jauh lebih scalable dan murah
Perbandingan Tiga Jenis Storage #
Object Storage Block Storage File Storage
─────────────────────────────────────────────────────────────────────
Akses HTTP API OS block device Network mount
Hierarki Flat (key-value) Blok mentah Direktori/file
Multi-instance Ya (native) Tidak (biasanya) Ya (native)
POSIX compatible Tidak Ya Ya
Latensi Sedang Rendah Sedang-tinggi
Throughput Tinggi (scalable) Tinggi Sedang
Harga per GB Murah Mahal Sedang
Maksimum ukuran Tidak terbatas Terbatas (volume) Bisa sangat besar
Cocok untuk Blob, backup, ML Database, OS Shared files
Performa dan Skalabilitas #
File storage managed di cloud biasanya menawarkan auto-scaling throughput dan storage.
Pola Performa File Storage:
Throughput:
→ Biasanya berbanding lurus dengan jumlah data yang disimpan
→ Makin besar storage, makin tinggi throughput yang tersedia
→ Atau bisa di-provision secara eksplisit (bergantung provider)
Latensi:
→ Lebih tinggi dari local block storage (ada network round trip)
→ Biasanya dalam range 1–10ms untuk operasi normal
→ Tidak cocok untuk workload yang sangat latency-sensitive
Concurrency:
→ Dirancang untuk banyak koneksi bersamaan
→ Puluhan hingga ribuan instance bisa mount filesystem yang sama
→ File locking tersedia tapi bisa jadi bottleneck jika banyak writer
Anti-pattern yang sering terjadi:
// ANTI-PATTERN: Banyak proses kecil baca/tulis file kecil bersamaan
Ribuan job CI/CD yang masing-masing baca ribuan file kecil
dari shared filesystem → performa sangat buruk karena overhead
per-operation di network filesystem
// BENAR: Batch operasi atau gunakan local storage + sync
Copy data yang dibutuhkan ke local storage dulu → proses →
hasilnya di-upload ke shared storage
Ringkasan #
- File storage adalah filesystem yang bisa di-share antar instance — mount via NFS (Linux) atau SMB (Windows), semua instance melihat filesystem yang sama.
- Niche utamanya: data yang perlu di-akses oleh beberapa instance sekaligus dengan filesystem semantics — bukan object storage, bukan block storage.
- Cocok untuk legacy app yang bergantung pada filesystem POSIX — aplikasi yang tidak bisa diubah untuk pakai object storage via HTTP API.
- Tidak cocok untuk database — latensi network overhead terlalu tinggi untuk workload I/O intensif yang butuh performa konsisten.
- Lebih mahal dari object storage per GB — untuk data archive atau backup, object storage jauh lebih ekonomis.
- Anti-pattern: banyak file kecil dengan concurrency tinggi — network filesystem overhead per-operation menjadi bottleneck serius untuk workload seperti ini.
← Sebelumnya: Block Storage Berikutnya: Durability vs Availability →