"Berbicara file system di sistem operasi, tentunya kita telah mengenal beberapa nama seperti EXT2, EXT3 atau EXT4 yang saat ini telah terintegrasi di Linux CentOS 6.x. Meskipun begitu bukan berarti kita tidak dapat menggunakan jenis file system [FS] lain, karena sebenarnya ada begitu banyak alternatifnya bertebaran dengan lisensi gratis dan tentunya memilki keunggulan masing-masing." — dit

Intro

Adalah JFS [Journaled File System], sebuah alternatif FS besutan IBM yang kabarnya memiliki performa tak kalah cepat dengan EXT4. Berangkat dari hal itu membawa saya untuk mencoba FS yang satu ini di lingkungan Linux CentOS untuk disandingkan dengan EXT4. Karena JFS bukanlah FS default CentOS dan tidak terdapat di repositori CentOS, maka terlebih dahulu ada beberapa tahapan yang perlu dilakukan agar JFS dapat dikenali dan berfungsi di CentOS.

Instalasi JFSutils

Dimulai dengan mengintegrasikan aplikasi jfsutils yang berisi kumpulan tools untuk manajemen partisi JFS.

[root@pucit ~]# yum search jfs 
Loaded plugins: fastestmirror 
Loading mirror speeds from cached hostfile 
 * base: centos.biz.net.id 
 * extras: centos.biz.net.id 
 * updates: centos.biz.net.id 
====================== N/S Matched: jfs ======================= 
jfsutils.x86_64 : Utilities for managing the JFS filesystem 

  Name and summary matches only, use "search all" for everything. 
[root@dscs ~]# yum -y install jfsutils 
Loaded plugins: fastestmirror 
Loading mirror speeds from cached hostfile 
 * base: mirror.rndc.or.id 
 * extras: mirror.rndc.or.id 
 * updates: centos.biz.net.id 
Setting up Install Process 
Resolving Dependencies 
--> Running transaction check 
---> Package jfsutils.x86_64 0:1.1.13-9.el6 will be installed 
--> Finished Dependency Resolution 

Dependencies Resolved 

==================================================================== 
 Package        Arch     Version         Repository   Size 
==================================================================== 
Installing: 
 jfsutils       x86_64   1.1.13-9.el6    extras       238 k 

Transaction Summary 
==================================================================== 
Install       1 Package(s) 

Total download size: 238 k 
Installed size: 1.1 M 
Downloading Packages: 
jfsutils-1.1.13-9.el6.x86_64.rpm            | 238 kB     00:00 
Running rpm_check_debug 
Running Transaction Test 
Transaction Test Succeeded 
Running Transaction 
  Installing : jfsutils-1.1.13-9.el6.x86_64     1/1 
  Verifying  : jfsutils-1.1.13-9.el6.x86_64     1/1 

Installed: 
  jfsutils.x86_64 0:1.1.13-9.el6 

Complete! 
[root@pucit ~]#

Instalasi kmod-JFS

Berikutnya adalah menambahkan sebuah repositori baru untuk instalasi modul kernel JFS.

[root@pucit ~]# rpm -Uvh http://elrepo.org/elrepo-release-6-5.el6.elrepo.noarch.rpm 
Retrieving http://elrepo.org/elrepo-release-6-5.el6.elrepo.noarch.rpm 
warning: /var/tmp/rpm-tmp.JKz40n: Header V4 DSA/SHA1 Signature, 
key ID baadae52: NOKEY 
Preparing... ####################### [100%] 
1:elrepo-release ####################### [100%] 
[root@dscs ~]# 
[root@dscs ~]# yum search kmod-jfs 
Loaded plugins: fastestmirror 
Loading mirror speeds from cached hostfile 
* base: mirror.rndc.or.id 
* elrepo: mirror.smartmedia.net.id 
* extras: mirror.rndc.or.id 
* updates: centos.biz.net.id 
=================== N/S Matched: kmod-jfs ================== 
kmod-jfs.x86_64 : jfs kernel module(s) 

Name and summary matches only, use "search all" for everything. 
[root@dscs ~]# yum -y install kmod-jfs 
Loaded plugins: fastestmirror 
Loading mirror speeds from cached hostfile 
* base: mirror.rndc.or.id 
* elrepo: mirror.smartmedia.net.id 
* extras: mirror.rndc.or.id 
* updates: mirror.smartmedia.net.id 
Setting up Install Process 
Resolving Dependencies 
--> Running transaction check 
---> Package kmod-jfs.x86_64 0:0.0-1.el6.elrepo will be installed 
--> Finished Dependency Resolution 

Dependencies Resolved 

=================================================================== 
Package Arch Version Repository Size 
=================================================================== 
Installing: 
kmod-jfs x86_64 0.0-1.el6.elrepo elrepo 108 k 

