🗂️ Filesystem Hierarchy di Linux (FHS)

Dokumen ini menjelaskan struktur direktori standar Linux (Filesystem Hierarchy Standard / FHS) secara ringkas namun komprehensif.
Tujuan FHS adalah agar aplikasi, admin, dan pengguna memiliki lokasi yang konsisten untuk file sistem, konfigurasi, log, library, dan data.


🔹 Konsep Utama

  • Root filesystem: direktori paling atas adalah / (root). Semua path berawal dari sini.
  • Hierarchy: setiap direktori memiliki fungsi khusus; jangan menaruh file sembarangan.
  • Mount points: filesystem tambahan (disk, LVM, NFS) di-mount pada path tertentu (mis. /mnt/data).
  • Volatile vs Persistent: beberapa path sementara/volatile (mis. /run, /tmp) dan akan kosong saat boot.

🔎 Peta Direktori Inti (Ringkas)

Direktori Fungsi Singkat
/ Root dari seluruh filesystem
/bin Binary esensial untuk user & admin (mis. ls, cp, cat)
/sbin Binary esensial untuk administrasi sistem (mis. mount, ip)
/usr Aplikasi & library read-only (userland) yang tidak kritikal saat boot
/usr/bin Binary aplikasi umum
/usr/sbin Binary admin non-esensial untuk boot
/usr/local Aplikasi yang diinstal manual (di luar manajer paket)
/etc File konfigurasi sistem (teks)
/var Data berubah (log, spool, cache)
/home Home directory user biasa
/root Home untuk user root
/tmp File sementara (biasanya dibersihkan saat boot)
/opt Aplikasi pihak ketiga (bundle)
/srv Data layanan yang disajikan oleh server (mis. web, ftp)
/lib, /lib64 Library penting untuk program di /bin dan /sbin
/boot Kernel, initramfs, file bootloader
/dev Device file (block/char devices)
/proc Pseudo-filesystem info proses & kernel (runtime)
/sys Pseudo-filesystem konfigurasi kernel & device
/run Data runtime (PID, socket); volatile
/media Mount removable media (USB, CD) otomatis
/mnt Mount sementara oleh admin

🧭 Penjelasan Per Direktori (Detail + Contoh)

/bin dan /sbin

  • Berisi perintah esensial yang dibutuhkan saat boot / single-user mode.
  • Contoh:
    ls /bin | head
    ls /sbin | head
  • Catatan: pada distro modern, beberapa binary bisa berupa symlink ke /usr/bin atau /usr/sbin.

/usr (userland, read-only saat normal operasi)

  • Hirarki aplikasi dan library non-kritis saat boot.
  • Subfolder penting:
    • /usr/bin → binary aplikasi umum.
    • /usr/sbin → binary admin non-esensial.
    • /usr/lib, /usr/lib64 → library.
    • /usr/share → data arsitektur-independen (man page, locale).
    • /usr/local → tempat instal manual (build dari source).

