File System là gì?
Hệ thống tệp tin (file system) là cơ chế và cấu trúc dữ liệu mà hệ điều hành sử dụng để theo dõi và quản lý các tệp tin trên đĩa cứng hoặc phân vùng. Cách tổ chức tệp tin trên đĩa không chỉ là nền tảng để lưu trữ dữ liệu mà còn xác định loại hệ thống tệp tin được sử dụng.
File system đảm bảo dữ liệu được đọc và lưu một cách hiệu quả. Nó không chỉ giúp người dùng truy cập dữ liệu nhanh chóng mà còn đảm bảo an toàn và bảo mật. Sự hiệu quả của filesystem đóng vai trò quan trọng trong việc tối ưu hóa hiệu suất và bảo vệ thông tin.
Dưới đây là sơ đồ minh họa cho file system của hệ điều hành Linux:
Các loại file system phổ biến trên Linux
Trên Linux, file system được hỗ trợ rất đa dạng:
- Filesystem Cơ Bản: Bao gồm EXT2, EXT3, EXT4, XFS, Btrfs, JFS, NTFS, phục vụ nhu cầu lưu trữ thông thường và tương thích với các hệ điều hành khác.
- Filesystem Cho Lưu Trữ Flash: Chẳng hạn như các loại thẻ nhớ, phù hợp với các thiết bị lưu trữ di động.
- Filesystem Cho Cơ Sở Dữ Liệu: Dành cho các hệ thống quản lý cơ sở dữ liệu cần lưu trữ và truy cập hiệu quả.
- Filesystem Mục Đích Đặc Biệt: Như procfs, sysfs, tmpfs, squashfs, debugfs, hỗ trợ các nhu cầu quản lý hệ thống, lưu trữ tạm thời, và debug.
Mỗi loại đều có đặc điểm và ứng dụng riêng, tối ưu cho nhu cầu cụ thể của người dùng và hệ thống.
Filesystem Hierarchy Standard (FHS)
Filesystem Hierarchy Standard (FHS) là một tiêu chuẩn được thiết lập để quy định cách tổ chức các thư mục và tệp tin trong các hệ điều hành Linux và Unix-like. FHS đảm bảo rằng các tệp tin và thư mục được sắp xếp một cách nhất quán trong các hệ thống, giúp việc quản lý và tìm kiếm dữ liệu trở nên thuận lợi hơn.
Tiêu chuẩn này định nghĩa mục đích của mỗi thư mục, góp phần làm cho việc bảo trì hệ thống, phát triển phần mềm, và chia sẻ dữ liệu giữa các bản phân phối Linux trở nên dễ dàng hơn.
Khám phá các thư mục chính trong Linux
Trong hệ điều hành Linux, mỗi thư mục có vai trò riêng biệt, đóng vai trò cụ thể và quan trọng, giúp tổ chức và quản lý hệ thống một cách hiệu quả.
/root – Thư mục gốc
- Mọi tập tin và thư mục đều bắt đầu từ thư mục gốc này.
- Chỉ người dùng root mới có quyền ghi trong thư mục này.
- Lưu ý rằng /root là thư mục home của người dùng root, khác với /.
/bin – Chứa các chương trình nhị phân
- Chứa các file thực thi dạng nhị phân.
- Các lệnh Linux thông dụng cần thiết cho chế độ người dùng đơn được đặt tại đây.
- Các lệnh được tất cả người dùng của hệ thống sử dụng nằm ở đây.
- Ví dụ:
ps
,ls
,ping
,grep
,cp
.
/sbin – Chứa các chương trình nhị phân hệ thống
- Giống như /bin, /sbin cũng chứa các file thực thi nhị phân.
- Các lệnh Linux ở đây thường được quản trị viên hệ thống sử dụng cho mục đích bảo trì hệ thống.
- Ví dụ:
iptables
,reboot
,fdisk
,ifconfig
,swapon
.
/etc – Chứa các file cấu hình
- Chứa các file cấu hình cần thiết cho tất cả các chương trình.
- Bao gồm cả các script khởi động và tắt máy dùng để bắt đầu/dừng các chương trình riêng lẻ.
- Ví dụ:
/etc/resolv.conf
,/etc/logrotate.conf
.
/dev – Chứa các file thiết bị
- Chứa các ` thiết bị.
- Bao gồm thiết bị đầu cuối, USB hoặc bất kỳ thiết bị nào được kết nối với hệ thống.
- Ví dụ:
/dev/tty1
,/dev/usbmon0
.
/proc – Thông tin quá trình
- Chứa thông tin về các quá trình hệ thống.
- Là một hệ thống file ảo chứa thông tin về các quá trình đang chạy. Ví dụ: thư mục
/proc/{pid}
chứa thông tin về quá trình có pid đó. - Là hệ thống file ảo với thông tin dạng văn bản về nguồn lực hệ thống. Ví dụ:
/proc/uptime
.
/var – Variable files
- var là viết tắt của variable files.
- Nội dung của các file được dự kiến sẽ tăng lên có thể tìm thấy dưới thư mục này.
- Bao gồm:
- File nhật ký hệ thống (/var/log)
- Packages và file cơ sở dữ liệu (/var/lib)
- Email (/var/mail)
- Hàng đợi in ấn (/var/spool)
- Lock files (/var/lock)
- File tạm cần qua các lần khởi động lại (/var/tmp)
/tmp – Chứa các file tạm thời
- Thư mục chứa các file tạm thời được tạo bởi hệ thống và người dùng.
- Các file dưới thư mục này sẽ bị xóa khi hệ thống khởi động lại.
/usr – Chương trình người dùng
- Chứa các file nhị phân, thư viện, tài liệu và mã nguồn cho các chương trình cấp hai.
- /usr/bin chứa các file nhị phân cho chương trình người dùng. Nếu không tìm thấy file nhị phân người dùng dưới /bin, hãy tìm dưới /usr/bin. Ví dụ:
at
,awk
,cc
,less
,scp
. - /usr/sbin chứa các file nhị phân cho quản trị viên hệ thống. Nếu không tìm thấy file nhị phân hệ thống dưới /sbin, hãy tìm dưới /usr/sbin. Ví dụ:
atd
,cron
,sshd
,useradd
,userdel
. - /usr/lib chứa thư viện cho /usr/bin và /usr/sbin.
- /usr/local chứa các chương trình người dùng mà bạn cài đặt từ mã nguồn. Ví dụ, khi bạn cài đặt apache từ mã nguồn, nó sẽ được đặt dưới
/usr/local/apache2
.
/home – Thư mục Home
- Thư mục home cho tất cả người dùng để lưu trữ các file cá nhân.
- Ví dụ:
/home/yuto
,/home/toan
.
/boot – Chứa các file khởi động
- Chứa các file liên quan đến trình khởi động.
- Kernel initrd, vmlinux, grub được đặt dưới /boot.
- Ví dụ:
initrd.img-2.6.32-24-generic
,vmlinuz-2.6.32-24-generic
.
/lib – Thư viện hệ thống
- Chứa các file thư viện hỗ trợ cho các file nhị phân dưới /bin và /sbin.
- Tên file thư viện thường là
ld*
hoặclib*.so.*
. - Ví dụ:
ld-2.11.1.so
,libncurses.so.5.7
.
/opt – Ứng dụng bổ sung tùy chọn
- opt viết tắt của optional (tùy chọn).
- Chứa các ứng dụng bổ sung từ các nhà cung cấp riêng lẻ.
- Các ứng dụng bổ sung nên được cài đặt dưới /opt/ hoặc thư mục con của /opt/.
/mnt – Thư mục Mount
- Thư mục mount tạm thời nơi quản trị viên hệ thống có thể mount các hệ thống file.
/media – Chứa các thiết bị truyền thông di động
- Thư mục mount tạm thời cho các thiết bị di động.
- Ví dụ:
/media/cdrom
cho ổ đĩa CD-ROM/media/floppy
cho ổ đĩa mềm/media/cdrecorder
cho ổ đĩa ghi CD
/srv – Dữ liệu dịch vụ
- srv viết tắt của service (dịch vụ).
- Chứa dữ liệu liên quan đến các dịch vụ cụ thể của máy chủ.
- Ví dụ,
/srv/cvs
chứa dữ liệu liên quan đến CVS.
Tổng kết
Trong bài blog này, chúng ta đã khám phá sâu về file system và cách chúng được tổ chức trong Linux thông qua Filesystem Hierarchy Standard (FHS). Bài viết đã cung cấp cái nhìn toàn diện về cấu trúc và chức năng của các thư mục chính, giúp hiểu rõ về từng thư mục như /, /bin, /etc, đến vai trò của chúng trong việc quản lý dữ liệu và cấu hình hệ thống.
Hy vọng thông qua bài viết này, bạn có thể hiểu rõ hơn về cách thức hoạt động của Linux và tận dụng hiệu quả file system cho công việc quản trị và sử dụng hệ thống của mình.