Wednesday, November 24, 2010

NFS (Network File System)


Network File System (NFS) merupakan sebuah protokol yang dikembangkan oleh Sun Microsystem pada tahun 1984
dan NFS didefinisikan dalam RFC 1094, 1813 dan 3530 sebagai DFS yang mengijikan sebuah komputer untuk mengakses file melalui network serasa akses file di disk local. NFS merupakan protokol yang sangat mendukung
dalam pengaplikasian suatu file system yang terdistribusi.

Tujuan dari NFS adalah untuk memungkinkan terjadinya pertukaran sistem berkas secara transparan antara mesin-mesin bebas tersebut. Hubungan yang terjadi di sini didasarkan pada hubungan client-server yang menggunakan perangkat lunak NFS server dan NFS client yang berjalan diatas workstation. NFS didesain agar dapat beroperasi di lingkungan ataupun jaringan yang heterogen yang meliputi mesin, platform, sistem operasi, dan arsitektur jaringan. Ketidaktergantungan ini didapat dari penggunaan RPC primitif yang dibangun diatas protokol External Data Representation (XDR).


Jika misalnya terjadi sebuah pertukaran sistem berkas antara server dan client , maka pertukaran sistem berkas yang terjadi disini harus dipastikan hanya berpengaruh pada tingkat client dan tidak mempengaruhi sisi server , karena server dan client adalah mesin yang berbeda dan sama-sama bebas. Untuk itu, mesin client harus melakukan operasi mount terlebih dahulu agar remote directory dapat diakses secara transparan.


Protokol NFS

NFS umumnya menggunakan protokol Remote Procedure Call (RPC) yang berjalan di atas UDP dan membuka port UDP dengan port number 2049 untuk komunikasi antara client dan server di dalam jaringan. Client NFS selanjutnya akan mengimpor sistem berkas remote dari server NFS, sementara server NFS mengekspor sistem berkas lokal kepada client.


Mesin-mesin yang menjalankan perangkat lunak NFS client dapat saling berhubungan dengan perangkat lunak NFS server untuk melakukan perintah operasi tertentu dengan menggunakan request RPC. Adapun operasi-operasi yang didukung oleh NFS adalah sebagai berikut:

a. Mencari berkas di dalam direktori.

b. Membaca kumpulan direktori.

c. Memanipulasi link dan direktori.

d. Mengakses atribut berkas.

e. Membaca dan menulis berkas.

Perlu diketahui bahwa server NFS bersifat stateless , yang artinya setiap request harus mengandung argumen yang penuh dan jelas sebab server NFS tidak menyimpan sejarah informasi request . Data yang dimodifikasi harus di commit ke server sebelum hasilnya di kembalikan ke client . NFS protokol tidak menyediakan mekanisme concurrency-control.


Beberapa manfaat NFS diantaranya ialah

– Lokal workstations menggunakan ruang disk lebih kecil

– Pemakai tidak harus membagi direktori home pada setiap mesin di jaringa

– Direktori home dapat di set up pada NFS server dan tersedia melalui jaring

– Device penyimpanan seperti floppy disk, CDROM drives, dll dapat digun

oleh mesin lainnya

Kerugian /Kelemahan NFS

– Desain awal hanya untuk jaringan yang lokal dan tertutup

– Security

– Congestion (Traffic yang tinggi bisa menyebabkan akses lambat)


AFS (Andrew File System)

Ada persamaan dan perbedaan antara AFS dan NFS.

Persamaan:

AFS sama seperti NFS menyediakan akses menuju shared files secara transaparant.

Akses menuju ke file AFS adalah melalui normal unix file primitives (tanpa

modifikasi atau rekompilasi). AFS kompatibel dengan NFS.

Perbedaan:

Secara desain dan implementasi, AFS berbeda dengan NFS, perbedaan utama, NFS

didesain untuk dapat menangani active users dengan jumlah yang lebih banyak

daripada distributed file systems yang lain. Kunci AFS untuk menangani jumlah

active users yang besar terletak pada kemampuan caching seluruh files pada

client node.


Karakter AFS

AFS mempunyai dua karakter desain yang unik :

• Whole file serving

Seluruh konten dari direktori dan file dikirim kepada komputer client oleh AFS servers (di AFS3, file yang ukurannya lebih dari 64kbytes ditransfer dalam 64kbyte chunks).

