MODUL 8 LINUX FILESYSTEMS AND THE VFS (ADINUSA)

  Modul 8 ini membahas sistem file Linux dan Virtual Filesystem (VFS), mencakup struktur dasar filesystem, inodes, hard dan soft links, serta berbagai jenis filesystem seperti Ext4 dan XFS. Juga dijelaskan tentang journaling, superblock, block groups, serta teknik pemeliharaan dan backup untuk memastikan efisiensi dan keandalan data.

Filesystem Basics: Mengulas konsep dasar tentang bagaimana filesystem bekerja dan struktur arsitekturnya.

  Filesystem adalah cara sistem operasi mengatur dan menyimpan file di dalam penyimpanan. Program tidak langsung menyimpan file ke perangkat keras, tetapi menggunakan filesystem sebagai perantara.

Struktur filesystem di Linux berbentuk pohon:
  • Direktori bisa berisi file atau direktori lain.
  • Semua file dan direktori berada di bawah root directory ("/").

Linux menggunakan Virtual Filesystem (VFS) untuk menghubungkan berbagai jenis filesystem agar terlihat sebagai satu kesatuan. Filesystem bisa ada di dalam partisi fisik atau partisi logis yang dikelola oleh Logical Volume Manager (LVM). Selain itu, filesystem juga bisa berbasis jaringan, sehingga penyimpanannya tersembunyi dari sistem lokal.

Inodes: Penjelasan tentang inodes dan bagaimana mereka memainkan peran penting dalam pengelolaan data pada filesystem.

  Inodes adalah struktur data dalam sistem file Linux yang menyimpan informasi tentang file, tetapi tidak menyimpan nama file. Nama file disimpan dalam direktori, sementara inode berisi atribut penting tentang file tersebut.

Informasi yang disimpan dalam inode:

  • Hak akses (permissions): Menentukan siapa yang bisa membaca, menulis, atau mengeksekusi file.
  • Pemilik file: Terdiri dari user ID (UID) dan group ID (GID).
  • Ukuran file: Menyimpan ukuran file dalam byte.
  • Waktu terkait file:
    1. Waktu terakhir file diakses.
    2. Waktu terakhir file diubah.
    3. Waktu inode terakhir diubah.

Setiap file yang ada dalam filesystem Linux memiliki inode sendiri yang digunakan oleh sistem untuk melacak atributnya. Saat sistem mengakses file, yang digunakan adalah inode, bukan nama file.

Hard and Soft Links: Perbedaan antara hard links dan symbolic (soft) links, serta situasi di mana masing-masing lebih berguna.

  Dalam sistem file Linux, setiap file memiliki inode yang menyimpan informasi seperti ukuran, hak akses, dan kepemilikan. Nama file di dalam direktori hanya berfungsi sebagai referensi ke inode tersebut. Linux menyediakan dua jenis link untuk menghubungkan nama file dengan inode: Hard Link dan Soft Link (Symbolic Link).

1. Hard Link

  • Hard link adalah referensi langsung ke inode yang sama seperti file aslinya.
  • Semua hard link ke file memiliki inode yang sama, sehingga perubahan yang dilakukan pada satu hard link juga berlaku untuk semua hard link lainnya.
  • Hard link hanya bisa dibuat dalam satu filesystem yang sama.
  • Jika file asli dihapus, data tetap ada karena inode masih memiliki referensi dari hard link lain.

2. Soft Link (Symbolic Link)

  • Soft link adalah referensi ke nama file, bukan ke inode langsung.
  • Bisa berada di filesystem yang berbeda karena tidak terikat ke inode asli.
  • Jika file aslinya dihapus atau dipindahkan, soft link menjadi "dangling" (rusak) karena tidak bisa menemukan targetnya.

Perbedaan Utama:

  • Hard link menghubungkan langsung ke inode, sedangkan soft link menghubungkan ke nama file.
  • Hard link hanya bisa dibuat dalam satu filesystem, sedangkan soft link bisa di filesystem yang berbeda.
  • Jika file asli dihapus, hard link tetap bisa mengakses datanya, sedangkan soft link menjadi rusak.
  • Hard link tidak bisa dibuat pada direktori, sedangkan soft link bisa.

Contoh Penggunaan di Terminal:

Pindah ke direktori /tmp (opsional):
cd /tmp

Buat file kosong:
touch file

Buat soft link (symbolic link):
ln -s file file-soft

Buat hard link:
ln file file-hard

Lihat daftar file dengan inode:
ls -li file*

Pada hasil perintah tersebut:

  • Hard link (file-hard) memiliki inode yang sama dengan file asli.
  • Soft link (file-soft) hanya mengarah ke nama file asli dan ditampilkan dengan panah (->).

