Cấu Trúc Thư Mục Hệ Thống Linux

Tổng hợp trực quan, đơn giản và dễ hiểu về cây thư mục Linux (Filesystem Hierarchy Standard): ý nghĩa từng thư mục từ root /, etc, var đến proc.

Nếu trong Windows, hệ thống phân chia theo các ổ đĩa riêng biệt như C:\, D:\, E:\, thì trong Linux chỉ có duy nhất một cây thư mục duy nhất bắt đầu từ gốc / (gọi là Root).

Mọi ổ cứng, phân vùng, USB hay thư mục chia sẻ qua mạng đều chỉ là các "nhánh" được gắn (mount) vào cây thư mục gốc này. Chuẩn quy ước cấu trúc này được gọi là FHS (Filesystem Hierarchy Standard).


🌳 Sơ Đồ Cây Thư Mục Trực Quan


📁 Ý Nghĩa Từng Thư Mục (Giải Thích Nhanh)

1. / (Root Directory)

Gốc cao nhất của hệ điều hành. Mọi file và thư mục trong máy tính Linux đều bắt đầu từ đây.

2. /bin và /sbin (Thư mục chứa câu lệnh)

  • /bin (Binaries): Chứa các chương trình thực thi cần thiết cho mọi người dùng (như ls, cat, mkdir, cp, rm).
  • /sbin (System Binaries): Chứa các câu lệnh đặc quyền của quản trị viên (root) dùng để cấu hình hoặc sửa chữa hệ thống (như reboot, iptables, fdisk, ip).

💡 Trên các bản Linux hiện đại (Ubuntu, CentOS), /bin và /sbin thường là symbolic link trỏ về /usr/bin và /usr/sbin.

3. /etc (File cấu hình)

Nơi lưu trữ toàn bộ file cấu hình của hệ thống và các dịch vụ. Hầu như toàn bộ file ở đây đều là dạng văn bản thuần (plain text) có thể đọc và sửa bằng nano hoặc vim:

  • /etc/passwd: Danh sách người dùng hệ thống.
  • /etc/hosts: File phân giải tên miền cục bộ.
  • /etc/nginx/: Nơi chứa cấu hình web server Nginx.
  • /etc/ssh/sshd_config: Cấu hình dịch vụ SSH.

4. /home và /root (Không gian cá nhân)

  • /home/<username>: Thư mục riêng của người dùng thông thường (chứa Desktop, Downloads, file cá nhân và mã nguồn).
  • /root: Thư mục cá nhân của tài khoản quyền lực nhất (Superuser Root), nằm tách biệt ngay tại root / để đề phòng trường hợp phân vùng /home bị lỗi.

5. /var (Dữ liệu biến đổi - Variable)

Chứa các dữ liệu thường xuyên thay đổi kích thước trong quá trình hệ thống chạy:

  • /var/log/: Nơi quan trọng nhất đối với SRE/DevOps — lưu toàn bộ nhật ký lỗi (log hệ thống, Nginx access log, syslog).
  • /var/lib/docker/: Nơi Docker lưu trữ container layers và images.
  • /var/www/: Nơi thường đặt mã nguồn website.

6. /usr (User System Resources)

Nơi chứa các ứng dụng, tiện ích và thư viện dành cho người dùng sau khi cài đặt:

  • /usr/bin: Các phần mềm người dùng cài qua package manager (git, curl, python3, docker).
  • /usr/local: Nơi dành cho các phần mềm tự biên dịch thủ công từ source code.

7. /opt (Optional)

Thường dành cho các ứng dụng đóng gói độc lập của bên thứ ba (Third-party software) cài đặt nguyên một thư mục riêng biệt tại đây, ví dụ: Google Chrome, Datadog Agent, GitLab.

8. /tmp (Temporary)

Thư mục chứa các file tạm thời của ứng dụng. Mọi người dùng đều có quyền ghi vào đây. Hầu hết hệ thống Linux sẽ tự động xóa sạch file trong /tmp khi máy chủ khởi động lại.

9. /boot (Khởi động hệ thống)