• Whole file caching


Copy dari sebuah file chunk yang telah ditransfer di komputer client disimpan dalam cache pada local disk.Cache disini mengandung ratusan file yang sering dipakai di dalam sebuah komputer.


CIFS (Common Internet File System)

CIFS atau common Internet File System merupakan sebuah implementasi dari protokol berbagi berkas/file-sharing Server Message Block (SMB) yang telah diusulkan agar menjadistandar Internet (statusnya saat ini masih menjadi draft), sehingga dapat diperoleh secara mudah. Perbedaan dari protokol SMB adalah bahwa protokol ini telah diperbaiki agar dapat digunakan melalui Internet. Protokol ini merupakan “saingan tidak langsung” dari protokol Network File System yang digunakan dalam keluarga sistem operasi UNIX. Protokol ini menggunakan arsitektur client/server. Microsoft telah memberikan draf rancangan protokol CIFS kepada Internet Engineering Task Force (IETF) untuk dijadikan standar Internet. Meskipun demikian, klien dan server CIFS telah ada dalam Windows 2000 ke atas.

Protokol CIFS mengizinkan sekelompok pengguna agar dapat berkolaborasi dan berbagi berkas melalui Internet atau intranet perusahaan. CIFS, saat ini banyak diimplementasikan, sehingga dukungannya pun semakin banyak, meski pada awalnya protokol ini hanya dimiliki oleh sistem operasi IBM OS/2 dan Microsoft Windows saja. Dengan adanya beberapa implementasi dari protokol SMB dalam berbagai sistem operasi, CIFS pun dapat didukung oleh kebanyakan sistem operasi. Salah satu implementasi yang populer, selain yang terdapat dalam Microsoft Windows dan IBM OS/2 adalah SAMBA yang dapat digunakan dalam keluarga sistem operasi UNIX.

CIFS telah dilihat sebagai kemungkinan pengganti protokol File Transfer Protocol (FTP) dan Network File System (NFS) sebagai protokol berbagi berkas dan sistem manajemen berkasnya. CIFS mendukung penggunaan password yang terenkripsi, serta nama berkas dengan pengodean Unicode. Selain itu CIFS juga dapat digunakan untuk mengaitkan (mount) sebuah sistem berkas jarak jauh sebagai sebuah direktori atau drive dalam mesin lokal, seolah-olah sistem berkas jarak jauh tersebut merupakan sistem berkas lokal.

Keunggulan CIFS dibandingkan dengan protokol FTP dan HTTP sebagai protokol berbagi berkas adalah bahwa CIFS mendukung akses baca dan tulis terhadap sebuah berkas secara simultan; sementara HTTP dan FTP hanya mendukung transfer berkas sederhana saja.

Sementara, jika dibandingkan dengan protokol NFS, CIFS menawarkan beberapa keunggulan peningkatan performa dengan adanya fitur read-ahead, write-behind dan fitur opportunistic locks.


IMPLEMENTASI

Beberapa implementasi yang dilakukan dari standar CIFS adalah sebagai berikut:

  • Microsoft Distributed File System (DFS) yang merupakan pengembangan pertama CIFS oleh Microsoft yang diterapkan dalam Windows 2000 Server dan Windows Server 2003.
  • smbfs, yang dapat digunakan oleh sebagian besar distribusi UNIX dan GNU/Linux, dan bersifat open-source. Dapat diperoleh secara bebas di alamat http://www.samba.org.
  • dan beberapa lainnya

OPERASI CIFS

