1
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 lanang@its.ac.id 2 wahyu@its-sby.edu 3 baskoro@if.its.ac.id
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 fungsi-fungsi 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 SemanticI. PENDAHULUAN
1.1 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
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.
1.3 Batasan masalah
Permasalahan yang dibahas dalam Tugas Akhir ini memiliki beberapa batasan, diantaranya sebagai berikut:
Filesystem dibuat agar berjalan memanfaatkan FUSE-python.
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
2
Protokol yang digunakan adalah TCP.
II. TINJAUAN PUSTAKA 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 benar-benar 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.
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 dimiliki oleh Ruby dan Perl.
C. PYRO
Pyro adalah kependekan dari Python Remote Objects. Merupakan teknologi sistem pendistribusian objek yang memiliki performa tinggi dan ditulis dengan bahasa python.
Pyro didesain untuk kemudahan pengguna. Dengan menggunakan pyro tidak perlu lagi mengkhawatirkan bagaimana komunikasi berlangsung, karena saat menggunakan pyro, objek yang didefinisikan dapat dituliskan dengan cara seperti biasa.
Dengan hanya beberapa potongan kode saja pyro mengatur segala komunikasi antara objek walaupun mereka terpisahkan pada mesin yang berbeda dalam sebuah jaringan. Segala hal terperinci mengenai komunikasi soket telah diambil alih, pemanggilan remote objek dapat dilakukan dengan mudah semudah memanggil lokal objek.
D. File System
File system adalah metode untuk menyimpan dan mengorganisir kumpulah data ke dalam bentuk yang dapat dengan mudah dibaca oleh manusia. Sebuah file system menata data menjadi database data yang mudah untuk dimanipulasi biasanya dengan hirarki organisasi data yang
mudah dibaca. Setiap data yang ada pada file system disebut dengan file.
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.
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.
G. RPC (Remote Procedure Call)
RPC adalah inter-process communication yang memungkinkan sebuah aplikasi untuk memanggil prosedur dan mengeksekusi sebuah alamat memori tanpa harus adanya koding mendetail mengenai interaksi remote tersebut. Yang dibutuhkan hanyalah kode penting dimana pengeksekusian aplikasi berada pada sisi lokal. Komunikasi yang digunakan adalah menggunakan protokol TCP.
III. PERANCANGAN PERANGKAT LUNAK
Implementasi NFS-like ini menggunakan sistem FUSE (Filesystem in Userspace) yang memanfaatkan keistimewaan media sistem berkas virtual yang dikembangkan dengan bahasa pemrograman Python. Sistem dikembangkan berbasiskan kerangka FUSE dan memanfaatkan semua kelebihan yang dimiliki oleh sistem berkas virtualnya. Pemakaian bahasa pemrograman Python menjadikan sistem dikembangkan diatas library yang sepenuhnya mendukung kerangka FUSE atau yang lebih dikenal dengan Library Python FUSE sehingga semua fungsi dasar yang terdapat pada kerangka FUSE lebih disederhanakan dan tentunya memiliki semua kelebihan yang dimiliki oleh bahasa pemrograman Python yang berbasiskan bahasa pemrograman intrepeter.
3
Cara kerja ini, sepenuhnya dijalankan dalam area pengguna biasa dan tidak membutuhkan suatu hak akses istimewa. Ketika modul daemon dijalankan dengan menggunakan suatu direktori sebagai mountpointnya, semua operasi sistem berkas yang terjadi di dalam direktori tersebut 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 sekarang ini menggunakan sebuah perkakas virtual (/dev/fuse) sebagai media komunikasi dengan area pengguna yang tentu saja modul FUSE pada tingkatan kernel ini yang menanganinya. Dari area kernel, modul FUSE akan meneruskan permintaan berkas dari pengguna di dalam 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 kemudian dilanjutkan dan dapat dilakukan operasi riil pada storage server sepertin yang ditunjukkan pada gambar 3.1.
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.
KLIEN SERVER PERMINTAAN PROGRAM RPC MELAYANI PERMINTAAN PANGGIL PROSEDUR PROSES KEMBALI REQUEST SELESAI PROGRAM JALAN KEMBALI
Gambar 3.2 Arsitektur Pyro I
Dalam mengimplementasikan aplikasi ini digunakan 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
INISIALISASI PYRO DAN FUSE Proses pembacaan root pathSELESAI
Pengecekan root pathMOUNTING
TIDAK VALID
VALID
4 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 server yang pada kenyataannya komunikasi terjadi pada level yang lebih rendah yang ditangani langsung oleh library RPC.
IV. IMPLEMENTASI PERANGKAT LUNAK
NFS-like menggunakan Python-fuse yang kemudian diberi nama FUSEFS ini diimplementasikan sepenuhnya menggunakan bahasa pemrograman python. Berikut adalah beberapa bagian prosedur-prosedur yang diterapkan di dalam FUSEFS ini.
4.1 Operasi GETATTR
Operasi GETATTR merupakan operasi dalam sistem berkas untuk mendapatkan atribut suatu objek dalam sistem berkas.
Implementasi operasi GETATTR ini menggunakan data struktur untuk mendefinisikan atribut sebuah inode. Atribut tersebut didefinisikan pada sebuah klas tersendiri seperti terlihat pada gambar 4.1.1 berikut:
class MyStat(fuse.Stat): def __init__(self): self.st_mode = 0 self.st_ino = 0 self.st_dev = 0 self.st_nlink = 0 self.st_uid = 0 self.st_gid = 0 self.st_size = 0 self.st_atime = 0 self.st_mtime = 0 self.st_ctime = 0
Gambar 4.1.1 Pseudocode atribut
Proses-proses utama dalam operasi GETATTR ini diimplementasikan pada gambar 4.1.2 dan gambar 4.1.3 berikut:
Sisi klien:
def getattr(self, path):
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 4.2 Operasi READDIR
Operasi READDIR merupakan operasi pembacaan 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 direktori tersebut merupakan data sebenarnya yang berada pada sisi remote.
Implementasi dari proses READDIR adalah seperti pada gambar 4.2.1 dan gambar 4.2.2 berikut:
Sisi klien:
def readdir(self, path, offset): folder = ambil.bcdir(path) for e in folder:
yield fuse.Direntry(e)
Gambar 4.2.1 Pseudocode readdir klien
Sisi server:
def bcdir(self, path):
return os.listdir(pathRoot + path)
Gambar 4.2.2 Pseudocode bcdir server 4.3 Operasi UNLINK
Operasi UNLINK atau yang biasanya lebih dikenal sebagai operasi delete atau operasi penghapusan.
Operasi UNLINK dapat diimplementasikan melalui baris kode pada gambar 4.3.1 dan gambar 4.3.2 berikut:
Sisi klien:
def unlink(self, path):
return ambil.hpslink(path)
Gambar 4.3.1 Pseudocode unlink klien
Sisi server:
def hpslink(self, path):
return os.unlink(pathRoot + path)
Gambar 4.3.2 Pseudocode hpslink server
Operasi unlink ini merupakan salah satu operasi yang sederhana dimana dia tinggal menghapus berkas yang berada
5
pada path yang telah diberikan tanpa perlu memberikan kembalian nilai apapun.
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)
Gambar 4.4.1 Pseudocode rmdir klien
Sisi server:
def hpsdir(self, path):
os.rmdir(pathRoot + path)
Gambar 4.4.2 Pseudocode hpsdir server 4.5 Operasi MKDIR
Operasi MKDIR adalah operasi yang dilakukan untuk membuat suatu direktori. Pembuatan direktori baru dilakukan secara tidak langsung karena harus memanggil prosedur pembuatan direktori baru yang terletak pada sisi remote.
Implementasi dari operasi MKDIR adalah seperti gambar 4.5.1 dan gambar 4.5.2 berikut:
Sisi klien:
def mkdir(self, path, mode):
return ambil.bkindir(path, mode)
Gambar 4.5.1 Pseudocode mkdir klien
Sisi server:
def bkindir(self, path, mode):
os.mkdir(pathRoot + path, mode)
Gambar 4.5.2 Pseudocode bkindir 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.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:
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.8 Operasi READ
Operasi READ merupakan proses pembacaan isi dari suatu berkas.
Implementasi operasi READ pada operasi-operasi berkas secara garis besar dapat diperhatikan pada potongan kode seperti pada gambar 4.8.1 dan gambar 4.8.2 berikut:
Sisi klien:
def read(self, path, size, offset): return ambil.baca(path, size, offset)
Gambar 4.8.1 Pseudocode read klien
Sisi server:
def baca(self, path, size, offset): f = open(pathRoot + path, 'r') hasilbaca = f.read()
f.close()
return hasilbaca
Gambar 4.8.2 Pseudocode baca server 4.9 Operasi WRITE
Operasi WRITE merupakan proses penulisan berkas, operasi ini memiliki beberapa kondisi yang bergantung pada tanda maupun mode ketika berkas dibuka.
Proses-proses dalam operasi WRITE dapat didefi-nisikan 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.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.
6
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.
V. UJI COBA DAN EVALUASI
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 operasi pada masing-masing file system. Dari lima data untuk masing-masing-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)
NFS FUSEFS SMBFS LOCAL touch 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
ls 6.261 4.733 6.490 2.866
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 masing-masing 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.
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 FUSEFS SMBFS touch 20.784 9.940 516.392 rm 9.461 5.408 460.421 cat 3.562 6.295 7.810 NFS 0 200 400 600 to u ch rm cat mk d ir rm d ir ch mo d ls NFS FUSEFS SMBFS LOCAL
7
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 ls 6.261 4.733 6.490
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
klien-server dan penyimpanan berkas (storage klien-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. DAFTAR PUSTAKA
1. Martins, Carlos Wilkins, 2006. The Python Tutorial – The Python v2.7.1., http://docs.python.org/tutorial/
2. Martins, Carlos Wilkins, 2006. The Python Standard Library Python v2.7,
http://docs.python.org/library/index.html/
3. Jeff Epler, Csaba Henk, 2009. Fuse Developers.
http://fuse.scourgeforge.net/
4. B. Callaghan, Juni 1995. NFS Version 3 Protocol Spesification. London. Sun Microsystem, Inc.
5. Mark Lutz dan David Ascher, 1999, Learning Python, O’Reilly
6. Wesley J.Chun, 2000, Core Python Programming, Prentice Hall PTR