EXTFS Sistem Berkas Linux

Journaling Block Device Linux Journaling Block Device JBD menggunakan suatu catatan log untuk mencatat semua operasi yang mengubah konsistensi data seperti update, write, dan sebagainya dalam disk. Implementasi struktur data dari jurnal berbentuk seperti circular linked list, jadi jurnal dapat menggunakan ruang tersebut berulang-ulang jika jurnal telah penuh. Penulisan tiap atomic update ke jurnal akan menyebabkan ketidakefisienan. Untuk menghasilkan performa yang lebih baik, JBD menyatukan sekumpulan atomic update tersebut ke dalam satu transaksi dan menulisnya ke dalam jurnal. JBD memastikan setiap transaksi adalah transaksi yang atomik. Ketika suatu transaksi diproses oleh sistem, transaksi tersebut akan melalui lima state. Gambar 21.12. Transaction State Keterangan: 1. Running. Transaksi sedang berjalan di sistem dan dapat menerima operasi atomic update lain. Hanya ada satu transaksi yang dapat berstatus running dalam sistem.

2. Locked. Transaksi tidak lagi menerima operasi atomic update, dan belum semua atomic update

selesai dilakukan.

3. Flush. Semua atomic update yang terdapat dalam suatu transaksi telah selesai, sehingga

transaksi dapat ditulis ke jurnal.

4. Commit. Sistem akan menulis commit record yang menandakan penulisan ke jurnal telah

selesai.

5. Finished. Transaksi dan commit record telah selesai ditulis ke jurnal.

Contoh 21.2. Transaction state Jika ada suatu transaksi seperti tabel berikut ini: Tabel 21.2. No. Atomic Update 1 Write A = 2 2 Write A = 3 3 Write A = 4 4 Write A = 5 181 Maka transaksi tersebut akan melalui tahapan sebagai berikut: 1. Transaksi masuk running state. Transaksi menerima atomic update nomor 1, 2, 3, dan 4. 2. Transaksi berpindah ke locked state. Pada state ini transaksi tidak akan menerima atomic update yang baru. 3. Transaksi berpindah ke flush state. Semua informasi akan ditulis ke jurnal. 4. Pada tahap selanjutnya data yang terdapat di buffer akan ditulis ke disk. Data ditulis ke disk terlebih dahulu karena data tidak disimpan dalam jurnal. Setelah itu metadata dan juga journal descriptor yang menyimpan pemetaan metadata yang disimpan di jurnal ke lokasi sebenarnya di dalam disk akan ditulis ke jurnal. Jika terjadi crash pada tahap ini, maka sistem telah dapat dipulihkan. 5. Setelah penulisan ke jurnal selesai, maka transaksi akan berpindah ke commit state, dan menulis commit record. 6. Setelah selesai transaksi akan memasuki finished state. Dan dalam jangka waktu tertentu akan dilakukan checkpoint. Commit dan Checkpoint Suatu transaksi yang berjalan akan dituliskan ke disk dalam jangka waktu tertentu karena perubahan sebelumnya dilakukan hanya di bufferchace yang terdapat di memori utama. Suatu proses yang menulis perubahan data ke disk sekaligus memberi tanda bahwa seluruh atau sebagian transaksi tersebut telah selesai disebut transaction commit. Suatu jurnal hanya memiliki ruang yang terbatas untuk mencatat semua transaksi yang terjadi dalam sistem. Oleh karena itu, perlu adanya suatu mekanisme penggunaan kembali ruang tersebut ketika jurnal telah penuh. Untuk transaksi-transaksi yang telah menuliskan semua bloknya ke dalam disk, tidak perlu lagi ditulis ke jurnal. Suatu proses yang menulis transaksi yang telah selesai ke disk dan menandakan kembali tempat yang sesuai sebagai ruang kosong di jurnal disebut transaction checkpoint. Proses Recovery Pada saat sistem crash, sistem akan mengecek dalam jurnal dari saat terakhir checkpoint hingga ditemukan commit record. Jika tidak ditemukan commit record pada suatu transaksi, sistem akan mengabaikan transaksi tersebut karena data yang sebenarnya belum ditulis ke disk, namun jika sistem menemukan commit record pada transaksi tersebut, sistem akan melakukan proses redo. Gambar 21.13. Proses Recovery Berdasarkan gambar 21.13, dapat dilihat bahwa T1 belum mencapai commit point ketika sistem crash, tetapi pada T1 tidak akan dilakukan proses undo karena proses penulisan data masih belum dilakukan pada data yang sebenarnya. Sedangkan T2 yang telah mencapai commit point akan mengalamai proses redo, untuk memastikan data telah sempurna ditulis ke disk. Keberadaan jurnal menjamin konsistensi data yang terdapat dalam sistem berkas. Waktu yang diperlukan untuk melihat jurnal dan melakukan proses redo tentu lebih cepat dibandingkan jika kita harus memeriksa keseluruhan data yang terdapat di disk dengan perintah fsck . 182 Journaling File System Salah satu sistem berkas Linux yang mendukung journaling adalah Third Extended File System EXT3FS. EXT3FS sebenarnya adalah EXT2FS yang dilengkapi dengan fitur jurnal dan beberapa fitur lain. Salah satu keuntungan menggunakan sistem berkas ini adalah kemudahaannya dalam mengubah EXT2FS menjadi EXT3FS tanpa perlu mem- back up data dan me- restore data. Jurnal pada EXT3FS disimpan pada salah satu inode khusus dan dimungkinkan juga penggunaan satu jurnal untuk lebih dari satu sistem berkas sharing journal.