Langkah-langkah yang terjadi dalam protokol CIFS dapat diringkas menjadi hal-hal seperti di bawah ini:

  1. Klien SMB/CIFS akan menentukan alamat IP dari server dan membuat koneksi dengan server SMB/CIFS dengan membuka port TCP 445 (koneksi langsung) atau port TCP 139 (jika protokol NetBIOS over TCP/IP digunakan) pada sisi server.
  2. Jika klien juga menggunakan protokol NetBIOS, maka sesi NetBIOS akan dibuat di atas koneksi TCP yang telah terjadi sebelumnya.
  3. Klien selanjutnya melakukan negosiasi mengenai dialek SMB yang hendak digunakan. Server akan memilih dialek yang dipahami oleh kedua belah pihak dan memberikan balasan kepada klien mengenai kemampuan server.
  4. Klien selanjutnya akan melakukan request terhadap sebuah sesi kepada server, dengan mengirimkan informasi keamanan (password, dan user name). Pertukaran informasi keamanan tersebut tergantung dari mekanisme yang digunakan oleh kedua belah pihak (bisa dengan enkripsi, atau tidak, contohnya adalah LMHash atau NTLM atau Kerberos). Jika sesi dapat dibuat, server akan meresponsnya dengan memberikan User Identifier (UID) kepada klien.
  5. Klien selanjutnya melakukan “browsing” terhadap direktori-direktori yang terdapat dalam server (dalam hal ini adalah direktori yang di-share oleh server) dengan menggunakan UID yang tadi diberikan. Setelah klien menentukan direktori mana yang hendak dibuka, maka server pun memberikan respons kepada klien dengan Tree Identifier (TID) yang berkaitan dengan direktori tersebut.
  6. Klien selanjutnya akan membuka berkas dalam direktori yang sebelumnya dibuka dengan menggunakan TID dan UID yang sebelumnya dimiliki oleh klien. Server meresponsnya dengan File Identifier (FID) untuk mengidentifikasikan berkas yang hendak dibuka oleh klien.
  7. Klien kemudian akan menggunakan UID, TID, dan FID untuk melakukan operasi (baca, tulis, modifikasi dan lain-lain) terhadap berkas yang bersangkutan.
  8. Ketika selesai, klien akan menutup berkas, menutup sesi koneksi dan terakhir menutup koneksi TCP yang akan menutup sesi file sharing dengan protokol SMB/CIFS. Jika protokol NetBIOS digunakan, menutup koneksi TCP juga akan menutup sesi NetBIOS.

Google file system

Assumption :

– Failure occurs often

– Huge files

– Large streaming reads

– Large appends

– Concurrent appends

– Bandwidth more important than latency

Google File System Basics

Komputasi terdistribusi adalah semua tentang jaringan beberapa komputer bersama-sama dan mengambil keuntungan dari sumber daya masing-masing dengan cara kolektif. Setiap komputer kontribusi beberapa sumber (seperti memori, pengolahan daya dan ruang hard drive) ke jaringan secara keseluruhan. Ternyata seluruh jaringan ke komputer besar, dengan komputer masing-masing individu yang bertindak sebagai pemroses dan perangkat penyimpanan data.

File di GFS cenderung sangat besar, biasanya dalam multi-gigabyte (GB) jangkauan. Mengakses dan memanipulasi file yang besar akan memakan banyak bandwidth jaringan. Bandwidth adalah kapasitas sistem untuk memindahkan data dari satu lokasi ke lokasi lain. GFS alamat masalah ini dengan memecah file menjadi potongan dari 64 megabyte (MB)

Google File Arsitektur Sistem

Google mengorganisir GFS ke dalam kelompok komputer. cluster hanya sebuah jaringan komputer. Setiap kelompok mungkin berisi ratusan atau bahkan ribuan mesin. Dalam cluster GFS ada tiga jenis entitas: klien, server master dan chunkservers.

Dalam dunia GFS, istilah “klien” mengacu pada entitas yang membuat permintaan file. Permintaan dapat berkisar dari mengambil dan memanipulasi file yang sudah ada untuk membuat file baru pada sistem. Klien dapat komputer lain atau aplikasi komputer.

Fungsi Google File System

Selain dari layanan dasar GFS menyediakan, ada beberapa fungsi khusus yang membantu menjaga sistem berjalan lancar.Sedangkan perancangan sistem, pengembang GFS tahu bahwa isu-isu tertentu pasti pop up berdasarkan arsitektur sistem.

Komponen GFS memberikan update sistem melalui pesan elektronik .Pesan singkat ini memungkinkan server master untuk tinggal saat ini dengan status masing-masing chunkserver’s.

========================================================================


Remote Method Invocation (RMI)

adalah sebuah teknik pemanggilan method remote yang lebih secara umum lebih baik daripada RPC. RMI menggunakan paradigma pemrograman berorientasi obyek (Object Oriented Programming). RMI memungkinkan kita untuk mengirim obyek sebagai parameter dari remote method. Dengan dibolehkannya program Java memanggil method pada remote obyek, RMI membuat pengguna dapat mengembangkan aplikasi Java yang terdistribusi pada

