TMR 29 : Adinusa Linux System Administration - Modul 8

>    Linux Filesystems and the VFS

-    Tujuan Pembelajaran

Setelah mempelajari bab ini, kamu diharapkan dapat:

  • Menjelaskan dasar-dasar organisasi filesystem.

  • Memahami peran Virtual File System (VFS).

  • Mengetahui filesystem yang tersedia di Linux dan mana yang dapat digunakan pada sistemmu.

  • Memahami mengapa filesystem dengan journaling merupakan kemajuan signifikan.

  • Membahas penggunaan filesystem khusus di Linux.



>    Filesystem Basics

Program aplikasi membaca dan menulis file, bukan berurusan langsung dengan lokasi fisik pada perangkat keras tempat file disimpan. Filesystem menciptakan format yang dapat digunakan pada partisi fisik.

File dan nama-nama file adalah sebuah abstraksi yang menyembunyikan lapisan I/O fisik. Menulis langsung ke disk dari baris perintah (mengabaikan lapisan filesystem) sangat berbahaya dan biasanya hanya dilakukan oleh perangkat lunak sistem operasi tingkat rendah, bukan aplikasi pengguna. Pengecualian adalah beberapa perangkat lunak tingkat tinggi seperti basis data perusahaan yang melakukan akses seperti ini untuk menghindari latensi terkait filesystem.

Filesystem mirip UNIX menggunakan hierarki pohon:

  • Direktori berisi file dan/atau direktori lainnya

  • Setiap jalur atau node berada di bawah direktori root

  • Beberapa filesystem dapat digabungkan (dan biasanya memang digabungkan) menjadi satu struktur pohon tunggal. Linux menggunakan Virtual File System (VFS) untuk berkomunikasi dengan perangkat lunak filesystem.

Filesystem lokal umumnya berada di dalam partisi disk yang bisa berupa partisi fisik pada sebuah disk, atau partisi logis yang dikendalikan oleh Logical Volume Manager (LVM). Filesystem juga bisa bersifat jaringan dan keberadaan fisiknya sepenuhnya tersembunyi dari sistem lokal melalui jaringan.



>    Inodes

Inode adalah sebuah struktur data pada disk yang menggambarkan dan menyimpan atribut file, termasuk lokasi file tersebut. Setiap file yang ada dalam sebuah filesystem Linux terkait dengan inode-nya masing-masing. Semua data mengenai file disimpan dalam inode-nya. Inode digunakan oleh sistem operasi untuk melacak properti seperti nama, lokasi, atribut file (izin, kepemilikan, dll.), waktu akses, dan informasi lainnya. Karena itu, semua aktivitas I/O yang melibatkan sebuah file biasanya juga akan melibatkan inode dari file tersebut.

Inode mendeskripsikan dan menyimpan informasi tentang sebuah file, termasuk:

  • Permissions (izin)

  • User and group ownership (kepemilikan user dan grup)

  • Size (ukuran)

  • Timestamps (dalam nanodetik)

    • Last access time (waktu akses terakhir)

    • Last modification time (waktu modifikasi terakhir)

    • Change time (waktu perubahan)


Data storage in an inode vs data storage in a directory file



>    Hard and Soft Links

Sebuah file direktori adalah tipe khusus dari file yang digunakan untuk mengasosiasikan nama file dengan inode. Ada dua cara untuk menghubungkan (atau link) sebuah nama file dengan inode:

  • Hard links menunjuk langsung ke sebuah inode.
    Semua file yang terhubung secara hard link harus berada di filesystem yang sama. Mengubah konten file yang terhubung dengan hard link di satu tempat mungkin tidak langsung mengubah file di tempat lain.

  • Soft links (atau symbolic links) menunjuk ke nama file yang memiliki inode terkait.
    Soft linked files boleh berada di filesystem yang berbeda. Jika target file belum ada atau belum ter-mounting, soft link tersebut bisa menjadi dangling (menggantung).

Setiap asosiasi antara isi file direktori dan inode dikenal sebagai link. Link tambahan dapat dibuat menggunakan perintah:

ln

Karena memungkinkan (dan umum) bahwa dua atau lebih entri direktori menunjuk ke inode yang sama (hard links), sebuah file dapat dikenal dengan beberapa nama, masing-masing dengan posisi sendiri di dalam struktur direktori.
Namun, file tersebut tetap hanya memiliki satu inode tidak peduli nama mana yang digunakan.

Saat sebuah proses merujuk ke pathname, kernel mencari melalui direktori untuk menemukan nomor inode yang sesuai. Setelah nama dikonversikan menjadi nomor inode, inode tersebut dimuat ke dalam memori dan digunakan untuk permintaan-permintaan selanjutnya.



>    Available Filesystems

Linux dapat bekerja dengan lebih banyak variasi filesystem dibandingkan sistem operasi lain mana pun.
Fleksibilitas demokratis ini telah menjadi salah satu faktor besar keberhasilan Linux.

Sebagian besar filesystem di Linux memiliki akses read/write penuh, sementara beberapa lainnya hanya read-only.