Transaction Summary 
=================================================================== 
Install 1 Package(s) 

Total download size: 108 k 
Installed size: 302 k 
Downloading Packages: 
kmod-jfs-0.0-1.el6.elrepo.x86_64.rpm | 108 kB 00:00 
warning: rpmts_HdrFromFdno: Header V4 DSA/SHA1 Signature, key ID baadae52: NOKEY 
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-elrepo.org 
Importing GPG key 0xBAADAE52: 
Userid : elrepo.org (RPM Signing Key for elrepo.org)  
Package: elrepo-release-6-5.el6.elrepo.noarch (installed) 
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-elrepo.org 
Running rpm_check_debug 
Running Transaction Test 
Transaction Test Succeeded 
Running Transaction 
Warning: RPMDB altered outside of yum. 
Installing : kmod-jfs-0.0-1.el6.elrepo.x86_64 1/1 
Working. This may take some time ... 
Done. 
Verifying : kmod-jfs-0.0-1.el6.elrepo.x86_64 1/1 

Installed: 
kmod-jfs.x86_64 0:0.0-1.el6.elrepo 

Complete! 
[root@pucit ~]#

Pemilihan Partisi

Dalam contoh berikut ini ada 2 buah partisi masing-masing berukuran 160GB yang akan digunakan, yaitu sda8 dan sda9.

[root@pucit ~]# fdisk -l -c /dev/sda 

Disk /dev/sda: 500.1 GB, 500107862016 bytes 
255 heads, 63 sectors/track, 60801 cylinders 
Units = cylinders of 16065 * 512 = 8225280 bytes 
Sector size (logical/physical): 512 bytes / 4096 bytes 
I/O size (minimum/optimal): 4096 bytes / 4096 bytes 
Disk identifier: 0x0003f0b8 

Device Boot Start End Blocks Id System 
/dev/sda1 * 1 26 204800 83 Linux 
/dev/sda2 26 6400 51200000 83 Linux 
/dev/sda3 6400 8950 20480000 83 Linux 
/dev/sda4 8950 60802 416500760 5 Extended 
/dev/sda5 8950 15324 51200000 83 Linux 
/dev/sda6 15324 16599 10240000 83 Linux 
/dev/sda7 16599 17619 8192000 82 Linux swap / Solaris 
/dev/sda8 17619 38506 167777280 83 Linux 
/dev/sda9 38507 59395 167782400 83 Linux 
/dev/sda10 59395 60802 11302936 83 Linux 
[root@pucit ~]#

Journaled For Speed

Selesai dengan semua persiapan di tahapan sebelumnya, kini tiba waktunya untuk melaju lebih cepat bersama JFS.

  • Format Partisi

    2 buah partisi tak bertuan telah tersedia, yaitu sda8 yang akan diberi label sebagai /disk1 dan sda9 yang akan diberi label /disk2.

    [root@pucit ~]# time mkfs.jfs -L /disk1 /dev/sda8 
    mkfs.jfs version 1.1.13, 17-Jul-2008 
    Warning! All data on device /dev/sda8 will be lost! 
    Continue? (Y/N) y 
    \ 
    Format completed successfully. 
    167777280 kilobytes total disk space. 
    real 0m0.955s 
    user 0m0.005s 
    sys 0m0.060s 
    [root@pucit ~]# 
    [root@pucit ~]# time mkfs.jfs -L /disk2 /dev/sda9 
    mkfs.jfs version 1.1.13, 17-Jul-2008 
    Warning! All data on device /dev/sda9 will be lost! 
    Continue? (Y/N) y 
    \ 
    Format completed successfully. 
    167782400 kilobytes total disk space. 
    real 0m0.933s 
    user 0m0.003s 
    sys 0m0.062s 
    [root@pucit ~]#

    Di langkah ini Anda akan mendapati perbedaan yang sangat signifikan dibandingkan format partisi menggunakan EXT4, karena waktu yang dibutuhkan JFS sangat singkat. Hanya dalam 0,95 detik dan 0,93 detik masing-masing waktu yang diperlukan untuk proses format partisi sda8 dan sda9.

  • Periksa Status Partisi JFS

    Menggunakan perintah jfs_tune yang tersedia paska instalasi jfsutils di tahapan preparasi sebelumnya, Anda dapat melakukan pemeriksaan terhadap partisi JFS yang telah dibuat.

    [root@pucit ~]# jfs_tune -l /dev/sda8 
    jfs_tune version 1.1.13, 17-Jul-2008 
    JFS filesystem superblock: 
    JFS magic number: 'JFS1' 
    JFS version: 1 
    JFS state: clean 
    JFS flags: JFS_LINUX JFS_COMMIT JFS_GROUPCOMMIT JFS_INLINELOG 
    Aggregate block size: 4096 bytes 
    Aggregate size: 335478376 blocks 
    Physical block size: 512 bytes 
    Allocation group size: 524288 aggregate blocks 
    Log device number: 0x0 
    Filesystem creation: Thu Jul 11 01:09:39 2013 
    Volume label: '/disk1' 
    [root@pucit ~]# jfs_tune -l /dev/sda9 
    jfs_tune version 1.1.13, 17-Jul-2008 
    JFS filesystem superblock: 
    JFS magic number: 'JFS1' 
    JFS version: 1 
    JFS state: clean 
    JFS flags: JFS_LINUX JFS_COMMIT JFS_GROUPCOMMIT JFS_INLINELOG 
    Aggregate block size: 4096 bytes 
    Aggregate size: 335488616 blocks 
    Physical block size: 512 bytes 
    Allocation group size: 524288 aggregate blocks 
    Log device number: 0x0 
    Filesystem creation: Thu Jul 11 01:10:07 2013 
    Volume label: '/disk2' 
    [root@pucit ~]#

