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