Beberapa filesystem yang umum digunakan antara lain:

  • ext4

  • xfs

  • btrfs

  • squashfs

  • nfs

  • vfat

Untuk melihat daftar filesystem yang saat ini didukung oleh sistem Anda, Anda dapat mengeceknya di:

/proc/filesystems



>    Filesystem Varieties

Linux mendukung banyak variasi filesystem, sebagian besar dengan akses read dan write penuh, termasuk:

  • ext4: Linux native filesystem (termasuk pendahulunya, ext2 dan ext3)

  • XFS: Filesystem berkinerja tinggi yang awalnya dibuat oleh SGI

  • JFS: Filesystem berkinerja tinggi yang awalnya dibuat oleh IBM

  • Windows-native: FAT12, FAT16, FAT32, VFAT, NTFS

  • Pseudo-filesystems: Berada hanya di memori, seperti proc, sysfs, devfs, debugfs

  • Network filesystems: Seperti NFS, coda, afs, dan lainnya


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

$ cat /proc/filesystems

Contoh output:

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

Filesystem yang memiliki label nodev adalah filesystem khusus yang tidak berada di atas media penyimpanan fisik.

Selain itu, filesystem tambahan dapat dimuat sebagai modul hanya ketika sistem mencoba mengakses partisi yang menggunakannya.



>    Journaling Filesystems

Journaling filesystems dirancang untuk meminimalkan kerusakan data dan mempercepat pemulihan setelah sistem mengalami crash atau shutdown tidak normal. Filesystem jenis ini mencatat perubahan dalam bentuk transaksi ke dalam file log khusus sebelum benar-benar diterapkan ke disk.

Jika terjadi error, sistem hanya perlu memeriksa transaksi terakhir di jurnal untuk memastikan konsistensi filesystem — ini membuat proses pemulihan menjadi cepat dan efisien, bahkan dalam sistem besar.

-    Bagaimana Cara Kerjanya?

  • Operasi filesystem dibungkus dalam transaksi

  • Transaksi bersifat atomik: harus selesai seluruhnya atau tidak dilakukan sama sekali

  • Perubahan dicatat dalam log (journal) sebelum dilakukan di disk

  • Saat reboot setelah crash, sistem dapat membaca log dan memperbaiki hanya bagian yang perlu saja


Contoh Journaling Filesystems di Linux

Berikut adalah beberapa filesystem journaling yang tersedia secara bebas di Linux:

-    ext3

  • Perpanjangan dari ext2 (non-journaling)

  • Salah satu implementasi awal journaling di Linux

-    ext4

  • Penerus ext3 yang sangat ditingkatkan

  • Fitur: dukungan extents, block number 48-bit, kapasitas hingga 16TB

  • Digunakan sebagai default oleh banyak distribusi Linux selama bertahun-tahun

-    reiserfs

  • Journaling filesystem pertama yang digunakan secara luas di Linux

  • Kini tidak lagi dikembangkan

-    JFS

  • Asli dari IBM dan dipindahkan dari sistem operasi AIX mereka

  • Efisien dalam penggunaan CPU dan cocok untuk sistem besar

-    XFS

  • Dibuat oleh SGI, berasal dari sistem operasi IRIX

  • Digunakan sebagai default di RHEL 7

  • Kuat untuk sistem berskala besar dan mendukung file berukuran besar

-    btrfs

  • Filesystem journaling paling baru dan masih dalam tahap pengembangan aktif

  • Mendukung snapshot, compression, dan volume management

  • Default di distribusi SUSE dan openSUSE



>    Special Filesystems

Linux secara luas menggunakan special filesystems untuk berbagai tugas penting, khususnya untuk:

  • Mengakses struktur data kernel

  • Menyetel perilaku kernel

  • Menyediakan fungsionalitas khusus bagi sistem

Special filesystems sangat berguna karena memungkinkan interaksi dengan komponen internal kernel menggunakan model filesystem standar. Ini memudahkan baik bagi kernel maupun pengembang sistem.


-    Mount Point dan Non-Mount Point Special Filesystems

Tidak semua special filesystems memiliki mount point:

  • Dengan Mount Point
    Contoh:

    • /proc (procfs)

    • /sys (sysfs)

    • /dev (devtmpfs)

  • Tanpa Mount Point
    Contoh:

    • sockfs

    • pipefs

Filesystem tanpa mount point digunakan secara internal oleh kernel dan tidak langsung diakses oleh user. Kernel tetap menggunakan struktur filesystem melalui VFS (Virtual Filesystem Switch) untuk konsistensi.




>    Ext4 Superblock and Block Groups

-    Mengenal Filesystem ext4

Filesystem ext4 adalah evolusi dari ext3 dan ext2, yang kini menjadi default di banyak distribusi Linux. Beberapa fitur unggulannya:

  • Mendukung volume hingga 1 EB dan file hingga 16 TB

  • Menggunakan extents untuk efisiensi alokasi blok

  • Kompatibel dengan ext3 dan ext2

  • Fitur allocate-on-flush (penulisan ditunda hingga flush)

  • Timestamps berpresisi nanodetik

  • Mendukung lebih dari 32.000 subdirektori

  • Checksum pada journal untuk meningkatkan reliabilitas