Dengan memahami perbedaan ini, pengguna Linux bisa memilih jenis link yang sesuai untuk kebutuhan mereka, misalnya menggunakan hard link untuk redundansi data dalam satu filesystem atau soft link untuk referensi fleksibel ke file di lokasi berbeda.

Available Filesystems: Diskusi tentang filesystem populer seperti ext4, XFS, dan Btrfs, serta keunggulan yang ditawarkan oleh masing-masing.

Sistem File yang Tersedia di Linux

Linux mendukung lebih banyak jenis sistem file dibandingkan sistem operasi lain. Fleksibilitas ini menjadi salah satu faktor utama kesuksesannya. Sebagian besar sistem file di Linux memiliki akses baca/tulis penuh, sementara beberapa hanya mendukung akses baca saja.

Beberapa sistem file yang umum digunakan di Linux meliputi:

  • ext4 – Sistem file default di banyak distribusi Linux modern.
  • xfs – Cocok untuk penyimpanan skala besar dengan kinerja tinggi.
  • btrfs – Mendukung fitur seperti snapshot dan kompresi data.
  • squashfs – Digunakan untuk sistem file hanya-baca, sering digunakan di live CD/DVD.
  • nfs – Digunakan untuk berbagi file melalui jaringan.
  • vfat – Kompatibel dengan sistem Windows untuk penyimpanan yang dapat diakses oleh berbagai OS.

Untuk melihat daftar sistem file yang didukung dalam sistem Linux, gunakan perintah berikut di terminal:

cat /proc/filesystems

Dengan memahami berbagai jenis sistem file ini, pengguna bisa memilih yang paling sesuai dengan kebutuhan mereka, baik untuk penggunaan pribadi, server, atau penyimpanan jaringan.

Filesystem Varieties: Menjelaskan berbagai jenis filesystem, termasuk perbedaan antara journaling dan non-journaling filesystem.

Variasi Sistem File di Linux

Linux mendukung berbagai macam sistem file, sebagian besar dengan akses baca dan tulis penuh, termasuk:

  • ext4 – Sistem file asli Linux (pengembangan dari ext2 dan ext3).
  • XFS – Sistem file berkinerja tinggi yang awalnya dibuat oleh SGI.
  • JFS – Sistem file berkinerja tinggi yang dikembangkan oleh IBM.
  • Windows-natives – FAT12, FAT16, FAT32, VFAT, NTFS, yang digunakan di Windows.
  • Pseudo-filesystems – Sistem file yang hanya berada di memori, seperti proc, sysfs, devfs, dan debugfs.
  • Network filesystems – Sistem file yang digunakan untuk berbagi file melalui jaringan, seperti NFS, Coda, dan AFS.

Untuk melihat daftar sistem file yang saat ini terdaftar dan dikenali oleh kernel Linux yang sedang berjalan, gunakan perintah berikut:

cat /proc/filesystems

Hasil dari perintah ini akan menampilkan daftar sistem file yang didukung, contohnya:

iso9660
squashfs
ext3
ext2
ext4
fuseblk
nodev sysfs
nodev proc
nodev tmpfs
nodev debugfs
nodev sockfs
nodev hugetlbfs
nodev fuse
nodev nfsd

...

Keterangan:

  • Sistem file dengan "nodev" adalah sistem file khusus yang tidak menyimpan data di penyimpanan fisik.
  • Beberapa sistem file tambahan mungkin hanya dimuat sebagai modul saat sistem mencoba mengakses partisi yang menggunakannya.
Journaling Filesystems: Menyoroti pentingnya filesystem dengan fitur journaling untuk menjaga integritas data, khususnya setelah crash.

  Sistem file berbasis jurnal dirancang untuk pulih dengan cepat dari crash sistem atau pemadaman yang tidak terduga tanpa menyebabkan kerusakan besar. Meskipun sistem ini memerlukan operasi tambahan, manfaatnya jauh lebih besar dibandingkan dengan biayanya.

  Dalam sistem file berbasis jurnal, setiap operasi dikelompokkan ke dalam transaksi. Transaksi harus diselesaikan secara atomik tanpa kesalahan; jika tidak, sistem file tidak akan berubah. Sistem ini menggunakan log file untuk mencatat transaksi yang dilakukan. Jika terjadi kesalahan, biasanya hanya transaksi terakhir yang perlu diperiksa.

