Back to IF3130 Sistem Paralel dan Terdistribusi

Topic: Andrew File System (AFS) - Skalabilitas Melalui Caching

Questions/Cues

  • Filosofi Skalabilitas AFS

  • Whole-File Caching (Detail)

  • Arsitektur Venus vs Vice

  • Distribusi Proses

  • Namespace (Local vs Shared)

  • System Call Interception

  • Implementasi Open/Read/Write/Close

  • Konsistensi: Callback Mechanism

  • Session Semantics

  • Vice Service Interface

Reference Points

  • Slides: IF3130-16-Andrew Filesystem-2022.pdf

  • Fokus: Skalabilitas Masif & Caching Persisten

1. Filosofi Desain: Skalabilitas di Atas Segalanya

AFS dikembangkan di Carnegie Mellon University dengan tujuan mendukung ribuan workstation. Berbeda dengan NFS yang sederhana, AFS mengoptimalkan kinerja untuk beban kerja umum (common case) guna mencapai skalabilitas.

  • Prinsip Utama: “Make the common case fast.” Kasus umum di lingkungan akademik/teknik adalah file dibaca berulang kali, diakses secara sekuensial, dan jarang ditulis bersamaan oleh banyak user.

  • Solusi: Memindahkan beban kerja dari Server ke Klien. Server hanya bertindak sebagai custodian (penjaga) data, sementara pemrosesan file terjadi di klien.

Whole-File Caching (Caching Satu File Penuh):

  • Saat klien mengakses file, AFS tidak mengambil blok demi blok, melainkan mendownload SELURUH file tersebut dari server ke disk lokal klien.

  • Cache Permanen: Cache disimpan di Local Disk, bukan RAM. Ini berarti cache bertahan meskipun komputer direstart (survives reboot).

  • Kapasitas cache bisa sangat besar (ratusan file), terbatas hanya oleh ukuran disk klien.

2. Arsitektur Komponen: Venus & Vice

Distribusi proses di AFS sangat spesifik (lihat diagram slide 5):

A. Vice (Server Side):

  • Berjalan di atas sistem operasi server (kernel UNIX).

  • Menyediakan layanan penyimpanan data terpusat.

  • Melayani request RPC dari klien.

  • Antarmuka layanan meliputi: Fetch (ambil file), Store (simpan file), Remove, Create, Locking.

B. Venus (Client Side):

  • Berjalan sebagai User Program (bukan di dalam kernel) pada setiap workstation klien.

  • Berperan sebagai perantara antara kernel klien dan server Vice.

  • Mengelola cache lokal di disk klien.

  • Melakukan kontak dengan Vice hanya jika file tidak ada di cache (cache miss) atau saat menutup file yang berubah.

3. Namespace & Intersepsi System Call

Struktur Namespace:

AFS membagi pandangan file system menjadi dua area (Slide 6):

  • Local Namespace: Direktori standar UNIX seperti /bin, /tmp, /lib disimpan di disk lokal workstation. Ini untuk file sistem operasi dasar agar booting cepat dan independen.

  • Shared Namespace: Direktori khusus (misal /cmu) yang berisi file-file user dan data bersama. Sub-tree di bawah /cmu dikelola oleh AFS dan terlihat sama di semua workstation.

Mekanisme Intersepsi:

Kernel UNIX dimodifikasi sedikit. Saat ada system call (seperti open), kernel mengecek:

  • Apakah file ada di Local Namespace? Tangani dengan File System Lokal.

  • Apakah file ada di Shared Namespace? Teruskan request ke proses Venus.

4. Implementasi Detail System Call di AFS

Berikut alur hidup akses file secara rinci (berdasarkan tabel Slide 8):

1. open(FileName, mode)

  • Kernel: Deteksi file remote, oper ke Venus.

  • Venus: Cek cache lokal.

    • Cache Hit: Cek apakah file valid (punya callback promise?). Jika ya, pakai file di disk lokal.

    • Cache Miss: Kirim RPC Fetch ke Vice Server.

  • Vice: Kirim kopi file + Callback Promise ke Venus.

  • Venus: Simpan file di disk lokal, catat promise, return file descriptor lokal ke kernel.

  • Hasil: Aplikasi mendapat file descriptor ke file di disk lokal.

2. read(...) dan write(...)

  • Kernel: Melakukan operasi I/O standar UNIX pada file salinan di disk lokal.

  • PENTING: Venus dan Vice TIDAK TERLIBAT. Tidak ada lalu lintas jaringan sama sekali selama operasi baca/tulis berlangsung. Ini kunci performa tinggi AFS.

3. close(FileDescriptor)

  • Kernel: Menutup file lokal, memberitahu Venus.

  • Venus:

    • Jika file hanya dibaca: Tidak melakukan apa-apa.

    • Jika file dimodifikasi: Mengirim salinan file yang baru dari disk lokal ke Vice Server via RPC Store.

  • Vice: Menerima file baru, update database, dan mengirim BreakCallback ke klien lain.

5. Model Konsistensi: Callback & Session Semantics

AFS menggunakan pendekatan Stateful untuk menjaga konsistensi cache.

Callback Promise:

  • Saat Vice mengirim file ke Venus, Vice memberikan janji: “Saya akan memberitahu kamu jika file ini berubah.”

  • Vice mencatat di tabel internal: “Klien X punya file Y”.

Mekanisme Update (BreakCallback):

  • Jika Klien A meng-upload versi baru file Y (saat close), Vice melihat catatannya.

  • Vice melihat Klien B juga punya file Y.

  • Vice mengirim RPC BreakCallback ke Venus di Klien B.

  • Venus di Klien B menghapus validitas cache file Y (membatalkan promise).

  • Jika Klien B mencoba open file Y nanti, Venus sadar cache-nya tidak valid dan akan Fetch ulang.

Session Semantics:

Perubahan pada file hanya terlihat oleh user lain setelah file tersebut di-CLOSE. Selama file terbuka, perubahan bersifat lokal. Ini berbeda dengan UNIX semantics (perubahan terlihat instan).

Summary

AFS adalah sistem file terdistribusi yang memprioritaskan skalabilitas untuk mendukung ribuan klien. Kunci utamanya adalah Whole-File Caching persisten di disk klien dan pemisahan tugas yang jelas: Venus (klien) menangani sebagian besar beban kerja secara lokal, sementara Vice (server) hanya berfungsi sebagai repositori pusat dan koordinator konsistensi. Interaksi jaringan diminimalkan hanya pada saat open (jika cache miss) dan close (jika ada perubahan). Konsistensi dikelola dengan model Stateful menggunakan Callback Promise, di mana server secara aktif memberitahu klien jika data mereka usang, menerapkan Session Semantics untuk pembaruan data.