Menggunakan Partisi JFS

Tibalah di tahapan terakhir, yaitu menggunakan partisi JFS yang telah dibuat.

  • Pengaitan Partisi JFS

    Tidak berbeda dengan penggunaan EXT4, pengaitan partisi cukup dilakukan dengan perintah mount ke direktori yang mewakili nama partisinya.

    [root@pucit ~]# mkdir /disk1 /disk2 
    [root@pucit ~]# mount /dev/sda8 /disk1 
    [root@pucit ~]# mount /dev/sda9 /disk2
  • Periksa Status Partisi

    Eksekusi perintah mount di konsol untuk menampilkan semua partisi yang telah dikaitkan ke sistem berikut jenis FS-nya.

    [root@pucit ~]# mount 
    /dev/sda2 on / type ext4 (rw) 
    proc on /proc type proc (rw) 
    sysfs on /sys type sysfs (rw) 
    devpts on /dev/pts type devpts (rw,gid=5,mode=620) 
    tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0") 
    /dev/sda1 on /boot type ext4 (rw) 
    /dev/sda6 on /tmp type ext4 (rw) 
    /dev/sda5 on /usr type ext4 (rw) 
    /dev/sda3 on /var type ext4 (rw) 
    none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) 
    /dev/sda8 on /disk1 type jfs (rw) 
    /dev/sda9 on /disk2 type jfs (rw) 
    [root@pucit ~]#

    Sampai di tahap ini, Anda akan mendapati sda8 dan sda9 telah dikaitkan ke sistem dalam mode baca-tulis menggunakan JFS. Seperti biasa, Anda juga dapat mendaftarkan partisi yang telah dibuat di /etc/fstab agar otomatis dikaitkan saat sistem diaktifkan serta mode pengaitannya.

FSCK?

Bagi yang telah akrab dengan FS extended tentunya juga sudah pernah berjumpa dengan FSCK. Mungkin hal ini pula yang menimbulkan pertanyaan lebih lanjut tentang penggunaan JFS kaitannya dengan recovery partisi. Anda tidak perlu khawatir saat menggunakan JFS, karena tersedia pula fsck.jfs untuk keperluan fsck partisinya.

[root@pucit ~]# fsck.jfs 
fsck.jfs version 1.1.13, 17-Jul-2008 
processing started: 7/11/2013 2.56.15 

Error: Device not specified or command format error 

Usage: fsck.jfs [-afnpvV] [-j journal_device] [--omit_journal_replay] [--replay_journal_only] device 

Emergency help: 
-a Automatic repair. 
-f Force check even if file system is marked clean. 
-j journal_device Specify external journal device. 
-n Check read only, make no changes to the file system. 
-p Automatic repair. 
-v Be verbose. 
-V Print version information only. 
--omit_journal_replay Omit transaction log replay. 
--replay_journal_only Only replay the transaction log. 
[root@pucit ~]#

Berbekalkan beberapa parameter di atas, Anda dapat melakukan fsck sesuai kebutuhan terhadap sembarang partisi JFS. Tidak berbeda dengan proses format partisi mengguanakan JFS, proses fsck JFS juga membutuhkan waktu yang sangat singkat bila dibandingkan dengan FS extended.

Outro

Usai sudah ulasan kali ini tentang JFS. Walaupun sederhana, tentunya saya harapkan dapat memberikan pemahaman yang cukup mudah bagi Anda yang ingin berkenalan dengan JFS serta manajemen partisinya. Tentunya sekarang Anda bisa memiliki opsi dalam penggunaan FS di Linux untuk kebutuhan operasional pribadi maupun produksi. Selamat mencoba.