Berikut adalah beberapa sistem file berbasis jurnal yang tersedia di Linux:

  • ext3 – Pengembangan dari sistem file ext2 dengan fitur journaling.
  • ext4 – Versi lebih canggih dari ext3 dengan fitur seperti extents, dukungan untuk blok 48-bit, dan ukuran hingga 16TB. Sebagian besar distribusi Linux menggunakan ext4 sebagai sistem file default.
  • reiserfs – Salah satu sistem file berbasis jurnal pertama di Linux. Namun, pengembangannya telah dihentikan.
  • JFS – Dikembangkan oleh IBM dan diporting dari sistem operasi AIX milik IBM.
  • XFS – Awalnya dikembangkan oleh SGI dan berasal dari sistem operasi IRIX. XFS digunakan sebagai sistem file default di RHEL 7.
  • btrfs – Sistem file berbasis jurnal terbaru yang masih dalam pengembangan aktif. Btrfs adalah sistem file default untuk SUSE dan openSUSE.
Special Filesystems: Eksplorasi jenis filesystem yang khusus, seperti filesystem jaringan atau filesystem berbasis memori.

  Linux memiliki beberapa sistem file khusus yang digunakan untuk tugas-tugas tertentu. Sistem file ini membantu sistem operasi bekerja lebih efisien dengan menyediakan cara khusus untuk mengakses data atau mengelola perangkat keras.

  1. rootfs → Sistem file awal yang digunakan saat komputer dinyalakan sebelum sistem utama dimuat.
  2. hugetlbfs → Digunakan untuk mengelola memori besar agar lebih efisien, terutama pada komputer dengan arsitektur x86.
  3. bdev → Digunakan untuk menangani perangkat penyimpanan berbasis blok seperti hard disk dan SSD.
  4. proc → Sistem file virtual yang ada di /proc, digunakan untuk melihat informasi tentang sistem dan proses yang sedang berjalan.
  5. sockfs → Digunakan untuk komunikasi jaringan berbasis soket (contohnya dalam koneksi internet).
  6. tmpfs → Sistem file yang menggunakan RAM untuk penyimpanan sementara, sehingga sangat cepat.
  7. shm → Digunakan untuk berbagi memori antar program agar bisa bertukar data lebih cepat.
  8. pipefs → Digunakan untuk komunikasi antar program melalui "pipa" (pipes).
  9. binfmt_misc → Memungkinkan Linux menjalankan berbagai jenis file biner yang tidak biasa.
  10. devpts → Digunakan untuk menangani terminal virtual di Linux, misalnya saat membuka beberapa tab di terminal.
  11. usbfs → Digunakan untuk mengelola perangkat USB yang terhubung ke komputer.
  12. sysfs → Sistem file yang menyimpan informasi tentang perangkat keras komputer, bisa diakses di /sys.
  13. debugfs → Digunakan untuk keperluan debugging atau pemecahan masalah pada sistem.

Sistem file ini bekerja di belakang layar untuk memastikan Linux dapat berjalan dengan lancar dan efisien.

Ext4 Superblock and Block Groups: Tinjauan mendalam tentang bagaimana filesystem ext4 menyusun data, termasuk peran superblock dan block groups.

Ext4 adalah sistem file yang bisa menangani ukuran volume hingga 1 EB dan ukuran file hingga 16 TB. Sistem ini merupakan pengembangan dari ext3 dan ext2, dengan beberapa fitur tambahan seperti:

  • Allocate-on-flush: Menunda alokasi blok hingga data benar-benar ditulis ke disk, meningkatkan efisiensi penyimpanan.
  • Journaling dengan checksum: Memastikan keandalan data dan mengurangi risiko kerusakan akibat pemadaman listrik atau error sistem.
  • Dukungan subdirektori lebih banyak: Bisa menangani hingga 32.000 subdirektori dalam satu direktori utama.
  • Timestamp lebih akurat: Waktu dalam sistem ini menggunakan satuan nanodetik, bukan detik biasa.

Superblock dan Block Groups dalam Ext4

Superblock adalah bagian penting dari sistem file yang menyimpan informasi utama tentang filesystem, seperti:

  • Jumlah total mount dan batas maksimum mount sebelum filesystem diperiksa.
  • Ukuran blok dan jumlah blok dalam satu grup.
  • Jumlah blok yang masih tersedia (free blocks).
  • Jumlah inode yang masih tersedia (free inodes).
  • Sistem operasi yang digunakan.

Superblock ini terletak di blok 0 dari disk dan berisi informasi penting tentang struktur filesystem. Ext4 membagi disk menjadi block groups agar file yang sering diakses bersama bisa berada dalam satu grup, sehingga mengurangi waktu pencarian data.

Pada Ext4, data ditulis dalam little-endian kecuali untuk jurnal.

Struktur Filesystem Ext3 dan Ext4

Pada sistem file ext3 dan ext4, setiap block group memiliki beberapa bagian penting:

  1. Superblock: Berisi informasi tentang filesystem.
  2. Group Descriptors: Menyimpan informasi tentang setiap grup blok.
  3. Data Block Bitmap: Menunjukkan blok mana yang digunakan dan yang kosong.
  4. Inode Bitmap: Menunjukkan inode mana yang sudah digunakan.
  5. Inode Table: Menyimpan metadata file, seperti pemilik, izin akses, dan lokasi data.
  6. Data Blocks: Menyimpan isi file dan direktori.