/etc (konfigurasi sistem)

  • Semua konfigurasi teks sistem & service.
  • Contoh penting:
    • /etc/hostname, /etc/hosts, /etc/resolv.conf
    • /etc/fstab (mount table), /etc/ssh/sshd_config
    • /etc/systemd/system/*.service (unit lokal)
      sudo systemctl edit --full nginx.service   # mengedit unit lokal (disimpan ke /etc/systemd/system)

/var (data berubah)

  • Log/var/log/ (mis. syslog, auth.log, nginx/)
  • Spool/var/spool/ (mail, cron)
  • Cache/var/cache/ (apt cache, aplikasi)
  • WWW (konvensi) → /var/www/ untuk dokumen web
    sudo du -sh /var/log/*
    sudo journalctl -xe

/home dan /root

  • /home/<user> → data & konfigurasi tiap user.
  • /root → home untuk administrator root; jangan campur dengan /home.
    ls -la /home
    sudo ls -la /root

/tmp

  • Temp folder untuk semua user dan aplikasi.
  • Sering dibersihkan saat boot/periodik; jangan simpan data penting.
    touch /tmp/contoh && ls -l /tmp/contoh

/opt

  • Paket aplikasi pihak ketiga dalam satu direktori (mis. /opt/<vendor>/).
  • Cocok untuk software yang tidak mengikuti struktur FHS.

/srv

  • Data yang disajikan layanan (service data).
  • Contoh: /srv/ftp, /srv/www/example.com/.

/lib, /lib64

  • Library yang dibutuhkan binary di /bin dan /sbin.
  • Pada sistem multi-arch ada pemisahan 32/64 bit.

/boot

  • Kernel (vmlinuz-*), initramfs, dan file bootloader (grub/).
    ls -lh /boot

/dev (device files)

  • Dikelola udev. Contoh:
    • Disk → /dev/sda, /dev/nvme0n1
    • Partisi → /dev/sda1
    • Terminal → /dev/tty*
      ls -l /dev/sd*

/proc (virtual, informasi runtime)

  • Representasi status kernel & proses. Bukan file permanen.
  • Contoh:
    • /proc/cpuinfo, /proc/meminfo
    • /proc/<PID>/ → info proses, fd, cmdline
      cat /proc/meminfo | head

/sys (virtual, konfigurasi kernel/perangkat)

  • Interface kernel, driver, dan device.
  • Digunakan untuk tuning atau membaca status perangkat.

/run (runtime data, volatile)

  • PID file, UNIX socket, lock file. Kosong saat boot.
    ls -l /run | head

/media dan /mnt

  • /media → mount otomatis removable media (USB, CD).
  • /mnt → mount sementara oleh admin (mis. investigasi disk).
    sudo mount /dev/sdb1 /mnt
    df -h | grep /mnt

🛠️ Mount & fstab (Gambaran Singkat)

  • Lihat disk & partisi: lsblk, blkid, fdisk -l
  • Status mount: mount, findmnt, df -h
  • Konfigurasi auto-mount: /etc/fstab
    Contoh entri fstab:
    UUID=xxxx-xxxx  /mnt/data  ext4  defaults,noatime  0  2

    Gunakan blkid untuk mendapatkan UUID.


📈 Monitoring Kapasitas

df -h                 # kapasitas filesystem
du -sh /var/log/*     # ukuran tiap folder/log
sudo ncdu /var        # (opsional) utilitas interaktif, paket: ncdu

✅ Best Practices

  • Ikuti FHS: konfigurasi di /etc, log di /var/log, data service di /srv atau /var/lib/<service>.
  • Simpan instalasi manual di /usr/local/ atau /opt/, jangan tabrak file manajer paket.
  • Gunakan /etc/systemd/system/ untuk unit override lokal, bukan edit langsung di /lib/systemd/system.
  • Pisahkan partisi untuk direktori yang rawan membesar: contoh /var, /home, /srv, atau /opt sesuai kebutuhan.
  • Gunakan permission yang tepat (contoh web server: file 644, folder 755).
  • Jangan menyimpan data penting di /tmp atau /run (volatile).
  • Dokumentasikan mount & path data untuk memudahkan backup dan DR.

🧩 FAQ Singkat

Kenapa ada /usr/bin dan /bin?
Secara historis, /bin dibutuhkan saat boot. Distro modern sering menyatukan ke /usr menggunakan symlink.

Dimana menaruh file website?
Konvensinya /var/www/<site>/ atau mengikuti struktur manajer web server (nginx/apache).

Dimana menyimpan file service custom?
Konfigurasi di /etc/<service>/, data di /var/lib/<service>/, log di /var/log/<service>/.


📌 Kesimpulan

Memahami FHS membantu admin:

  • Menemukan file dengan cepat,
  • Menentukan lokasi yang benar untuk konfigurasi/data,
  • Menjaga sistem rapi, aman, dan mudah di-maintain.

Rujuk dokumentasi distro Anda jika ada variasi kecil (Debian/Ubuntu vs RHEL/SUSE). Prinsip umumnya sama mengikuti FHS.