Hệ thống tệp
Xem thửTrên Linux, hệ thống tệp (filesystem) là cách tổ chức dữ liệu trên đĩa (và các nguồn khác) thành thư mục và tệp mà người dùng/process có thể đọc, ghi, thực thi. Kernel cung cấp lớp VFS (Virtual File System) để ext4, xfs, nfs, tmpfs… trông giống nhau từ phía lệnh ls, cat, mount.
“Everything is a file”
Nhiều đối tượng hệ thống xuất hiện dưới dạng đường dẫn:
| Loại | Ví dụ | Ý nghĩa vận hành |
|---|---|---|
| Tệp thường | /etc/nginx/nginx.conf | Cấu hình, dữ liệu |
| Thư mục | /var/log | Chứa log |
| Device | /dev/sda1, /dev/null | Block/char device |
| Pseudo FS | /proc, /sys | Trạng thái kernel (không phải đĩa thật) |
| Socket / pipe | dưới /run, /tmp | Giao tiếp process |
ls -l /dev/null /proc/self/status /etc/hostname
df -hT
findmnt /
df -hT cho biết filesystem nào gắn ở đâu và còn bao nhiêu dung lượng — câu hỏi đầu tiên khi server “disk full”.
Đang tải sơ đồ…
Cách đọc sơ đồ. Lệnh của bạn chỉ nói chuyện với lớp VFS trong kernel, còn VFS chuyển yêu cầu cho đúng loại filesystem phía dưới: ổ đĩa (ext4, xfs), mạng (nfs), RAM (tmpfs) hoặc trạng thái kernel (/proc, /sys). Đó là lý do cùng một lệnh ls dùng được trên mọi nguồn dữ liệu.
Mount: gắn filesystem vào cây thư mục
Linux không có ổ C:\, D:\. Mọi thứ bắt đầu từ / (root). Phân vùng khác được mount vào một thư mục (mount point):
findmnt -D
lsblk -f
Ví dụ điển hình trên server:
/— hệ thống chính/boot— kernel/initramfs (đôi khi tách riêng)/home— home user (có thể volume riêng)/var— log, cache, DB data (nên đủ lớn)- bind mount / NFS cho shared storage
Đang tải sơ đồ…
Cách đọc sơ đồ. Disk, partition, filesystem và mount point là bốn thứ khác nhau. Lệnh mount không sao chép dữ liệu mà gắn một filesystem vào một thư mục có sẵn, nên khi đi vào /var bạn thực chất đang đọc filesystem trên phân vùng đó. Dùng lsblk -f và findmnt để xem từng tầng.
Inode và metadata
Mỗi tệp có inode chứa metadata: quyền, owner, kích thước, timestamp, con trỏ khối dữ liệu. Tên tệp nằm trong thư mục; xóa tên không nhất thiết giải phóng inode ngay nếu còn hard link khác.
ls -i /etc/hostname
stat /etc/hostname
df -ih
df -ih xem inode còn trống — đôi khi disk còn GB nhưng hết inode vì quá nhiều file nhỏ (mail spool, container layer).
Góc nhìn SysAdmin
Khi app báo “No space left on device”:
df -h— hết block?df -ih— hết inode?du -xh /var | sort -h | tail— thư mục nào phình?- Kiểm tra mount: log có đang ghi nhầm vào
/không?
Đang tải sơ đồ…
Cách đọc sơ đồ. Lỗi "No space left" có hai nguyên nhân khác nhau: hết block hoặc hết inode, nên phải kiểm tra cả df -h lẫn df -ih trước khi tìm thư mục phình to. Bước cuối kiểm tra mount để chắc rằng dữ liệu không bị ghi nhầm vào filesystem gốc /.
Lỗi thường gặp
- Nhầm “filesystem đầy” với “quota user” hoặc “read-only remount sau I/O error”.
- Xóa file đang được process giữ (
lsof/fuser) — dung lượng chưa trả về đến khi process đóng fd. - Coi
/proclà đĩa thật rồi cốdutoàn bộ máy mà không loại trừ pseudo FS.