Tìm hiểu Linux Filesystem
1. Filesystem là gì
- Filesystem là thứ xác định cách tổ chức, quản lý dữ liệu hay có thể nói là các đọc và ghi dữ liệu trên thiết bị. Filesystem cho phép người dùng truy cập nhanh chóng và an toàn khi vào các thư mục cần thiết
- Những lọai filesystem được Linux hỗ trợ:
- Filesystem cơ bản: ext2, ext3, ext4, XFS, NTFS, JFS, Btrfs,..
- Filesystem dành cho dạng lưu trữ flash: ubifs, JFFS2,…
- Filesystem dành cho cơ sở dữ liệu.
- Filesystem dành cho mục đích đặc biệt: procfs, sysfs, debugfs, squashfs,..
- Một phân vùng là một vùng chứa trong đó có một filesystem được lưu trữ.
Filesystem trên Linux còn được hiểu với một nghĩa khác là hệ thống phân cấp.
2. Hệ thống phân cấp trên Linux.
Filesystem của linux được tổ chức theo quy chuẩn cấp bậc của hệ thống tập tin Filesystem Hierarchy Standard (FHS). Tiêu chuẩn này định nghĩa mục đích của mỗi thư mục.
- Chức năng của các thư mục: / là thư mục gốc, mọi thư mục khác trong linux đều tìm thấy dưới thư mục này. /bin: là thư mục chứa các trương trình cơ bản.
/boot: chứa file sử dụng trong quá trình boot hệ điều hành.
/dev: Chứa các tập tin thiết bị ( CDRom, HDD, SSD,…)
/etc: Chứa các tập tin cấu hình hệ thống
/home: Thư mục cá nhân dành cho các user
/lib: chứa các thư viện phục vụ cho các chương trình.
/mnt: chứa các mount point
/opt: chứa các phần mềm mở rộng thường là của các hãng thứ 3
/sbin: chứa các chương trình của hệ thống
/srv: chứa các dữ liệu từ những dịch vụ chạy trên hệ thống.
/tmp: chứa các file tạm
/usr: chứa những tiện ích và ứng dụng của các user
/var: chứa các file biến
/root: chứa các file cá nhân của user root
/proc: một hệ thống ảo ghi chép tài liệu về kernel và các tiến trình, CPU.
3.Thư mục / (root) trong linux
- Mỗi file hay thư mục trong linux đều bắt đầu bằng thư mục / (root)
- Chỉ có tài khoản root mới có quyền ghi trong thư mục này
- Thư mục gốc được đại diện bởi dấu / chứ không phải là /root. /root là thư mục cá nhân của tài khoản root.
4.Thư mục binary
- Binary là các file chứa toàn bộ mã nguồn hoặc mã máy. Các file binary có thể được thực thi trên máy tính,
4.1./bin
- là thư mục chứa các binary được thực thi bởi tất cả người dùng.
- Cũng có các thư mục bin khác như thư mục bin trong thư mục home của một user vd:
/home/lam/bin
để chứa file thực thi của người dùng đó.4.2./sbin
- Thư mục /sbin là thư mục chứa các file thực thi binary để cấu hình hệ điều hành.
- Nhiều file thực thi binary yêu cầu quyền root để thực thi.
VD: iptables, reboot, fdisk, ifconfig, …
4.3./lib
- Các file binary ở /bin và /sbin thường sử dụng thư viện được chia sẻ ở trong /lib.
- Tên file thư viện có thể là id* hoặc lib.so. ví dụ:
- /lib/modules: là thư mục mô tả chi tiết về Linux Kernel.
4.4./opt
- Là thư mục để chứa các phần mềm tùy chọn, phần mềm bên thứ 3. Nó là các phần mềm không được cài từ những repository của các bản phân phối.
- Các gói phần mềm lớn có thể cài đặt các file ở /bin, /lib, /etc và cả /otp.
5.Các thư mục chứa cấu hình.
5.1. /boot
- Thư mục /boot chứa tất cả các file cần cho quá trình boot máy tính.
- Những file này thường ít thay đổi.
- Trong thư mục này có thể tìm thấy thư mục /boot/grub, nơi chứa file /boot/grub/grub.cfg. File grub.cfg là file xác định boot menu mà hiển thị trước khi kernel khởi động.
5.2. /etc
- Tất cả các file cấu hình dành cho máy được lưu ở /etc
- etc là viết tắt của Editable Text Configuration
- Rất nhiều file cấu hình của các ứng dụng, daemon, hoặc giao thức đều sử dụng .conf làm phần mở rộng.
/etc/init.d
- Rất nhiều bản phân phối Linux/Unix có một thư mục /etc/init.d để chứa các scripts để chạy và dừng các daemon.
/etc/skel/
là copy của thư mục home của một user mới tạo. Nó thường chứa các file ẩn như .bashrc
/etc/sysconfig/
- Chứa rất nhiều file cấu hình của RHEL.
6.Các thư mục chữa dữ liệu.
6.1./home
- Người dùng có thể lưu trữ dữ liệu cá nhân trong thư mục /home.
- Thư mục của người dùng thường được đặt là /home/$USERNAME nhưng điều này không bắt buộc.
- Bên cạnh việc cho người dùng thư mục riêng để lưu trữ file thì thư mục home của người dùng cũng được sử dụng làm nơi lưu trữ hồ sơ người dùng. Hồ sơ của người dùng bao gồm rất nhiều file ẩn được bắt đầu bởi dấu chấm. Các file ẩn này chứa các cấu hình dành riêng cho user đó.
6.2. /root
- Trên nhiều hệ thống thư mục /root là vị trí mặc định để lưu trữ dữ liệu và hồ sơ của user root.
6.3. /media
- là thư mục để chứa các mount point cho các thiết bị lưu trữ di động như usb, đĩa cd, thẻ nhớ sd,…
6.4. /mnt
- Thư mục này nên chống và chỉ chứa các mount point tạm thời.
6.5. /tmp
- Ứng dụng và người dùng thường sử dụng thư mục /tmp để lưu trữ dữ liệu tạm thời khi cần. Dữ liệu trong /tmp có thể sử dụng ổ cứng hoặc RAM.
- Không lưu trữ nhưng dư liệu quan trong trong thư mục này.
7.Nhưng thư mục trong bộ nhớ RAM.
7.1./dev
- File thiết bị trong /dev là các file thông thường, nhưng thực tế nó không nằm trên ổ đĩa cứng. Những file này được thêm vào /dev khi mà kernel nhận ra các phần cứng.
- Những phần cứng như là ổ đĩa cứng được đại diện bởi file thiết bị trong /dev.
- Ngoài đại diện cho các thiết bị phần cứng thì có một số file thiết bị là trường hợp đặc biệt.
/dev/tty và /dev/pts
- Ví dụ, /dev,tty1 là đại diện cho một terminal hay console kết nối đến hệ thống. Khi gõ một lệnh trên terminal đó là một phần của giao diện đồ họa như Gnome hay KDE, sau đó terminal đó được đại diện là /dev/pts/1 (1 có thể là số khác).
/dev/null
- Đây là một thư mục đặc biệt được coi như là hố đen trong hệ điều hành linux. mọi thứ được ghi vào đây đều biến mất và không thể lấy lại.
7.2. /proc
- Là một thư mục đặc biệt nhưng nó không lưu trữ ở ổ cứng. Nó như là cái nhìn cho kernel, hay những gì mà kernel quản lý và tương tác trực tiếp với nó.
- /proc là một proc filesystem.
- Những file trong /proc được cập nhật liên tục.
- Hầu hết các file có 0 bytes, nhưng nó lại chứa dữ liêu, có thể là rất nhiều dữ liệu.
ví dụ:
/proc/cpuinfo
- Hầu hết các file trong /proc là các file read only, một số yêu cầu quyền root, một số file có thể ghi và rất nhiều file trong /proc/sys có thể ghi.
/proc/kcore
- Bộ nhớ RAM vật lý được trình bày bởi /proc/kcore
- Kích thước của file /proc/kcore tương đương với kích thước RAM vật lý.
7.3. /sys
- Thư mục /sys được sử dụng cho phiên bản kernel 2.6. từ 2.6, Linux sử dụng sysfs để hỗ trợ usb và IEEE 1394.
- /sys lưu trữ thông tin kernel về phần cứng.
8. /usr - Unix System Resource
- /usr phát âm giống user, nhưng nó là viết tắt của Unix System Resource. /usr thường chứa dữ liệu có thể chia sẻ và chỉ đọc.
8.1. /usr/bin
Thư mục /usr/bin chứa rất nhiều file thực thi được coi là các lệnh.
8.2. /usr/include
Thư mục /usr/include chứa các thư viện cho C.
8.3. /usr/lib
Là thư mục chứa thư viện mà không được sử dụng trực tiếp từ người dùng hay scripts.
8.4. /usr/local
dùng để người quản trị dùng để cài đặt các phần mềm local.
8.5. /usr/share
là thư mục chứa dữ liệu độc lập /usr/share/man là thư mục chứa các trang hướng dẫn cho các lệnh.
8.6. /usr/src
Là thư mục chứa các file nguồn của kernel.
9. /var - dữ liệu biến
Những file có khích thước không thể tính toán được như log, cache và spool thường được lưu ở /var
9.1. /var/log
Thư mục /var/log như là một điểm trung tâm để chứa tất cả những file log.
9.2. /var/log/messages
Thường là file đầu tiên để kiểm tra điều gì vừa sảy ra với hệ thống REHL. Với Debian và Ubuntu là /var/log/syslog
9.3. /var/cache
Là thư mục chứa cache của toàn bộ ứng dụng.
9.4. /var/lib
Là thư mục chứa thông tin về trạng thái của ứng dụng
9.5. /var/…
/var cũng chứa Process ID ở /var/run, file tạm cho quá trình reboot ở /var/tmp,…