jaringan.

Aplikasi RMI seringkali terdiri dari dua program terpisah yaitu server dan client. Aplikasi server semacam ini biasanya membuat beberapa objek remote, menyediakan referensi terhadap objek-objek tersebut sehingga dapat diakses, serta menunggu client menginvoke/memanggil method dari objek-objek remote tersebut. Aplikasi client mendapatkan referensi remote ke satu atau lebih objek remote di server dan menjalankan method dari objek tersebut.

RMI menyediakan mekanisme dimana server dan client berkomunikasi danmemberikan informasi secara timbal balik. Aplikasi semacam ini seringkali disebut aplikasi objek terdistribusi.

Aplikasi objek terdistribusi seringkali melakukan hal berikut:

• Melokasikan objek remote: Aplikasi dapat menggunakan satu dari dua mekanisme untuk mendapatkan referensi ke objek remote. Aplikasi dapat mendaftarkan objek remote dengan fasilitas penamaan RMI (naming facility)

yaitu rmiregistry atau aplikasi dapat mem-pass dan mengembalikan referensi objek remote sebagai bagian dari operasi normal.

• Berkomunikasi dengan objek remote: Detail dari komunikasi antara objek

remote ditangani oleh RMI, bagi programmer komunikasi remote tampak

seperti invokasi method Java standar.

• Memanggil (load) bytecode untuk objek yang di-pass: Karena RMI mengizinkan pemanggil (caller) untuk mem-pass objek ke objek remote, RMI menyediakan mekanisme yang diperlukan objek me-load kode objek, sebagaimana juga mentransmisikan datanya.

Ilustrasi berikut menggambarkan aplikasi RMI terdistribusi yang menggunakan registry untuk mendapatkan referensi ke objek remote. Server memanggil registry untuk mengasosiasikan (mengikat) suatu nama dengan objek remote. Client mencari objek remote dengan namanya pada registry server dan meng-invoke method dari objek. Ilustrasi ini juga menunjukkan sistem RMI menggunakan Web server untuk memanggil class bytecodes, dari server ke client dan dari client ke server, untuk objek-objek yang diperlukan.

Langkah-Langkah Pembuatan Program dengan RMI

Dalam RMI, semua informasi tentang satu pelayanan server disediakan dalam suatu definisi remote interface. Dengan melihat pada definisi interface, seorang pemrogram dapat memberitahukan method apa yang dapat dikerjakan oleh server, meliputi data apa yang diterima dan data apa yang akan dikirim sebagai tanggapan.

Definisi yang ada pada remote interface menentukan karakteristik methods yang disediakan server yang dapat dilihat oleh client. Client programmer harus dapat mengetahui methods apa yang disediakan server dan bagaimana memanggilnya langsung dengan melihat ke remote interface. Client mendapatkan referensi ke remote

object melalui RMI registry.

Membangun suatu aplikasi terdistribusi menggunakan RMI meliputi 6 langkah. Keenam langkah tersebut adalah:

1. Mendefinisikan remote interface

2. Implementasi remote interface dan server

3. Pengembangan client (atau applet) yang menggunakan remote interface

4. Mengkompilasi source files dan mem-buat stub and skeletons

5. Memulai (start) RMI registry

6. Menjalankan server dan client

Model RMI – Remote Interface

● Remote interface – mendefinisikan method apa saj ayang dapat diakses oleh client

● Pada contoh gambar slide 8, objek B dan F harus memiliki remote interface

● Contoh :

– CORBA menggunakan IDL untuk definisi Interface objek server

– RMI menggunakan interface Java untuk definisi objek server

Protokol Request/Reply untuk RMI

public byte[] doOperation (RemoteObjectRef o, int methodId, byte[] arguments)sends a request message to the remote object and returns the reply. The arguments specify the remote object, the method to be invoked and the arguments of that method.

public byte[] getRequest (); acquires a client request via the server port.

public void sendReply (byte[] reply, InetAddress clientHost, int clientPort); sends the reply message reply to the client at its Internet address and port.

Masalah Perancangan untuk RMI

● Semantik Pemanggilan RMI

– doOperation() dapat diterapkan dalam beberapa cara untukmenyediakan jaminan pengiriman yang berbeda

