THOUSANDS OF FREE BLOGGER TEMPLATES »

Senin, 05 Januari 2009

VFS - Sistem Berkas Linux

VFS

Virtual File System atau Virtual File System Switch adalah suatu lapisan abstrak di atas sistem berkas yang sesungguhnya, yang menangani semua system call yang berhubungan dengan suatu sistem berkas di bawahnya. Tujuan dari VFS yaitu agar berbagai sistem berkas yang berbeda dapat di akses oleh aplikasi komputer dengan cara yang seragam. Gambar 21.1 menunjukkan hubungan antara Linux VFS dengan sistem berkas yang sesungguhnya. Virtual File System menyediakan antarmuka antara system call dengan sistem berkas yang sesungguhnya. Keberadaan VFS tentu dapat mengatasi perbedaan berbagai sistem berkas yang digunakan oleh berbagai sistem operasi saat ini seperti Windows, Mac OS, Linux, dan sebagainya, sehingga suatu aplikasi dapat mengakses berkas dari sistem berkas yang berbeda tanpa perlu mengetahui jenis sistem berkas yang digunakan dan detil implementasi dari masing-masing sistem berkas tersebut.

Sistem Berkas yang didukung oleh Linux VFS dapat dibagi menjadi tiga kategori:

1.

Disk-based Filesystem . Contohnya EXTFS, iso9660, FAT, dan sebagainya.
2.

Network-based Filesystem . Contohnya NFS, Coda, AFS, CIFS, dan sebagainya.
3.

Sistem berkas khusus. Contohnya /proc, RAMFS, dan DEVFS

Sistem berkas biasanya diimplementasikan secara object-oriented. Jadi, sistem berkas dapat dipandang sebagai sekumpulan objek yang terbentuk dari suatu struktur data dengan beberapa method/function yang berkaitan. Ide dibalik implementasi VFS yaitu suatu konsep yang disebut common file model. Singkatnya, setiap sistem berkas yang didukung oleh Linux harus dapat menerjemahkan physical organization yang diimplementasikannya ke dalam VFS common file model. Linux VFS common file model terdiri dari beberapa objek, yaitu superblock, inode, file, dan dentry.

Gambar 21.2. Interaksi antara proses dengan objek VFS
Interaksi antara proses dengan objek VFS

VFS Superblock

Setiap sistem berkas yang di-mount akan direpresentasikan oleh sebuah VFS Superblock. Superblock digunakan untuk menyimpan informasi mengenai partisi tersebut. Pada dasarnya superblock merupakan suatu struktur data yang menyimpan beberapa informasi sebagai berikut:

*

Device. Merupakan suatu device identifier, contohnya /dev/hda1 adalah harddisk pertama yang terdapat pada sistem memiliki device identifier 0x300.
*

Inode Pointer. Merupakan suatu pointer yang menunjuk ke inode pertama pada sistem berkas.
*

Blocksize. Menunjukkan ukuran suatu block dari sistem berkas, contohnya 1024 bytes.
*

Superblock operation. Merupakan suatu pointer ke sekumpulan superblock routine (fungsi) dari sistem berkas, contohnya read, write, dan sebagainya.
*

File System type. Menunjukkan tipe dari sistem berkas, contohnya EXT2, FAT, NTFS.
*

File System specific . Merupakan suatu pointer ke informasi yang dibutuhkan oleh sistem berkas.

Gambar 21.3. Ilustrasi VFS Superblock
Ilustrasi VFS Superblock

Beberapa operasi yang terdapat dalam VFS Superblock adalah alloc_inode, read_inode, write_inode, put_inode, delete_inode, dan sebagainya.
VFS Inode

VFS inode adalah abstraksi VFS untuk berkas. Setiap berkas, directory, dan data lainnya pada VFS direpresentasikan oleh satu dan hanya satu VFS inode. VFS inode hanya terdapat di memori kernel dan disimpan di inode chace selama masih dibutuhkan oleh sistem. Beberapa informasi yang disimpan oleh VFS inode yaitu:

*

Device. Menunjukan device identifier dari suatu device yang menyimpan berkas, ataupun directory.
*

Inode Number. Merupakan nomor inode yang unik dalam sistem berkas.
*

Mode. Menggambarkan apa yang direpresentasikan oleh VFS inode.
*

