Linux Filesystem Hierarchy Standard (FHS)
Filesystem Hierarchy Standard (FHS) là tiêu chuẩn phân cấp thư mục và nội dung của chúng trong hệ thống Unix và các hệ điều hành tương tự Unix. Nó mô tả vị trí và nội dung của các tập tin và thư mục trong hệ thống. Phiên bản hiện tại của FHS là 3.0 được phát hành vào ngày 3 tháng 6 năm 2015 và được duy trì bởi Free Standards Group.
Trong các hệ thống tương tự Unix, mọi thứ đều được coi là một tập tin. Tuy nhiên, chỉ có các bản phân phối Linux tuân thủ FHS và một phần do mỗi bản phân phối có chính sách riêng của mình, vì vậy bạn có thể thấy một số sự khác biệt trong cấu trúc thư mục giữa các bản phân phối khác nhau.
Nếu bạn muốn tìm hiểu thông tin về FHS của hệ thống của mình, hãy nhập lệnh “man hier”. Nó sẽ hiển thị cấu trúc thư mục của hệ thống của bạn
Thư mục gốc
Thư mục gốc (Root Directory) là thư mục cha của tất cả các thư mục khác trong hệ thống Linux. Thư mục gốc được biểu diễn bằng ký tự forward slash (/) và tất cả các file và thư mục trong hệ thống sẽ được lưu trữ dưới thư mục gốc này, cho dù chúng được lưu trữ trên các thiết bị vật lý hoặc ảo khác nhau. Hệ thống file và thư mục trên Linux được tổ chức theo tiêu chuẩn hệ thống phân cấp thư mục (Filesystem Hierarchy Standard – FHS), trong đó thư mục gốc là thư mục cấp cao nhất. Bằng cách sử dụng lệnh “ls /”, chúng ta có thể liệt kê tất cả các file và thư mục trực tiếp nằm trong thư mục gốc của hệ thống Linux.
Thư mục Binary
Thư mục Binary là nơi chứa các file nhị phân (binary files), các file này chứa mã nguồn được biên dịch, chúng được gọi là các file thực thi (executable files) vì chúng có thể được thực thi trên máy tính.
Thư mục Binary chứa các thư mục sau:
- /bin
- /sbin
- /lib
- /opt
Thư mục ‘/bin’ chứa các file nhị phân của người dùng, các file thực thi, các lệnh Linux được sử dụng trong chế độ người dùng đơn, và các lệnh chung được sử dụng bởi tất cả các người dùng, ví dụ như cat, cp, cd, ls, vv.
Thư mục ‘/bin’ không chứa các thư mục con.
Các thư mục này là những thư mục quan trọng trong hệ thống file của Linux và được quy định bởi tiêu chuẩn FHS (Filesystem Hierarchy Standard).
- /bin (binary): chứa các tập tin nhị phân, các chương trình thực thi được sử dụng bởi tất cả người dùng trong hệ thống, chẳng hạn như cat, cp, ls, mv, rm, v.v.
- /sbin (system binary): chứa các tập tin nhị phân thực thi được sử dụng bởi quản trị hệ thống (root), chẳng hạn như iptables, reboot, shutdown, v.v.
- /lib (library): chứa các tập tin thư viện chung và các file hỗ trợ hệ thống, chẳng hạn như các file liên kết động, nhưng không bao gồm các file cấu hình.
- /opt (optional): chứa các ứng dụng tùy chọn của người dùng, có thể được cài đặt bên ngoài khung chương trình quản lý gói của hệ thống.
Những thư mục này đóng vai trò quan trọng trong quản lý hệ thống và cung cấp các công cụ và tài nguyên cần thiết cho hệ thống.
Thư mục etc
Thư mục cấu hình trong Linux chứa các file được cấu hình để cấu hình các thông số và thiết lập ban đầu cho một số chương trình máy tính. Thư mục cấu hình bao gồm các thư mục con như sau:
- /boot
- /etc
Bạn có thể tìm thấy thư mục ‘/boot/grub’ chứa ‘/boot/grub/grub.cfg’ (hệ thống cũ có thể có ‘/boot/grub/grub.conf’) xác định menu khởi động được hiển thị trước khi kernel bắt đầu.
/boot: Thư mục chứa các tập tin cần thiết để khởi động hệ thống, bao gồm cả các tập tin khởi động của trình tải khởi động (bootloader) như GRUB. Thông thường, các file tin trong thư mục này chỉ chứa các file tin liên quan đến quá trình khởi động ban đầu của hệ thống.
/etc: Thư mục chứa các tập tin cấu hình cho các ứng dụng và hệ thống. Các tập tin này giúp người dùng tùy chỉnh các thiết lập cho hệ thống và các ứng dụng, bao gồm các file tin cấu hình cho các dịch vụ hệ thống, tài khoản người dùng, mạng, và các ứng dụng cụ thể.
Một số thư mục thông thường trong /etc là:
- /etc/init.d/: Thư mục này chứa các script để kiểm soát hệ thống hoặc bắt đầu và dừng các tiến trình nền (daemons). Tiến trình “init” là một tiến trình daemon luôn chạy cho đến khi hệ thống được tắt.
- /etc/X11/: Các file cấu hình của hệ thống cửa sổ X được lưu trữ trong thư mục này. File cấu hình của hiển thị đồ họa (xorg.conf) cũng được lưu trữ ở đây.
- /etc/skel/: Thư mục này chứa các file mẫu được sử dụng để tạo các tập tin cấu hình cho một người dùng mới được tạo. Các tập tin này có thể bao gồm các cài đặt mặc định, như biểu tượng mặc định, các tập tin cấu hình và các tập tin bảng điều khiển.
Thư mục Data
Thư mục Data được sử dụng để lưu trữ dữ liệu của hệ thống.
Data directory bao gồm các thư mục sau:
- /home: Thư mục chứa dữ liệu của người dùng, bao gồm các file và thư mục cá nhân cho từng người dùng.
- /root: Thư mục chứa dữ liệu của người dùng root, tức là người dùng có quyền hạn tối cao trên hệ thống.
- /srv: Thư mục chứa các dữ liệu dịch vụ, chẳng hạn như các file dữ liệu của máy chủ web.
- /media: Thư mục chứa các thiết bị lưu trữ truyền thống, chẳng hạn như CD-ROM hoặc USB.
- /mnt: Thư mục chứa các thiết bị lưu trữ tạm thời hoặc thiết bị lưu trữ được gắn kết tạm thời trên hệ thống.
- /tmp: Thư mục chứa các file tạm thời được tạo ra bởi các chương trình hoặc quá trình trên hệ thống. Tệp tin trong /tmp sẽ bị xóa khi hệ thống khởi động lại hoặc khi các file không còn cần thiết.
Thư mục Memory
Thư mục Memory chứa các tập tin của toàn bộ hệ thống. Tất cả thông tin của các thiết bị, quá trình đang chạy, dữ liệu hoặc thông tin liên quan đến hệ thống được lưu trữ trong thư mục này.
Cụ thể, Memory directory bao gồm các thư mục sau:
- /dev: Chứa tập tin thiết bị, bao gồm các thiết bị ngoại vi như ổ đĩa cứng, đĩa mềm, USB, thiết bị âm thanh, thiết bị đầu cuối, vv. Nó cho phép hệ thống tương tác với các thiết bị này thông qua các tập tin thiết bị tương ứng.
- /proc: Là một hệ thống tập tin ảo (virtual file system) chứa thông tin về các quá trình đang chạy, thông tin phần cứng, bộ nhớ, hệ thống file, các kết nối mạng và các thông tin hệ thống khác. Các tập tin và thư mục trong /proc là ảo, tức là chúng không phải là tập tin thực sự được lưu trữ trên đĩa cứng mà là các tập tin được tạo ra bởi hệ điều hành để hiển thị thông tin về trạng thái hệ thống.
- /sys: Là một hệ thống tập tin ảo khác, tương tự như /proc, chứa thông tin về các thiết bị phần cứng, các tham số kernel và các thông tin hệ thống khác. Tập tin và thư mục trong /sys cũng là ảo và được tạo ra bởi hệ điều hành để hiển thị thông tin về các thiết bị phần cứng và trạng thái hệ thống.
Thư mục Unix System Resources
Thư mục Unix System Resources (/usr) là nơi chứa các tài nguyên hệ thống cho người dùng. Nó bao gồm các thư mục con sau đây:
- /usr/bin: Chứa các tập tin thực thi cho các lệnh chung được sử dụng bởi người dùng và các chương trình ứng dụng.
- /usr/include: Chứa các file tiêu đề (header) dành cho phát triển ứng dụng.
- /usr/lib: Chứa các thư viện chia sẻ và các file đối tượng (object files) được sử dụng bởi các chương trình.
- /usr/share: Chứa các tài nguyên chia sẻ như hình ảnh, âm thanh, biểu tượng, tài liệu hướng dẫn, v.v.
- /usr/local: Chứa các ứng dụng và file hỗ trợ do người dùng tự cài đặt và không phải là một phần của bản phân phối hệ thống.
- /usr/src: Chứa mã nguồn cho kernel Linux hoặc các ứng dụng cụ thể.
Thư mục biến (/var)
Thư mục biến (/var) trong Linux được sử dụng để lưu trữ dữ liệu thay đổi trong quá trình hoạt động của hệ thống.
- /var/log: Thư mục này chứa các file nhật ký (log) của hệ thống, bao gồm các thông tin liên quan đến tất cả các sự kiện và hoạt động trên hệ thống.
- /var/cache: Thư mục này chứa các file cache của các ứng dụng, chẳng hạn như gói phần mềm hoặc trang web đã được truy cập gần đây.
- /var/spool: Thư mục này chứa các file đang chờ xử lý, bao gồm các file in ấn, thư điện tử và các tác vụ hệ thống khác.
- /var/lib: Thư mục này chứa dữ liệu động của các ứng dụng, chẳng hạn như cơ sở dữ liệu và trạng thái của các ứng dụng.
Các thư mục không nằm trong tiêu chuẩn FHS (Non-Standard Directories)
- /cdrom: Thư mục này thường chứa dữ liệu được lưu trữ trên đĩa CD hoặc DVD. Trong hầu hết các trường hợp, đây là một điểm gắn kết cho thiết bị đọc đĩa quang, và nó có thể được sử dụng để truy cập vào nội dung của đĩa CD hoặc DVD trong hệ thống.
- /run: Thư mục này chứa dữ liệu tạm thời của các tiến trình đang chạy trên hệ thống. Thư mục này được tạo ra mỗi khi hệ thống khởi động và bị xóa khi hệ thống tắt. Nó chứa các file socket, file lock, file PID (Process ID), file chạy tạm thời,…
- /lost+found: Thư mục này chứa các tập tin bị hỏng hoặc bị xóa không đúng cách từ các phân vùng được lưu trữ trên ổ đĩa. Khi hệ thống file tìm thấy các tập tin như vậy, nó sẽ di chuyển chúng vào thư mục /lost+found để lưu trữ tạm thời. Người dùng có thể kiểm tra thư mục này để xem xét các tập tin bị hỏng hoặc bị xóa không đúng cách và có thể cố gắng khôi phục chúng.