Chứa các file tối quan trọng để nạp hệ điều hành khi bật máy: file nhân Linux (vmlinuz), RAM disk ban đầu (initramfs) và bộ nạp khởi động GRUB.

10. /dev (Devices)

Linux coi phần cứng là tập tin. Các ổ đĩa (/dev/sda, /dev/nvme0n1), thiết bị đầu cuối (/dev/tty), hoặc thiết bị tạo dữ liệu ảo (/dev/urandom, /dev/null) đều nằm ở đây.

11. /proc và /sys (Thư mục ảo thời gian thực)

Không chiếm dung lượng ổ cứng thực tế, đây là cửa sổ giao tiếp với Kernel trong bộ nhớ RAM:

  • /proc/meminfo: Xem tình trạng RAM.
  • /proc/cpuinfo: Xem thông tin vi xử lý CPU.
  • /proc/<PID>: Xem chi tiết tiến trình đang chạy theo mã PID.

12. /mnt và /media (Gắn kết ổ đĩa)

  • /media: Thường được hệ thống tự động gắn USB, ổ đĩa ngoài khi cắm vào (trên desktop).
  • /mnt: Nơi quản trị viên chủ động gắn (mount) tạm thời các ổ cứng, phân vùng hoặc ổ mạng NFS.

⚡ Bảng Tra Cứu Nhanh (Cheat Sheet)

Thư mụcChức năng chínhVí dụ điển hình
/Gốc của toàn bộ hệ thốngcd /
/etcChứa file cấu hình/etc/nginx/nginx.conf, /etc/resolv.conf
/var/logChứa file log của hệ thống & dịch vụ/var/log/syslog, /var/log/nginx/error.log
/homeThư mục của người dùng thông thường/home/ubuntu, /home/darktuan
/rootThư mục cá nhân của tài khoản root/root
/binCác lệnh cơ bản hệ thốngls, grep, mkdir, cat
/tmpFile tạm thời (bị xóa khi reboot)File download tạm, socket tạm
/procTrạng thái ảo của Kernel & CPU, RAM/proc/loadavg, /proc/meminfo
/devĐiểm đại diện thiết bị phần cứng/dev/sda, /dev/null

🎯 3 Vị Trí Vàng Kỹ Sư DevOps & SRE Luôn Phải Nhớ

Khi vận hành máy chủ Linux, bạn sẽ dành 90% thời gian thao tác tại 3 vị trí này:

  1. Cần cấu hình dịch vụ? ➔ Tìm trong /etc/
    • Muốn chỉnh port SSH? Mở /etc/ssh/sshd_config.
    • Muốn trỏ IP tĩnh nội bộ? Mở /etc/hosts.
  2. Hệ thống bị lỗi, cần tìm nguyên nhân? ➔ Tìm trong /var/log/
    • Đọc file log hệ thống: tail -f /var/log/syslog (hoặc /var/log/messages).
    • Xem log web server: tail -f /var/log/nginx/error.log.
  3. Cần kiểm tra trạng thái phần cứng và tiến trình? ➔ Tìm trong /proc/
    • Kiểm tra thông tin bộ nhớ: cat /proc/meminfo.
    • Kiểm tra mã lệnh một tiến trình: cat /proc/<PID>/cmdline.

🛠️ Lệnh Khám Phá Thư Mục Hữu Ích

# Xem đường dẫn thư mục hiện tại bạn đang đứng
pwd

# Liệt kê danh sách thư mục gốc kèm quyền hạn và kích thước
ls -lah /

# Xem cấu trúc cây thư mục mức 1 (nếu đã cài đặt tree)
tree -L 1 /

# Kiểm tra dung lượng còn trống của các phân vùng ổ đĩa
df -h

# Kiểm tra thư mục nào đang chiếm nhiều dung lượng nhất trong /var
sudo du -sh /var/* | sort -h

Bài tiếp theo đề xuất: Các Câu Lệnh Linux Cơ Bản – Làm chủ các câu lệnh điều hướng, phân tích log, lọc dữ liệu nâng cao và phân quyền thực chiến.