User ID. Merupakan identifier bagi pemilik berkas.
*

Time. Menunjukkan kapan pembuatan, modifikasi, dan penulisan suatu berkas.
*

Blocksize. Menunjukkan ukuran dari block yang digunakan oleh berkas.
*

Inode operations. Merupakan pointer ke suatu routine yang melakukan berbagai operasi pada inode.
*

Count. Menunjukkan berapa kali suatu sistem telah menggunakan suatu inode.
*

Lock. Digunakan untuk mengunci VFS inode.
*

Dirty. Mengindikasikan bahwa telah terjadi penulisan pada VFS inode, sehingga perubahan yang terjadi juga harus dituliskan ke sistem berkas yang sesungguhnya.
*

File system specific information . Menunjukkan informasi khusus yang dibutuhkan oleh suatu inode.

Gambar 21.4. Ilustrasi VFS Inode
Ilustrasi VFS Inode

Beberapa contoh operasi yang terdapat dalam VFS Inode yaitu create, lookup, mkdir, dan rmdir.
VFS File

VFS File (berkas VFS) menyimpan informasi yang berkaitan dengan suatu open file dan proses. Objek ini hanya akan ada dalam VFS jika suatu proses berinteraksi dengan suatu berkas dalam disk. Beberapa data yang disimpan dalam VFS berkas adalah mode, file_operation (method), file_version, file_owner, dan file_userid. Beberapa operasi dalam VFS Berkas antara lain Read, Write, Open, dan Check_media_change.

Gambar 21.5. Ilustrasi VFS File
Ilustrasi VFS File

VFS Dentry

Dentry atau Directory Entry merupakan suatu struktur data yang bertugas sebagai penerjemah dari suatu nama berkas ke inode-nya. Dentry disimpan dalam chace di VFS (dchace). Beberapa informasi yang disimpan dalam dentry adalah name, pointer to inode, pointer to parent dentry, list head of children, chains for lots of lists, dan use count. Beberapa operasi dalam VFS dentry antara lain D_compare, D_delete, dan D_release.

Gambar 21.6. Ilustrasi VFS Dentry
Ilustrasi VFS Dentry

Mounting Sistem Berkas

Ketika seorang pengguna Linux me- mounting suatu sistem berkas pada suatu direktori, maka hal pertama yang akan dilakukan oleh VFS adalah mencari tahu apakah kernel mendukung sistem berkas tersebut. Setelah mengetahui bahwa kernel mendukung sistem berkas tersebut, maka VFS akan mencari keberadaan superblock dari sistem berkas tersebut agar dapat mengakses semua berkas dan direktori yang terdapat di dalamnya, tetapi jika ternyata kernel tidak mendukung sistem berkas tersebut, maka VFS akan meminta untuk memasukkan modul yang berkaitan dengan sistem berkas tersebut agar sistem berkas tersebut dapat ditangani oleh VFS. Pada kasus yang lain, jika ternyata sistem berkas tersebut telah di- mount pada suatu direktori tertentu dan mount point-nya ingin dipindahkan ke direktori lain, maka VFS akan mencari VFS inode dari direktori baru yang akan dijadikan tempat mount point. Kemudian VFS akan memeriksa apakah pada direktori tersebut tidak ditemukan sistem berkas lain yang sedang di- mount disana, karena sistem berkas yang berbeda tidak dapat di-mount pada satu direktori yang sama.
Single Virtual File System

Pada Linux, virtual file system diimplementasikan dengan cara membuat satu sistem berkas abstrak, dan untuk mengakses sistem berkas yang sesungguhnya hanya melalui satu berkas (root). Single virtual file system hanya mencakup semua fitur dasar dari tiap sistem berkas yang terdapat pada sistem, sehingga akses ke struktur internal dari tiap sistem berkas tersebut mungkin akan terbatas, terutama pada program-program yang dirancang hanya untuk memanfaatkan Single VFS dibandingkan dengan implementasi melalui device driver yang mengizinkan akses secara universal. Kekurangan lainnya adalah performa yang relatif lebih rendah dibandingkan dengan implementasi VFS lain. Performa yang rendah ini muncul karena ketika penulisan ataupun penghapusan virtual file yang terdapat dalam virtual file sistem, harus dilakukan proses reshuffle.

Tidak ada komentar: