Rancang Bangun File System Menggunakan NFS Semantic yang Berjalan pada User Space Lanang Aditya Nugraha, Wahyu Suadi, Baskoro Adi Pratomo Jurusan Teknik Informatika, Fakultas Teknologi Informasi, Institut Teknologi Sepuluh Nopember
1
[email protected] [email protected]
2 3
[email protected]
Abstract— Kebutuhan komputasi meningkat seiring dengan banyaknya manfaat dan kemudahan yang disediakan untuk membantu berbagai macam pekerjaan manusia. Perkembangan teknologi dan tingginya kebutuhan terhadap teknologi yang dapat mempermudah pekerjaan manusia menuntut komputasi yang cepat untuk data dalam skala besar. Hal ini tentu saja berimbas pada kebutuhan storage yang juga semakin meningkat. Untuk itu perlu adanya perhatian khusus terhadap masalah pengembangan dan improvisasi dari sisi storage itu sendiri. Dari sana muncul ide untuk menempatkan storage secara terpisah dari workstation. Sehingga dimunculkanlah ide untuk adanya sebuah storage server atau file server yang terpusat. Perkembangan teknologi storage ke arah model klien-server membangkitkan munculnya gairah baru dan improvisasi perkembangan protokol penyimpanan data yang dapat berjalan pada suatu jaringan. Munculnya berbagai macam protokol penyimpanan data dalam jaringan seperti NFS, AFS, dan CIFS. Dimana setiap jenis protokolnya memiliki fitur-fitur tertentu dan memiliki kemampuan spesifik masing-masing teknologi. Dari kesemuanya itu menunjukkan bahwa perkembangan storage di arahkan pada penyimpanan data secara terpusat. Mungkin mendatang diharapkan adanya penerapan teknologi baru semacam load balancer, fail over dan single mount point untuk meningkatkan realibilitas dari klien server storage itu sendiri. Pengaturan berkas dan system call akan menggunakan fungsifungsi yang disediakan oleh FUSE dengan memanfaatkan Pyro RPC sebagai media komunikasi dari klien ke server. Sehingga memungkinkan segala operasi berkas dilakukan langsung pada sisi remote. Dari uji performa FUSEFS (FUSE File System) ini didapat bahwa FUSEFS ini mampu beroperasi 20,08% lebih cepat dari NFS dan 42,24% lebih cepat daripada SMBFS. . Keywords— FUSEFS, Pyro, Python-fuse, RPC, NFS Semantic
I. 1.1
berjalan pada level user space. Sistem ini dibuat sebagai alternatif dari sistem penyimpanan yang ada saat ini. Harapannya dengan adanya sistem storage yang dibuat sendiri dan berjalan pada level user space ini fleksibilitas dari sistem storage akan sangat bermanfaat dan membantu. Dimana nantinya setiap orang dapat saling membantu menambahkan fitur pada sistem ini. Entah itu berupa permodelan fail over maupun implementasi single mount point pada sistem tersebut. Pemilihan penggunaan FUSE lebih dititik beratkan pada kemudahan pengaksesan, implementasi, dan penggunaan dari sistem itu sendiri nantinya. Sehingga apabila sistem tersebut telah dapat diselesaikan, maka user dapat menggunakan dalam sebuah jaringan. Ide pengambilan komunikasi melalui jaringan didapat dari protokol NFS yang kemudian akan didefinisikan sendiri tentang bagaimana media dan alur komunikasinya. 1.2
Tujuan Tujuan dari pembuatan tugas akhir ini adalah untuk mengimplementasikan sebuah filesystem yang memungkinkan pengguna untuk melakukan operasi berkas yang berada pada suatu storage server khusus. Dengan hadirnya ini, diharapkan akan membantu pengguna ketika menginginkan adanya alternatif penyimpanan data terpusat yang dapat dijalankan dari klien yang mampu menjalankan program berbasis python. Adapun manfaat yang dapat diambil dari aplikasi yang dibangun pada tugas akhir ini adalah memberikan sumbangsih pemikiran dan aplikasi bagi masyarakat, khususnya yang sering memanfaatkan dan melakukan perubahan pada data yang tersimpan secara terpusat.
PENDAHULUAN
1.3
Batasan masalah Permasalahan yang dibahas dalam Tugas Akhir ini memiliki beberapa batasan, diantaranya sebagai berikut: Filesystem dibuat agar berjalan memanfaatkan FUSEpython. Filesystem dibuat agar bisa diakses dengan model klien-server dalam jaringan lokal. Semantic yang ada pada filesystem ini nantinya adalah: create_file read_file create_directory delete_directory chmod_file chown_file list_file
Latar belakang masalah
Kebutuhan komputasi meningkat seiring dengan banyaknya manfaat dan kemudahan yang disediakan untuk membantu berbagai macam pekerjaan manusia. Perkembangan teknologi dan tingginya kebutuhan terhadap teknologi yang dapat mempermudah pekerjaan manusia menuntut komputasi yang cepat. Hal ini tentu saja berimbas pada kebutuhan storage yang juga semakin meningkat. Untuk itu perlu adanya perhatian khusus terhadap masalah pengembangan dan improvisasi dari sisi storage itu sendiri. Dari kenyataan yang ada tersebut muncul keinginan untuk mewujudkan adanya sistem penyimpanan terpusat yang
1
mudah dibaca. Setiap data yang ada pada file system disebut dengan file.
Protokol yang digunakan adalah TCP. II.
TINJAUAN PUSTAKA E.
Distributed File System File system terdistribusi adalah file system yang memungkinkan adanya pengaksesan dari host lain menggunakan jaringan komputer. Hal ini memungkinkan banyak pengguna dalam banyak komputer untuk saling berbagi data. Sisi klien tidak memiliki akses langsung kepada blok penyimpanan, namun berinteraksi melalui jaringan menggunakan protokol. Hal ini memungkinkan adanya pembatasan akses terhadap file system bergantung kepada kemampuan dan akses yang diberikan kepada klien dan bagaimana protokol itu sendiri dibentuk.
A.
FUSE Filesystem in Userspace (FUSE) merupakan kernel modul untuk sistem operasi Unix-like yang memungkinkan semua user dapat membuat file system mereka sendiri tanpa harus merubah kode kernelnya. FUSE berguna untuk membuat sebuah file system virtual. Tidak seperti file system pada umumnya yang benarbenar menyimpan data dan membaca data langsung dari media penyimpanan, virtual file system tidak benar-benar menyimpannya. Virtual file system berperan sebagai penerjemah dari file system sesungguhnya yang sudah ada pada suatu komputer. FUSE disediakan dalam berbagai macam bahasa pemrograman, salah satunya adalah dalam bahasa python. Walaupun FUSE mendukung berbagai macam bahasa pemrograman, namun FUSE masih kesulitan untuk dapat diterapkan pada sistem operasi windows.
F.
NFS (Network File System) NFS adalah sebuah file system terdistribusi yang memungkinkan komputer pada host lain pada suatu jaringan mengakses data yang tersimpan pada sisi server. NFS menggunakan RPC dalam komunikasinya antara klien dengan server yang dibungkus dengan protokol TCP sebagai kontrol dan UDP sebagai data. Dalam hal pengaksesannya sendiri, NFS mengolah data di sisi server dan tidak melakukan caching data seperti yang dilakukan pada AFS (Andrew File System). Apabila klien hendak memproses suatu berkas, maka klien akan mengirimkan request-request apa saja yang berhubungan dengan bagaimana berkas itu diolah. Server akan mengolah data dan hanya memberikan apa yang diminta oleh klien.
B.
Python Python adalah bahasa pemrograman tingkat tinggi yang dibuat dengan filosofi untuk mempermudah pembacaan kode. Python adalah bahasa intepreter yang mengklaim dirinya sebagai bahasa yang memiliki syntax yang jelas dan memiliki dukungan library yang lengkap. Penggunaan indentasi sebagai pemisah blok membuatnya unik apabila dibandingkan dengan bahasa pemrograman lainnya. Python mendukung berbagai macam paradigma pemrograman tidak hanya objek oriented saja. Memiliki fitur manajemen memori otomatis yang sama seperti apa yang G. dimiliki oleh Ruby dan Perl.
RPC (Remote Procedure Call) RPC adalah inter-process communication yang memungkinkan sebuah aplikasi untuk memanggil prosedur dan C. PYRO Pyro adalah kependekan dari Python Remote Objects. mengeksekusi sebuah alamat memori tanpa harus adanya Merupakan teknologi sistem pendistribusian objek yang koding mendetail mengenai interaksi remote tersebut. Yang dibutuhkan hanyalah kode penting dimana pengeksekusian memiliki performa tinggi dan ditulis dengan bahasa python. Pyro didesain untuk kemudahan pengguna. Dengan aplikasi berada pada sisi lokal. Komunikasi yang digunakan menggunakan pyro tidak perlu lagi mengkhawatirkan adalah menggunakan protokol TCP. bagaimana komunikasi berlangsung, karena saat menggunakan pyro, objek yang didefinisikan dapat dituliskan dengan cara III. PERANCANGAN PERANGKAT LUNAK seperti biasa. Dengan hanya beberapa potongan kode saja pyro Implementasi NFS-like ini menggunakan sistem FUSE mengatur segala komunikasi antara objek walaupun mereka terpisahkan pada mesin yang berbeda dalam sebuah jaringan. (Filesystem in Userspace) yang memanfaatkan keistimewaan Segala hal terperinci mengenai komunikasi soket telah diambil media sistem berkas virtual yang dikembangkan dengan Sistem dikembangkan alih, pemanggilan remote objek dapat dilakukan dengan bahasa pemrograman Python. berbasiskan kerangka FUSE dan memanfaatkan semua mudah semudah memanggil lokal objek. kelebihan yang dimiliki oleh sistem berkas virtualnya. Pemakaian bahasa pemrograman Python menjadikan sistem D. File System File system adalah metode untuk menyimpan dan dikembangkan diatas library yang sepenuhnya mendukung mengorganisir kumpulah data ke dalam bentuk yang dapat kerangka FUSE atau yang lebih dikenal dengan Library dengan mudah dibaca oleh manusia. Sebuah file system Python FUSE sehingga semua fungsi dasar yang terdapat pada menata data menjadi database data yang mudah untuk kerangka FUSE lebih disederhanakan dan tentunya memiliki dimanipulasi biasanya dengan hirarki organisasi data yang semua kelebihan yang dimiliki oleh bahasa pemrograman Python yang berbasiskan bahasa pemrograman intrepeter.
2
KLIEN SERVER Cara kerja ini, sepenuhnya dijalankan dalam area PERMINTAAN pengguna biasa dan tidak membutuhkan suatu hak akses PROGRAM istimewa. Ketika modul daemon dijalankan dengan menggunakan suatu direktori sebagai mountpointnya, semua MELAYANI RPC operasi sistem berkas yang terjadi di dalam direktori tersebut PERMINTAAN ditangani oleh library utama yang membangun sistem operasi UNIX (glibc) dan diteruskan pada area kernel. Pada area kernel ini FUSE yang telah menjadi modul standar kernel PANGGIL PROSEDUR sekarang ini menggunakan sebuah perkakas virtual (/dev/fuse) PROSES sebagai media komunikasi dengan area pengguna yang tentu saja modul FUSE pada tingkatan kernel ini yang KEMBALI menanganinya. Dari area kernel, modul FUSE akan PROGRAM JALAN meneruskan permintaan berkas dari pengguna di dalam KEMBALI REQUEST SELESAI direktori mountpoint tersebut pada proses daemon melalui library glibc dan library FUSE dan Python FUSE. Pada proses daemon ini semua permintaan file dari pengguna akan diterjemahkan dan disederhanakan oleh PythonFUSE untuk Gambar 3.2 Arsitektur Pyro I kemudian dilanjutkan dan dapat dilakukan operasi riil pada Dalam mengimplementasikan aplikasi ini digunakan storage server sepertin yang ditunjukkan pada gambar 3.1. standar yang ada dalam mendefinisikan sebuah sistem berkas. Pada sistem operasi yang berbasiskan UNIX terdapat standar operasi pada sistem berkas yang biasa disebut dengan UNIX FILESYSTEM SEMANTICS. Pada standar ini semua operasi pada sistem berkas mulai dari operasi direktori hingga operasi pada suatu berkas memiliki aturan-aturan tersendiri. Aliran data diagram untuk ini adalah seperti yang ditunjukkan pada gambar 3.3.
MULAI Proses pembacaan root path
Gambar 3.1 Arsitektur FUSEFS Proses pengiriman data dari klien ke server diusahakan semirip mungkin dengan apa yang dilakukan oleh NFS, yaitu menggunakan RPC. Untuk itu digunakanlah salah satu library RPC yang tersedia untuk bahasa pemrograman Python yang dinamakan dengan PyRO (Python Remote Object). Pyro akan mengatur semua mekanisme pemanggilan prosedur dan pengiriman parameter yang diinginkan oleh pengguna. Pengguna hanya perlu memperlakukan Pyro sebagai sebuah objek remote dimana dia memiliki semua prosedur yang sebenarnya ada pada sisi remote. Pyro Server Daemon akan menyediakan layanan pengaksesan berbagai macam prosedur yang telah disediakan. Klien hanya perlu mengakses alamat pyro tersebut dan langsung memanggil prosedur yang diinginkannya seperti yang ditunjukkan pada gambar 3.2.
INISIALISASI PYRO DAN FUSE
TIDAK VALID Pengecekan root path
VALID
MOUNTING
SELESAI
Gambar 3.3 Flow chart mounting
3
stfusefs = MyStat() stfusefs = ambil.atribut(path) if ( stfusefs.st_ino == 0 ): stfusefs.st_ino = 1 if ( stfusefs.st_atime == 0 ): stfusefs.st_atime = int(time()) if ( stfusefs.st_mtime == 0 ): stfusefs.st_mtime = st.st_atime if ( stfusefs.st_ctime == 0 ): stfusefs.st_ctime = st.st_atime return stfusefs Gambar 4.1.2 Pseudocode getattr klien Sisi server: def atribut(self, path): return os.lstat(pathRoot + path) Gambar 4.1.3 Pseudocode atribut server
Gambar 3.4 Arsitektur pyro II Dari gambar 3.4 dapat ditunjukkan bahwa komunikasi yang terjadi antara klien dan server seolah-olah terjadi komunikasi langsung antara aplikasi klien dengan aplikasi 4.2 Operasi READDIR server yang pada kenyataannya komunikasi terjadi pada level Operasi READDIR merupakan operasi pembacaan yang lebih rendah yang ditangani langsung oleh library RPC. direktori / melihat isi daripada suatu direktori pada suatu sistem berkas. Oleh aplikasi ini, operasi READDIR akan diarahkan pada path root di sisi remote. Nantinya isi dari IV. IMPLEMENTASI PERANGKAT LUNAK direktori tersebut merupakan data sebenarnya yang berada pada sisi remote. NFS-like menggunakan Python-fuse yang kemudian Implementasi dari proses READDIR adalah seperti diberi nama FUSEFS ini diimplementasikan sepenuhnya pada gambar 4.2.1 dan gambar 4.2.2 berikut: menggunakan bahasa pemrograman python. Berikut adalah Sisi klien: beberapa bagian prosedur-prosedur yang diterapkan di dalam def readdir(self, path, offset): FUSEFS ini. folder = ambil.bcdir(path) for e in folder: 4.1 Operasi GETATTR yield fuse.Direntry(e) Operasi GETATTR merupakan operasi dalam sistem Gambar 4.2.1 Pseudocode readdir klien berkas untuk mendapatkan atribut suatu objek dalam sistem Sisi server: berkas. def bcdir(self, path): Implementasi operasi GETATTR ini menggunakan return os.listdir(pathRoot + data struktur untuk mendefinisikan atribut sebuah inode. path) Atribut tersebut didefinisikan pada sebuah klas tersendiri Gambar 4.2.2 Pseudocode bcdir server seperti terlihat pada gambar 4.1.1 berikut: class MyStat(fuse.Stat): 4.3 Operasi UNLINK def __init__(self): Operasi UNLINK atau yang biasanya lebih dikenal self.st_mode = 0 sebagai operasi delete atau operasi penghapusan. self.st_ino = 0 Operasi UNLINK dapat diimplementasikan melalui self.st_dev = 0 baris kode pada gambar 4.3.1 dan gambar 4.3.2 berikut: self.st_nlink = 0 Sisi klien: self.st_uid = 0 def unlink(self, path): self.st_gid = 0 return ambil.hpslink(path) self.st_size = 0 self.st_atime = 0 Gambar 4.3.1 Pseudocode unlink klien self.st_mtime = 0 Sisi server: self.st_ctime = 0 def hpslink(self, path): Gambar 4.1.1 Pseudocode atribut return os.unlink(pathRoot + Proses-proses utama dalam operasi GETATTR ini path) diimplementasikan pada gambar 4.1.2 dan gambar 4.1.3 Gambar 4.3.2 Pseudocode hpslink server berikut: Operasi unlink ini merupakan salah satu operasi yang Sisi klien: sederhana dimana dia tinggal menghapus berkas yang berada def getattr(self, path):
4
pada path yang telah diberikan tanpa perlu memberikan kembalian nilai apapun.
Sisi klien: def open(self, path,flags): ambil.buka(path,flags) Gambar 4.7.1 Pseudocode open klien Sisi server: def buka(self, path, flags, *mode): hasil = os.open(pathRoot + path, flags, *mode) kirim = os.fdopen(hasil) return kirim Gambar 4.7.2 Pseudocode buka server
4.4
Operasi RMDIR Operasi RMDIR adalah operasi untuk menghapus suatu direktori. Karena direktori yang dihapus berada pada sisi remote maka operasi penghapusan direktori yang sebenarnya adalah dilakukan di sisi remote. Implementasi dari proses RMDIR adalah seperti pada gambar 4.4.1 dan gambar 4.4.2 berikut: Sisi klien: def rmdir(self, path): ambil.hpsdir(path) 4.8 Operasi READ Operasi READ merupakan proses pembacaan isi dari Gambar 4.4.1 Pseudocode rmdir klien suatu berkas. Sisi server: Implementasi operasi READ pada operasi-operasi def hpsdir(self, path): berkas secara garis besar dapat diperhatikan pada potongan os.rmdir(pathRoot + path) kode seperti pada gambar 4.8.1 dan gambar 4.8.2 berikut: Gambar 4.4.2 Pseudocode hpsdir server Sisi klien: def read(self, path, size, offset): 4.5 Operasi MKDIR return ambil.baca(path, size, Operasi MKDIR adalah operasi yang dilakukan untuk offset) membuat suatu direktori. Pembuatan direktori baru dilakukan Gambar 4.8.1 Pseudocode read klien secara tidak langsung karena harus memanggil prosedur Sisi server: pembuatan direktori baru yang terletak pada sisi remote. Implementasi dari operasi MKDIR adalah seperti def baca(self, path, size, offset): f = open(pathRoot + path, 'r') gambar 4.5.1 dan gambar 4.5.2 berikut: hasilbaca = f.read() Sisi klien: f.close() def mkdir(self, path, mode): return hasilbaca return ambil.bkindir(path, mode) Gambar 4.8.2 Pseudocode baca server Gambar 4.5.1 Pseudocode mkdir klien Sisi server: 4.9 Operasi WRITE def bkindir(self, path, mode): Operasi WRITE merupakan proses penulisan berkas, os.mkdir(pathRoot + path, mode) operasi ini memiliki beberapa kondisi yang bergantung pada Gambar 4.5.2 Pseudocode bkindir server
tanda maupun mode ketika berkas dibuka. Proses-proses dalam operasi WRITE dapat didefinisikan seperti seperti gambar 4.9.1 dan gambar 4.9.2 berikut: Sisi klien: def write(self, path, buf, offset): return ambil.tulis(path, buf, offset) Gambar 4.9.1 Pseudocode write klien Sisi server: def tulis(self, path, buf, offset): f = open(pathRoot + path, 'w') f.seek(offset) f.write(buf) f.close() return len(buf) Gambar 4.9.2 Pseudocode tulis server
4.6
Operasi UTIME Operasi UTIME merupakan operasi untuk merubah atribut waktu suatu berkas, dapat berupa waktu akses, dan waktu modifikasi. Perubahan waktu ini juga dikerjakan di sisi remote menggunakan standar waktu yang ada pada sisi remote. Implementasi dari operasi UTIME ini dapat dilihat dari potongan kode pada gambar 4.6.1 dan gambar 4.6.2. Sisi klien: def utime(self, path, times): ambil.waktu(path, times) Gambar 4.6.1 Pseudocode utime klien Sisi server: def waktu(self, path, times): os.utime(pathRoot + path, times) Gambar 4.6.2 Pseudocode waktu server
4.10
Operasi ACCESS Operasi ACCESS merupakan operasi untuk mendapatkan informasi mengenai apakah pengguna memiliki hak akses terhadap suatu berkas ataupun direktori. Karena berkas atau direktori tersebut berada pada sisi remote, maka operasi ACCESS sebenarnya dilakukan pada sisi remote. Sisi klien hanyalah melakukan panggilan terhadap prosedur ACCESS pada sisi remote.
4.7
Operasi OPEN Operasi OPEN merupakan operasi untuk membuka suatu berkas yang hendak diakses. Dari operasi open inilah nantinya suatu berkas dapat diakses atau diolah lebih lanjut oleh prosedur-prosedur yang lain. Implementasi dari operasi OPEN adalah seperti pada gambar 4.7.1 dan gambar 4.7.2 berikut:
5
Potongan kode berikut akan membantu menjelaskan bagaimana kerja dari operasi ACCESS pada sisi klien maupun sisi server seperti yang ditunjukkan pada gambar 4.10.1 dan gambar 4.10.2 berikut: Sisi klien: def access(self, path, mode): return ambil.akses(path, mode) Gambar 4.10.1 Pseudocode access klien Sisi server: def akses(self, path, mode): if not os.access(pathRoot + path, mode): return -EACCES Gambar 4.10.2 Pseudocode akses server Data di atas adalah sebagian saja dari sekian banyak operasi yang ada pada fuse. Sebenarnya fuse menyediakan banyak sekali system call yang mendukung untuk pengembangan ke arah file system yang lebih rumit. Fuse tidak memaksakan pengembangnya untuk wajib menggunakan semua fitur-fitur yang disediakan oleh fuse. Apabila system call memanggil fungsi dari fuse yang belum didefinisikan oleh pengguna maka akan muncul pesan error ‘function not implemented’ yang menunjukkan bahwa operasi tersebut tidak dapat dilakukan karena fungsi yang dipanggil belum didefinisikan.
touch
FUSEFS
SMBFS
LOCAL
20.784
9.940
516.392
1.771
rm
9.461
5.408
460.421
1.672
cat
3.562
6.295
7.810
1.604
mkdir
10.516
8.443
19.615
1.815
rmdir
27.373
21.060
20.040
1.568
chown
denied
6.208
denied
2.142
chmod
12.931
5.810
5.835
1.563
6.261
4.733
6.490
2.866
ls
Data di atas ini adalah data yang diambil setelah dilakukan ujicoba sebanyak lima kali untuk masing-masing operasi yang kemudian dicari nilai rata-ratanya untuk masingmasing operasi. Data di atas masih dibandingkan dengan pengaksesan dengan file system lokal yang menunjukkan bahwa file system lokal unggul di segala bidang karena memang file system lokal mengabaikan faktor-faktor yang ada pada jaringan pada saat menjalankan operasi-operasi tersebut. 600
UJI COBA DAN EVALUASI
400
NFS
200
FUSEFS SMBFS NFS
LOCAL
ls
chmod
rmdir
mkdir
touch
cat
0
Lingkungan implementasi perangkat lunak yang digunakan dalam pembuatan tugas akhir ini meliputi perangkat lunak dan perangkat keras. Lingkungan implementasi program diberikan sebagai berikut: 1. Perangkat keras Server: Komputer dengan dukungan prosesor Intel Core 2 Duo 2,93 GHz dengan 2 GB DDR2 Klien: Laptop dengan dukungan prosesor Intel Core 2 Duo 1,83 GHz dengan 2 GB DDR2 2. Perangkat lunak Server: Sistem operasi GNU Linux Debian Squeeze 6.0, Python 2.6.6, Pyro-3.9 Klien: Sistem operasi GNU Linux Debian Squeeze 6.0, Python-2.6.6, Pyro-3.9, python-2.4-fuse Uji coba dilakukan dan dibandingkan dengan NFS dan CIFS. Uji coba diambil data sebanyak 5 kali untuk operasi yang sama dan diambil waktu yang diperlukan untuk melakukan operasi untuk masing-masing operasi pada masingmasing file system. Dari lima data untuk masing-masing operasi tersebut maka akan diambil rata-ratanya. Berikut tabel 5.1 merupakan data uji performa dari FUSEFS ini: Tabel 5.1 Perbandingan kecepatan Response Time (milisecond)
rm
V.
NFS
Gambar 5.1 Perbandingan keseluruhan Dari gambar 5.1 di atas terlihat bahwa pengaksesan langsung pada local storage menghasilkan waktu eksekusi yang paling kecil di antara yang lain. Hal ini berarti pengaksesan berkas pada local storage jauh lebih cepat daripada menuju distributed storage. Namun apabila mengindahkan pengaksesan yang dilakukan secara lokal dan dibandingkan murni antara distributed file system maka hasilnya diperoleh seperti pada tabel 5.2 berikut: Tabel 5.2 Perbandingan kecepatan distributed system Response Time (milisecond) NFS touch
6
FUSEFS
SMBFS
20.784
9.940
516.392
rm
9.461
5.408
460.421
cat
3.562
6.295
7.810
mkdir
10.516
8.443
19.615
rmdir
27.373
21.060
20.040
chown
denied
6.208
denied
chmod
12.931
5.810
5.835
6.261
4.733
6.490
ls VI.
KESIMPULAN DAN SARAN
Dari serangkaian uji coba dan analisa yang dilakukan terhadap sistem dan telah dibandingkan dengan sistem sejenis yang lain, maka dapat dibuat sebuah kesimpulan antara lain: 1. Telah diimplementasikan pengiriman data antara klienserver dan penyimpanan berkas (storage server) menggunakan FUSE yang dapat diterapkan dengan fitur-fitur: a. Komunikasi seperti NFS (RPC) b. Standar operasi berkas NFS c. Pengoperasian berkas secara remote 2. Telah diimplementasikan semantic FUSE seperti write(), read(), open(), dan close() dengan hasil, sistem mampu beroperasi 20,08% lebih cepat dibandingkan dengan NFS dan 42,24% lebih cepat daripada SMBFS. 3. FUSEFS ini dapat sebagai alternatif distributed file system NFS dan telah diimplementasikan semirip mungkin dengan NFS dalam hal penggunaan RPC sebagai media komunikasinya. VII. 1. 2.
3. 4. 5. 6.
DAFTAR PUSTAKA
Martins, Carlos Wilkins, 2006. The Python Tutorial – The Python v2.7.1., http://docs.python.org/tutorial/ Martins, Carlos Wilkins, 2006. The Python Standard Library Python v2.7, http://docs.python.org/library/index.html/ Jeff Epler, Csaba Henk, 2009. Fuse Developers. http://fuse.scourgeforge.net/ B. Callaghan, Juni 1995. NFS Version 3 Protocol Spesification. London. Sun Microsystem, Inc. Mark Lutz dan David Ascher, 1999, Learning Python, O’Reilly Wesley J.Chun, 2000, Core Python Programming, Prentice Hall PTR
7