-    Struktur Filesystem: Superblock dan Block Groups

Filesystem ext4 dipecah menjadi unit-unit bernama block group. Setiap block group memiliki komponen penting seperti:

  • Bitmap blok

  • Bitmap inode

  • Tabel inode

  • Blok data

Salah satu komponen utama dalam ext4 adalah superblock, yang menyimpan informasi global tentang filesystem. Lokasinya berada di blok ke-0, dan beberapa salinan cadangan disimpan di block group lainnya untuk redundansi.

Informasi Superblock meliputi:

  • Jumlah mount (mount count) dan batas maksimum sebelum check (max-mount-count)

  • Ukuran blok (bisa diset saat format melalui mkfs)

  • Jumlah blok dan inode yang bebas

  • ID OS

  • Fitur filesystem



-    Optimasi: Sparse Superblock

Secara default, ext4 dibuat dengan opsi sparse_super, artinya tidak semua block group menyimpan superblock & group descriptor — hanya beberapa sebagai cadangan. Ini menghemat ruang dan meningkatkan efisiensi.


-    Mengecek Struktur dengan dumpe2fs

Perintah:

$ sudo dumpe2fs /dev/sdb1

Memberikan informasi rinci filesystem, seperti UUID, fitur, jumlah inode & blok, posisi bitmap, dan lainnya.

Contoh output:

  • UUID: fce521c7-e2ce-414a-8a7e-e2311640802f

  • Block size: 4096

  • Free blocks/inodes: Tertulis lengkap

  • Fitur: has_journal, ext_attr, resize_inode, extent, 64bit, sparse_super, dll.



-    Menyetel Filesystem dengan tune2fs

Gunakan tune2fs untuk mengubah parameter filesystem tanpa reformat:

  • Ubah mount check count:

$ sudo tune2fs -c 25 /dev/sda1

  • Ubah interval waktu pemeriksaan:

$ sudo tune2fs -i 10 /dev/sda1

  • Lihat parameter superblock:

$ sudo tune2fs -l /dev/sda1


-    Output Penting dari tune2fs -l

  • Filesystem volume name: VMS

  • Mount count: 2003

  • Max mount count: -1 (tidak ada batas)

  • Filesystem state: clean

  • Lifetime writes: 14 TB

  • Last checked: 2018

  • Last mount: 2021

Ini sangat berguna untuk audit, pemeliharaan, dan optimasi performa.



>    XFS Filesystem: High-Performance Linux Filesystem

-    Asal-usul XFS

XFS adalah filesystem canggih yang awalnya dikembangkan oleh Silicon Graphics Inc. (SGI) untuk sistem operasi IRIX. Kemudian, filesystem ini diporting ke Linux untuk memenuhi kebutuhan akan pengelolaan dataset besar dan I/O paralel yang efisien.


-    Kapasitas Maksimal XFS

  • Total kapasitas filesystem: Hingga 16 EB (Exabyte)

  • Ukuran maksimal file tunggal: Hingga 8 EB

Filesystem ini dirancang untuk menangani skala penyimpanan raksasa dengan kinerja optimal.


-    Fitur Kunci XFS

  • DMA (Direct Memory Access) I/O untuk transfer data cepat

  • Menjamin laju I/O (Quality of Service untuk I/O)

  • Menyesuaikan stripe size dengan konfigurasi RAID atau LVM


-    Kelebihan Lain dari XFS

  • Journaling Quota:

    • Selain filesystem data, XFS juga dapat me-journal informasi kuota.

    • Ini mempercepat pemulihan setelah filesystem tidak dimount dengan bersih.

    • Journaling kuota juga dapat ditempatkan di perangkat eksternal.

  • Extended Attributes (xattrs):

    • Dukungan metadata tambahan untuk file dan direktori.

  • Online Maintenance:

    • Sebagian besar perawatan filesystem dapat dilakukan tanpa unmount, termasuk:

      • Defragmentasi

      • Resize filesystem (hanya memperbesar)

      • Backup dan Restore


-    Backup dan Restore di XFS

XFS menyediakan tool bawaan untuk backup/restore:

  • xfsdump

  • xfsrestore

Fitur unggulan dari tool ini:

  • Bisa pause dan resume operasi.

  • Multi-threaded, memungkinkan proses backup/restore yang sangat cepat.


-    Kuota di XFS

  • Quota Tradisional:

    • Anda tetap bisa menggunakan perintah kuota standar Linux.

  • xfs_quota:

    • Memberikan kemampuan tambahan seperti per-directory quota.


-    Snapshot di XFS

  • XFS tidak langsung mendukung snapshot.

  • Solusinya: gunakan tool xfs_freeze untuk membekukan filesystem sementara, sehingga snapshot hardware/software dapat dibuat dengan aman.

  • Tools seperti LVM di Linux otomatis menggunakan xfs_freeze sebelum mengambil snapshot.




Komentar