21.5. Sistem Berkas proc

Linux Process File System atau Sistem berkas proc adalah suatu sistem berkas semu yang digunakan untuk mengakses informasi mengenai proses dari kernel. Sistem berkas ini biasanya di- mount di bawah root dengan alamat proc . Sistem berkas proc tidak berisi berkas sebenarnya, tetapi berisi informasi tentang sistem, seperti sistem memori, konfigurasi perangkat keras, dan sebagainya. Untuk alasan inilah sistem berkas proc dapat dianggap sebagai suatu kontrol dan pusat informasi untuk kernel. Pada kenyataannya, banyak perintah dalam sistem Linux yang mengambil informasi yang terdapat pada berkas dalam proc , contohnya perintah lsmod list modules sama dengan perintah cat procmodules dan lspci list PCI bus sama dengan perintah cat procpci . Karena sistem berkas proc adalah VFS dan tidak berada dalam disk, tetapi dalam memori, maka setiap kali komputer dinyalakan sistem berkas proc yang baru akan dibuat. Jika diambil sebagian list directory dari root, maka akan muncul tampilan sebagai berikut. drwxr-xr-x 14 root root 291 Oct 25 18:47 opt dr-xr-xr-x 86 root root 0 May 09 2007 proc drwx--x--x 16 root root 841 Nov 20 00:10 root drwxr-xr-x 5 root root 4627 Oct 15 11:42 sbin Dapat dilihat bahwa ukuran dari directory proc adalah nol dan tanggal terakhir modifikasinya adalah tanggal kapan komputer dinyalakan. Hal ini menunjukkan bahwa sistem berkas proc tidak berada pada disk tetapi terdapat pada memori utama komputer. Selain itu waktu modifikasi yang selalu berubah menunjukkan bahwa isi proc selalu diperbarui oleh sistem. Isi dari directory proc Jika diambil sebagian daftar berkas dan subdirectory yang terdapat dalam proc , maka dapat dikelompokan menjadi dua bagian, yaitu:

1. Directory yang namanya adalah bilangan . Setiap directory yang namanya adalah bilangan,

sebenarnya adalah proses yang sedang berjalan di sistem, angka tersebut menunjukkan proses ID PID. Jika dicocokan dengan tabel proses maka akan ditemukan PID yang sesuai dengan semua nomor yang terdapat pada nama directory tersebut.

2. Berkas yang namanya adalah string .

Beberapa contoh directory yang namanya adalah bilangannomor : 1, 2, 3, 100, 109, 200, 462, 480, 495, 560, 570, 670, 687, 698, 777, 1002, 1200, 1302, 1666, 2000, 3005, 3444, 3455, 3566, 3766, 3877, dan sebagainya. Isi dari tiap direktori tersebut di ataranya ditunjukkan pada tabel berikut. Tabel 21.3. Nama Berkas yang terdapat dalam procPID Keterangan cmdline Command line arguments cwd Link to the current working directory 183 Nama Berkas yang terdapat dalam procPID Keterangan environ Nilai dari environment variables sistem exe Link to the executable of this process fd Berisi semua file descriptors maps Memory maps to executables and library files mem Memori yang dipakai oleh proses ini root Pointer ke direktori root stat Status dari proses ini statm Process memory status information status Process status in human readable Isi dari tiap direktori di atas tidak lain adalah Linux Process Control Block yang direalisasikan ke dalam bentuk struktur direktori. Penjelasan mengenai beberapa berkas yang namanya berupa string ditunjukkan pada tabel berikut. Tabel 21.4. Nama Directory Keterangan procapm Informasi mengenai Advanced Power Management. procbus Directory yang berisi informasi bus secara khusus. proccmdline Kernel command line. proccpuinfo Informasi mengenai prosesor tipe, model, performa. procdevices Daftar dari device driver yang dipakai oleh kernel. procdma Menunjukkan jalur DMA yang sedang digunakan pada masa tertentu. procdriver Informasi mengenai berbagai driver berada di sini. procfb Frame buffer devices. procfilesystems Daftar sistem berkas yang didukung oleh kernel. procfs File System parameter. procide Berisi informasi mengenai semua IDE device. procinterrupt Menunjukkan interrupt yang sedang dijalankan. procioport Menunjukkan port IO yang sendang digunakan. prockmsg Pesan ynag dikeluarkan oleh kernel. procksyms Kernel simbol tabel. procloadavg Tiga indikator kerja yang telah dilakukan oleh sistem selama 1, 5, dan 15 menit. proclock Kernel lock. procmodules Menunjukkan modul-modul yang dimasukkan ke dalam kernel. procmounts Sistem berkas yang telah di- mount. procpartitions Daftar partisi yang dikenali pada suatu sistem. procpci Informasi mengenai PCI bus. procrtc Real time clock. 184