● Retry request message : pengiriman ulang requestwalaupun reply diterima atau server diasumsikan gagal

● Duplicate filtering : apakah dilakukan filtering terhadaprequest yang sama atau tidak

– Ketika semua request yang dikirim ulang diterima server, ada dua kemungkinan yang dilakukan objek server

● Retransmission of result : apakah mampu menyimpan (caching) hasil reply, sehingga jika memang perlu melakukan

retransmisi ulang tidak perlu melakukan eksekusi kembali

● Repeated execution prosedur

– Dari dua kemungkinan-kemungkinan dua operasi tersebut, memunculkan beberapa semantik invocation.

Implementasi RMI

● Remote Reference Module

– Translasi antara lokal dan remote objek reference menggunakan remote object table

● Berisi data semua remote object dan proxy yang dipelihara oleh server

● Digunakan ketika marshaling dan unmarshaling remote object reference

● RMI Sublayer terdiri dari

– Proxy (di client), tempat penyimpan lokal untuk remote objek

– Dispatcher (di server), menerima request dan menggunakan methodID untuk memilih message di skeleton

– Skeleton (di server), menerapkan method dalam remote interface

● Argumen-argument unmarshaling

● Memanggil method yang sesuai pada remote objek

● Menunggu selesainya pemanggilan

● Melakukan marshaling hasil

Keuntungan RMI:

  • ¨Salahsatu keuntungan RMI adalah kemampuan untuk download bytecodes (code) dari suatu object’s class, jika class tsb tidak terdefinisikan di VM-nya penerima.
  • ¨Type-type dan metode-metode object (class), yang terletak dalam satu VM, dapat dikirim ke VM yang lain, yang mungkin saja remote.
  • ¨Sifat-sifat object yang terkirim ini tidak berubah sama sekali

Kelemahan RMI:

proses pembukaan socket yang kadang-kadang tidak dapat diimplementasikan lewat jaringan internet, tapi hal ini bisa diatasi dengan menggunakan Spring HttpInvoker, sama persis dengan RMI tapi lewat protokol HTTP.


===========================================

Remote Procedure Call (RPC) adalah sebuah metode yang memungkinkan kita untuk mengakses sebuah prosedur yang berada di komputer lain. Untuk dapat melakukan ini sebuah server harus menyediakan layanan remote procedure.Pendekatan yang dilakuan adalah sebuah server membuka socket, lalu menunggu client yang meminta prosedur yang disediakan oleh server. Bila client tidak tahu haruS menghubungi port yang mana, client bisa me-request kepada sebuah matchmaker pada sebuah RPC port yang tetap. Matchmaker akan memberikan port apa yang digunakan oleh prosedur yang diminta client.

RPC masih menggunakan cara primitif dalam pemrograman, yaitu menggunakan paradigma procedural programming. Hal itu membuat kita sulit ketika menyediakan banyak remote procedure. RPC menggunakan socket untuk berkomunikasi dengan proses lainnya. Pada sistem seperti SUN, RPC secara default sudah ter-install kedalam sistemnya, biasanya RPC ini digunakan untuk administrasi sistem. Sehingga seorang administrator jaringan dapat mengakses sistemnya dan mengelola sistemnya dari mana saja, selama sistemnya terhubung ke jaringan.

Kelebihan RPC

  • ƒ Relatif mudah digunakan :

Pemanggilan remote procedure tidak jauh berbeda dibandingkan pemanggilan procedure. Sehingga pemrogram dapat berkonsentrasi pada software logic, tidak perlu memikirkan low level details seperti socket, marshalling & unmarshalling.

  • ƒ Robust (Sempurna):

Sejak th 1980-an RPC telah banyak digunakan dlm pengembangan mission- critical application yg memerlukan scalability, fault tolerance, & reliability.

Kekurangan RPC

  • ƒ Tidak fleksibel terhadap perubahan:

    Static relationship between client & server at run-time.

  • Berdasarkan prosedural/structured programming yang sudah ketinggalan jaman dibandingkan OOP.

Struktur Protokol Message RPC

  • Call Message
  • Dilakukan oleh klien, dimana meminta server untuk mengeksekusi suatu prosedur.
  • Terdapat nilai-nilai unsigned integer yang digunakan untuk mengidentifikasi prosedurremote yang diminta:

1. Nomor Program
2. Nomor Versi dari Program
3. Nomor Prosedur

  • Reply Message
  • Dikirimkan oleh server jaringan, bervariasi tergantung

    apakah call messages yang diminta klien diterima

    atau ditolak.

  • Mengandung informasi:

1. RPM mengeksekusi call message dengan sukses

2. Implementasi remote tidak sesuai dengan protokol yang digunakan (versi yang lebih tinggi atau lebih rendah ditolak)

3.Program remote tidak tersedia pada sistem remote

4. Program remote tidak mendukung versi yang diminta klien

5. Nomor prosedur yang diminta tidak ada

Fitur dalam RPC

1. Batching Calls

Mengijinkan klien untuk mengirim message calls ke server dalam jumlah besar secara berurutan.

2. Broadcasting Calls

Menijinkan klien untuk mengirimkan paket data ke jaringan dan menunggu balasan dari network.

3. Callback Procedures

Mengijinkan server untuk bertindak sebagai klien dan melakukan PRC callback ke proses yang dijalankan klien.

4. Select Subrutin

Memeriksa deskripsi suatu file dan messages dalamantrian untuk melihat apakah siap dibaca atau ditulis,atau ditahan. (mengijinkan server untuk menginterupsi suatu aktivitas.

Prinsip RPC dalam program Client-Server

Skema RPC ini dilakukan juga pada proses-proses yang running di komputer berlainan

  • ƒ Sebelum mekanisme RPC digunakan, data harus di-packaging ke dalam formattransimisi. Langkah ini dinamakan marshalling

  • ƒProxy bertanggung jawab untuk marshalling data, kemudian mengirimkan data

    dan meminta instans dari komponen (remote)

  • ƒStub menerima request, unmarshall data, dan memanggil method yang diminta. Kemudian proses mengembalikan nilai yang diinginkan .

Langkah-langkah dalam RPC

1. Prosedur client memanggil client stub

2. Client stub membuat pesan dan memanggil OS client

3. OS client mengirim pesan ke OS server

4. OS server memberikan pesan ke server stub

5. Server stub meng-unpack parameter-parameter untuk memanggil server

6. Server mengerjakan operasi, dan mengembalikan hasilnya ke server stub

7. Server stub mem-pack hasil tsb dan memanggil OS server

8. OS server mengirim pesan (hasil) ke OS client

9. OS client memberikan pesan tersebut ke client stub

10. Client stub meng-unpack hasil dan mengembalikan hasil tersebut ke

client

Fitur dalam RPC

  • Batching Calls:Fitur Batching calls mengijinkan klien untuk mengirim message calls ke server dalam jumlah besar secara sequence ( berurutan )
  • Broadcasting Call:Fitur Broadcasting mengijinkan klien untuk mengirimkan paket data kejaringan dan menunggu balasan dari network. FItur ini menggunakanprotokol yang berbasiskan paket data seperti UDP/IP sebagai mediumnya.Broadcast RPC membutuhkan layanan port mapper RPC untukmengimplementasikanfung sinyA
  • Callback ProcedureS:Fitur Callback Procedures mengijinkan server untuk bertindak sebagai
  • Menggunakan select SubrutiN:Fitur ini akan memeriksa deskripsi dari suatu file dan messages dalamantrian untuk melihat apakah mereka siap untuk dibaca (diterima) atauditulis (dikirim), atau mereka dalam kondisi ditahan sementara. Prosedurini mengijinkan server untuk menginterupsi suatu aktivitas, memeriksadatanya, dan kemudian melanjutkan proses aktivitas tersebut.

Object Remote

Meskipun teknologi RPC ini relatif sudah memberikan kenyamanan bagi developer, tapi perkembangan yang terjadi di bidang pemrograman berorientasi objek akhirnya menuntut kehadiran teknologi baru. Sederet teknologi akhirnya benar-benar muncul, antara lain;RMI (Remote Method Invocation),CORBA(Common Object Request Broker Architecture), dan SOAP (Simple Object Access Protocol).

No comments:

Post a Comment

masukkan komentar anda.Komentar yang anda berikan sangat berarti bagi kami [ pada "beri komentar sebagai" pilih nama/URL,,kemudian masukkan nama anda klik oke ]