Toàn tập về Cấu hình Hệ thống Tệp Filesystem Linux: Từ A-Z
7 min read

Table of contents
- Filesystem là gì? Tại sao nó quan trọng trong Linux?
- Cấu trúc cốt lõi của Filesystem Linux
- Journaling: "Bảo hiểm" cho Dữ liệu của bạn
- Khám phá các loại Filesystem phổ biến trên Linux
- Hiểu về Tiêu chuẩn Cấu trúc Thư mục (FHS)
- Các lệnh quản lý Filesystem không thể bỏ qua
- Hướng dẫn Phân vùng, Tạo và Gắn kết Filesystem
- Lời kết
Bạn mới bắt đầu với Linux hay muốn củng cố kiến thức về cách hệ điều hành này quản lý dữ liệu? Một trong những khái niệm nền tảng nhưng cực kỳ quan trọng chính là Hệ thống tệp (Filesystem). Hiểu rõ về filesystem không chỉ giúp bạn sử dụng Linux hiệu quả hơn mà còn là chìa khóa để quản trị hệ thống chuyên nghiệp.
Filesystem là gì? Tại sao nó quan trọng trong Linux?
Về cơ bản, Filesystem (hệ thống tệp) là phương pháp và cấu trúc dữ liệu mà Linux sử dụng để tổ chức và theo dõi các tệp tin trên ổ đĩa hoặc phân vùng. Hãy hình dung nó như một hệ thống tủ hồ sơ khổng lồ, nơi mỗi tệp là một tài liệu và filesystem là cách bạn sắp xếp, đánh dấu và tìm kiếm các tài liệu đó.
Điều quan trọng cần phân biệt là giữa một ổ đĩa/phân vùng vật lý và hệ thống tệp được lưu trữ trên đó. Để một ổ đĩa có thể sử dụng được, nó cần được "khởi tạo" với một hệ thống tệp cụ thể - quá trình này gọi là tạo hệ thống tệp.
Cấu trúc cốt lõi của Filesystem Linux
Hầu hết các hệ thống tệp trên UNIX/Linux đều chia sẻ một cấu trúc chung với các thành phần chính sau:
Superblock: Chứa thông tin tổng quan về toàn bộ hệ thống tệp, ví dụ như kích thước.
Inode: Lưu trữ mọi thông tin về một tệp ngoại trừ tên của nó (như quyền hạn, chủ sở hữu, kích thước, và quan trọng nhất là vị trí các khối dữ liệu).
Directory block (Khối thư mục): Lưu trữ tên tệp và số inode tương ứng. Về bản chất, thư mục cũng là một tệp đặc biệt.
Data block (Khối dữ liệu): Đây là nơi nội dung thực sự của tệp được lưu trữ. Mỗi khối dữ liệu chỉ thuộc về một tệp duy nhất hoặc là "miễn phí" (sẵn sàng sử dụng).
Journaling: "Bảo hiểm" cho Dữ liệu của bạn
Ngày nay, hầu hết các filesystem hiện đại đều sử dụng Journaling. Đây là một cơ chế giúp đảm bảo tính toàn vẹn dữ liệu, đặc biệt khi có sự cố (như mất điện đột ngột) trong quá trình ghi.
Cách hoạt động:
Punch in: Trước khi ghi dữ liệu thực sự vào ổ đĩa, các thay đổi sẽ được ghi vào một khu vực đặc biệt gọi là "journal".
Do work: Journal sau đó ghi file vào phân vùng ổ cứng.
Punch out: Khi quá trình ghi hoàn tất thành công, mục ghi trong journal sẽ được đánh dấu là hoàn thành hoặc xóa đi.
Nếu có lỗi xảy ra, hệ thống có thể kiểm tra lại journal để xác định các thao tác chưa hoàn tất và sửa chữa, thay vì phải quét toàn bộ ổ đĩa. Tuy nhiên, journaling có thể làm giảm một chút hiệu suất ghi dữ liệu do phải thực hiện thêm bước ghi vào journal.
Khám phá các loại Filesystem phổ biến trên Linux
Linux hỗ trợ rất nhiều loại filesystem, mỗi loại có ưu và nhược điểm riêng, phù hợp với các mục đích sử dụng khác nhau:
Ext (Ext2, Ext3, Ext4): Là "gia đình" filesystem truyền thống và phổ biến nhất của Linux.
Ext2: Không có journaling, phù hợp cho USB, thẻ nhớ vì ít ghi dữ liệu hơn.
Ext3: Là Ext2 có thêm journaling, tương thích ngược tốt. Tuy nhiên, vẫn còn một số hạn chế và không lý tưởng cho máy chủ.
Ext4: Là phiên bản hiện đại, cải tiến từ Ext3, tương thích ngược, hiệu suất tốt và là lựa chọn mặc định cho nhiều bản phân phối Linux hiện nay.
XFS: Phát triển bởi Silicon Graphics, mạnh mẽ trong việc xử lý tệp lớn, chống phân mảnh tốt, thường dùng cho server media. Tuy nhiên, không thể thu nhỏ (shrink) phân vùng và không quá tối ưu cho máy tính cá nhân.
BtrFS (Better FS): Phát triển bởi Oracle, hỗ trợ nhiều tính năng nâng cao như pooling, snapshot, nén dữ liệu, chống phân mảnh, thường dùng cho doanh nghiệp.
JFS: Phát triển bởi IBM, tiêu tốn ít tài nguyên, hiệu suất tốt với nhiều loại tệp, kiểm tra ổ đĩa nhanh.
ReiserFS: Từng là một bước tiến lớn, phù hợp cho database và server email.
Swap: Không hẳn là filesystem, đây là khu vực bộ nhớ ảo (bộ nhớ đệm) được kernel sử dụng khi hệ thống thiếu RAM hoặc dùng cho chế độ ngủ đông (Hibernate).
Hiểu về Tiêu chuẩn Cấu trúc Thư mục (FHS)
Để đảm bảo tính thống nhất, Linux tuân theo Filesystem Hierarchy Standard (FHS), quy định mục đích của từng thư mục gốc. Khác với Windows, Linux dùng dấu /
để phân cách đường dẫn và mọi thứ đều bắt đầu từ thư mục gốc /
.
Một số thư mục quan trọng:
/bin
: Chứa các lệnh thiết yếu cho người dùng./sbin
: Chứa các lệnh thiết yếu cho quản trị hệ thống./etc
: Chứa các tệp cấu hình hệ thống./home
: Thư mục nhà của người dùng thông thường./root
: Thư mục nhà của người dùng root./boot
: Chứa kernel và các tệp cần thiết cho quá trình khởi động./dev
: Chứa các tệp đại diện cho thiết bị phần cứng./lib
: Chứa các thư viện và module kernel./var
: Chứa dữ liệu thay đổi thường xuyên (logs, cache, queues)./tmp
: Chứa các tệp tạm thời./usr
: Chứa các tiện ích và ứng dụng cho người dùng./mnt
&/media
: Điểm gắn kết (mount point) cho các thiết bị tạm thời hoặc di động./opt
: Chứa các phần mềm cài đặt thêm./proc
: Hệ thống tệp ảo chứa thông tin về kernel và các tiến trình.
Các lệnh quản lý Filesystem không thể bỏ qua
df -khT
: Hiển thị dung lượng sử dụng và loại filesystem của các ổ đĩa đã mount. (Hình ảnh: Lệnhdf -khT
)mount | grep "/dev"
: Hiển thị các filesystem đang được mount. (Hình ảnh: Lệnhmount
)cat /etc/fstab
: Hiển thị tệp cấu hình các filesystem sẽ được mount tự động khi khởi động. (Hình ảnh: Lệnhcat /etc/fstab
)fsck -N /dev/sdX
: Hiển thị loại filesystem mà không thực hiện kiểm tra. (Hình ảnh: Lệnhfsck
)lsblk -fp
: Liệt kê các thiết bị khối (ổ đĩa, phân vùng) cùng với filesystem và UUID. (Hình ảnh: Lệnhlsblk
)
Hướng dẫn Phân vùng, Tạo và Gắn kết Filesystem
1. Phân vùng ổ đĩa bằng fdisk
Phân vùng là chia ổ đĩa thành các vùng logic để cài đặt HĐH hoặc lưu trữ dữ liệu. fdisk
là công cụ dòng lệnh phổ biến để làm việc này.
Bước 1: Xác định ổ đĩa:
lsblk -fp
.Bước 2: Bắt đầu
fdisk
:fdisk /dev/sdX
(thay/dev/sdX
bằng tên ổ đĩa của bạn, ví dụ:/dev/sdc
).Bước 3: Tạo phân vùng mới:
Gõ
n
(new).Chọn
p
(primary) hoặce
(extended) (thường chọnp
).Chọn số phân vùng (1-4).
Xác định kích thước (nhấn Enter để dùng toàn bộ).
Bước 4: Lưu thay đổi: Gõ
w
(write).Bước 5: Cập nhật bảng phân vùng:
partprobe /dev/sdX
.(Tùy chọn) Xóa phân vùng: Dùng lệnh
d
trongfdisk
.
2. Tạo Filesystem (Định dạng) bằng mkfs
Sau khi tạo phân vùng, bạn cần định dạng nó với một filesystem cụ thể.
Lệnh:
/sbin/mkfs -t <kiểu_fs> /dev/sdXN
Ví dụ (tạo Ext4):
mkfs -t ext4 /dev/sdc1
.Kiểm tra lại:
lsblk -fp
.
3. Gắn kết (Mount) và Ngắt kết nối (Unmount) Filesystem
Mount là quá trình làm cho filesystem trên phân vùng có thể truy cập được thông qua một thư mục (mount point) trên cây thư mục chính.
Tạo Mount Point:
mkdir /ten_thu_muc
(ví dụ:mkdir /data
).Mount tạm thời:
mount /dev/sdXN /ten_thu_muc
(ví dụ:mount /dev/sdb1 /opt
).Mount tự động khi khởi động (
/etc/fstab
):Lấy UUID:
blkid /dev/sdXN
.Mở
/etc/fstab
:nano /etc/fstab
.Thêm dòng mới theo định dạng:
UUID=<uuid_cua_ban> <mount_point> <fs_type> defaults 0 0
.Kiểm tra và áp dụng:
mount -a
. Lưu ý: Hãy cẩn thận khi sửafstab
, sai sót có thể khiến hệ thống không khởi động được.
Unmount:
umount /ten_thu_muc
hoặcumount /dev/sdXN
(ví dụ:umount /opt
). Điều này giúp đảm bảo dữ liệu được tháo ra an toàn.
Lời kết
Hiểu và làm chủ cấu hình hệ thống tệp là một kỹ năng nền tảng và thiết yếu đối với bất kỳ ai làm việc với Linux. Từ việc chọn loại filesystem phù hợp, phân chia ổ đĩa một cách hợp lý, đến việc quản lý các điểm gắn kết, tất cả đều góp phần tạo nên một hệ thống ổn định, hiệu quả và dễ quản lý. Hy vọng bài viết này đã cung cấp cho bạn những kiến thức hữu ích để tự tin hơn trên hành trình chinh phục Linux!