Block group ini membantu mempercepat akses data dan meningkatkan efisiensi filesystem. Jika terjadi masalah pada superblock utama, ada salinan cadangan di block group lainnya yang bisa digunakan untuk pemulihan.

Menggunakan Perintah dumpe2fs

Untuk melihat informasi detail tentang suatu partisi, kita bisa menggunakan perintah:

sudo dumpe2fs /dev/sdb1

Perintah ini akan menampilkan informasi filesystem seperti:

  • Volume dan UUID filesystem.
  • Jumlah blok, inode, dan blok yang masih kosong.
  • Opsi mount default dan fitur yang digunakan.

Menggunakan Perintah tune2fs

Perintah tune2fs digunakan untuk mengubah parameter filesystem. Beberapa contohnya:

  • Mengubah jumlah maksimal mount sebelum dilakukan pemeriksaan filesystem:
    sudo tune2fs -c 25 /dev/sda1
    
  • Mengubah interval pemeriksaan filesystem dalam hitungan hari:
    sudo tune2fs -i 10 /dev/sda1
    
  • Melihat isi superblock dan parameter filesystem:
    sudo tune2fs -l /dev/sda1
    

Perintah tune2fs berguna untuk mengelola filesystem tanpa perlu memformat ulang, sehingga dapat membantu dalam pemeliharaan dan optimasi sistem.

Dengan memahami konsep superblock, block groups, dan perintah untuk melihat serta mengatur filesystem, kita bisa lebih mudah mengelola penyimpanan di sistem Linux, khususnya dengan sistem file Ext4.

XFS: Pengenalan filesystem XFS, termasuk kinerja unggulnya dalam menangani file besar dan beban kerja berat.

XFS adalah sistem file yang awalnya dikembangkan oleh Silicon Graphics Inc. (SGI) untuk sistem operasi IRIX, kemudian diporting ke Linux. XFS dirancang untuk menangani dataset besar dan operasi I/O paralel dengan sangat efisien.

Fitur Utama XFS

  1. Dukungan ukuran besar:

    • Bisa menangani total filesystem hingga 16 EB (exabytes).
    • Bisa menangani ukuran file individu hingga 8 EB.
  2. Performa tinggi, termasuk:

    • DMA (Direct Memory Access) I/O untuk akses data lebih cepat.
    • Jaminan tingkat I/O tertentu.
    • Penyesuaian ukuran stripe untuk RAID atau LVM agar lebih optimal.
  3. Journaling Quota

    • Berbeda dari sistem file Linux lainnya, XFS bisa mencatat informasi kuota di jurnal, yang mengurangi waktu pemulihan saat sistem tidak dimatikan dengan benar.
    • Jurnal ini bisa disimpan di perangkat eksternal untuk performa lebih baik.
  4. Dukungan atribut tambahan (xattrs) seperti sistem file Linux lainnya.

Pemeliharaan XFS

Salah satu keunggulan XFS adalah banyak tugas pemeliharaan bisa dilakukan secara online, tanpa perlu unmount filesystem:

  • Defragmentasi
  • Resize filesystem (hanya bisa memperbesar, tidak bisa mengecilkan)
  • Dumping/Restoring data

Backup dan restore dapat dilakukan menggunakan utilitas bawaan XFS:

  • xfsdump
  • xfsrestore

Kedua perintah ini mendukung proses pause dan resume, serta bekerja secara multi-threaded, sehingga proses backup dan restore bisa lebih cepat.

Quota dan Snapshot

  • XFS mendukung per-directory quotas menggunakan perintah xfs_quota, yang lebih fleksibel dibandingkan sistem file lain.
  • XFS tidak mendukung snapshot bawaan, tetapi bisa menggunakan xfs_freeze untuk membekukan filesystem sebelum di-snapshot oleh alat eksternal seperti LVM.

Kesimpulan

XFS sangat cocok untuk sistem dengan volume data besar dan membutuhkan kecepatan tinggi dalam membaca/menulis data, terutama untuk server, database, dan sistem dengan banyak operasi I/O. Namun, XFS memiliki keterbatasan seperti tidak bisa mengecilkan filesystem dan tidak memiliki snapshot bawaan.


Komentar

Postingan populer dari blog ini

Cara Instalasi Debian 12 di Virtualbox

Cara Instalasi dan Konfigurasi Web Server pada Debian 10 di VirtualBox

Cara Instalasi Debian 12 Di Virtualbox Dan Cara Untuk Setting IP Address-Nya