File System: FUSE di Linux
Fuse (Filesystem in Userspace) adalah sebuah modul kernel untuk OS Unix-like yang memungkinkan non-privileged users untuk membuat file sistemnya sendiri tanpa mengubah kode kernel. File sistem tersebut dapat dibuat dengan cara me-running kode FUSE dimana modul FUSE berperan sebagai ‘jembatan’ ke interface dari kernel yang sebenarnya.
Tidak seperti file sistem tradisional yang menyimpan dan mengambil data melalui disk, virtual filesystems (FUSE) tidak benar-benar menyimpan data. FUSE seolah-olah bertindak sebagai translation atau view dari file sistem/storage device yang sudah ada.
Cara Installasi FUSE:
Gunakan hak akses super user (sudo su)
Ketikan perintah ./configure
Ketikan perintah make
Ketikan perintah make install
Untuk template code FUSE dapat dilihat di: http://fuse.sourceforge.net/doxygen/fusexmp_8c.htm. Dari template tersebut kita dapat memodifikasi sesuai file system yang ingin kita ciptakan. Sebagai contoh saya ingin membuat sebuah filesystem dimana file dalam direktori tersebut hanya bisa di-copy sebanyak satu kali, sehingga file yang telah di-copy tersebut tidak dapat di-copy untuk kedua kalinya (dalam hal ini kita mengganti permission dari sebuah file untuk di kunci).
Code:
Jangan lupa untuk mengganti bagian static const char *dirpath dengan path di komputer anda
Kemudian compile dengan menggunakan perintah: gcc -Wall [namafile].c `pkg-config fuse --cflags --libs` -o [namafile]
Kemudian buat sebuah direktori tempat anda ingin me-mount file, misalnya: /tmp/fuse
Jalankan fuse: ./[namafile] /tmp/fuse
Kegunaan dan kerja tiap fungsi:
.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
Semoga bermanfaat dan selamat mencoba membuat FUSE anda sendiri! ^^














