Assalamualaikum wr.wb
Ketemu lagi dengan saya, apakabar sobat sekalian??
Sekarang ini sudah waktunya saya berbagi ilmu buat sobat sekalian. Nah kali ini yang kita bahas adalah mengenai fuse. Ketika saya mencoba mencari apa itu fuse di Mbah Google, ini adalah top result yang keluar.
Hasil pencari yang paling tinggi mengatakan bahwa "Fuse is a type of low resistance resistor that acts as asacrificial device to provide overcurrent protection, of either the load or source circuit." Sobat ngerti nggak masksudnya apaan?
Jadi yang dimaksud fuse oleh Wikipedia Fuse Adalah fuse yang biasa kita kenal sebagai sekering. Eits, tapi saya tidak akan menjelaskan apa itu sekering lebih lanjut lagi. Sebab fuse yang kita maksud bukan lah sekering melainkan Fuse sebagai Filesystem in Userspace.Nah langsung kita bahas apa itu fuse sebenarnya.FUSE (File system in User Space) adalah sebuah kerangka sistem berkas pada area pengguna yang terdiri dari sebuah modul kernel (fuse.ko), sebuah pustaka pada area pengguna, dan sebuah utilitas untuk melakukan proses mount (fusermount). FUSE sendiri merupakan mekanisme sistem operasi pada umumnya Unix, Linux dan keluarganya yang memungkinkan pengguna yang memiliki akses terbatas menciptakan file sistem mereka sendiri tanpa mengubah kode kernel. Jadi intinya fuse itu gunanya adalah untuk mengendalikan akses terhadap data yang ada pada harddisk.
Adapun cara kerja dari fuse sendiri adalah sebagai berikut:
· fuse_main() (lib/helper.c) : sebagian fungsi main (userspace), program user memanggil fungsi fuse_main() kemudian fungsi fuse_mount() dipanggil.
· fuse_mount() (lib/mount.c) : menciptakan UNIX domain socket, kemudian di fork dan menciptakan child process yang menjalankan fusermount
· fusermount() (util/fusermount.c) : untuk mengecek apakah modul FUSE sudah di load. Kemudian membuka /dev/fuse dan mengirim file handle melalu UNIX domain socket kembali ke fungsi fuse_mount()
· fuse_new() (lib/fuse.c) : menciptakan struktur data yang berisi ruang yang digukanan untuk menyimpan data file system
· fuse_loop() (lib/fuse.c) : membaca file system calls dari /dev/fuse
Diagram kerja fuse
Module kernel FUSE dan FUSE library berhubungan melalui sebuah special file descriptor yang didapatkan dengan membuka /dev/fuse. FUSE kernal module meneruskan request ke aplikasi fuse anda. aplikasi anda memerintahkan fuse cara menjawab request. FUSE kernal module dan FUSE library berkomunikasi lewat file deskriptor spesial yang diperoleh dengan membuka /dev/fuse. file ini dapat terbuka berkali-kali dan file deskriptor yang diperoleh diteruskan ke mount syscall, untuk menyesuaikan deskriptor dengan filesystem mount.
Berikut ini beberapa jenis perintah yang tersedia pada fuse:
.getattr = xmp_getattr, => mengambil atribut file
.access = xmp_access, => mengambil direktori
.readlink = xmp_readlink, => membaca target dari symbolic link
.readdir = xmp_readdir, => membaca direktori
.mknod = xmp_mknod, => membuka node file
.mkdir = xmp_mkdir, => membuat directory
.symlink = xmp_symlink, => membua symbolic link
.unlink = xmp_unlink, => menghapus file
.rmdir = xmp_rmdir, => menghapus directory
.rename = xmp_rename, => memperbaharui nama file
.link = xmp_link, => menciptakan hardlink ke file
.chmod = xmp_chmod, => mengubah permission file
.chown = xmp_chown, => mengubah kepemilikan file
.truncate = xmp_truncate, => merubah ukuran file
.utimens = xmp_utimens, => mengubah akses dan modifikasi waktu dari file dengan resolusi nanosecond
.open = xmp_open, => membuka file
.read = xmp_read, => membaca data dari file yang dibuka
.write = xmp_write, => menulis data ke file yang telah dibuka
.release = xmp_release, => melepaskan file yang sudah dibuka
.fsync = xmp_fsync, => sinkronisasi isi file
Nah itu dia sedikit penjelasan tentang fuse pada kali ini. Semoga bermanfaat, wassalamualikum wr wb. :D





















