Lệnh fsck là công cụ quan trọng được sử dụng để kiểm tra và sửa chữa các lỗi không nhất quán của hệ thống tập tin trên Linux. Bài viết này được mình đúc kết từ hơn 5 năm kinh nghiệm thực chiến trong quá trình xử lý các sự cố lỗi Filesystem, treo server và cứu hộ dữ liệu cho hàng ngàn khách hàng. Thay vì chỉ cung cấp lý thuyết, mình sẽ hướng dẫn bạn cách vận hành fsck một cách an toàn nhất, giúp bạn chủ động phục hồi dữ liệu và tránh những sai lầm có thể dẫn đến mất dữ liệu vĩnh viễn khi hệ thống gặp sự cố.
Những điểm chính
- Quan điểm của mình: Dù các hệ thống file hiện đại ngày nay đã rất bền bỉ, nhưng mình nhận thấy việc nắm vững cách sử dụng fsck vẫn là kỹ năng cần thiết cho mọi quản trị viên để lấy lại dữ liệu trong các kịch bản hỏng phần cứng hoặc mất điện đột ngột mà các cơ chế tự sửa lỗi thông thường không thể xử lý.
- Khái niệm fsck: Hiểu rõ bản chất công cụ kiểm tra tính toàn vẹn giúp bạn chủ động khắc phục các sự cố không nhất quán trên hệ thống file Linux.
- Cú pháp và tùy chọn: Nắm vững cấu trúc lệnh và các tham số như
-y,-A,-fđể tự động hóa quy trình quét và sửa lỗi chuyên nghiệp. - Trường hợp ứng dụng: Biết chính xác thời điểm cần sử dụng lệnh để xử lý lỗi khởi động, lỗi I/O hoặc bảo trì định kỳ cho thiết bị lưu trữ.
- Hướng dẫn sử dụng cơ bản: Làm chủ quy trình 4 bước an toàn từ việc xác định phân vùng, ngắt kết nối đến thực thi sửa lỗi và gắn kết lại dữ liệu.
- Sửa chữa Root File System: Biết cách vận dụng chế độ Recovery để can thiệp và khắc phục lỗi cho phân vùng gốc một cách an toàn, hiệu quả.
- Câu hỏi thường gặp: Giải đáp các câu hỏi phổ biến liên quan đến lệnh fsck Linux.
Lệnh fsck là gì?
fsck là lệnh được sử dụng để kiểm tra tính toàn vẹn và khắc phục các lỗi cấu trúc không nhất quán trên hệ thống file. Được tích hợp sẵn như một công cụ mặc định trong hầu hết các bản phân phối Linux, fsck đóng vai trò quan trọng trong khi hệ điều hành gặp sự cố khởi động hoặc phân vùng đĩa bị lỗi không thể gắn kết.
Cụ thể, fsck hoạt động bằng cách đối chiếu cấu trúc hiện tại của hệ thống file với cấu trúc chuẩn. Khi phát hiện các sự cố bất thường như lỗi block, sai lệch thông tin inode hoặc hệ thống bị sập do mất điện đột ngột, fsck sẽ tiến hành quét và khôi phục dữ liệu để ngăn chặn nguy cơ mất mát thông tin. Một lưu ý vô cùng quan trọng là bạn tuyệt đối không được chạy lệnh này trên các phân vùng đang được mount để tránh làm hỏng dữ liệu vĩnh viễn.

Cú pháp và các tùy chọn của lệnh fsck Linux
Dưới đây là cấu trúc lệnh tiêu chuẩn của fsck:
fsck [tùy chọn] [hệ thống tập tin]Trong đó:
[tùy chọn]: Các tham số được sử dụng để thay đổi hành vi của lệnh.[hệ thống tập tin]: Tên thiết bị, phân vùng hoặc điểm mount cần kiểm tra, ví dụ như/dev/sdX1.
Dưới đây là bảng tổng hợp các tùy chọn thường dùng để điều khiển quá trình kiểm tra:
| Tùy chọn | Mô tả |
|---|---|
-A | Kiểm tra tất cả các hệ thống file được liệt kê trong file /etc/fstab. |
-a | Tự động sửa hệ thống file mà không cần hỏi xác nhận. |
-y | Chạy ở chế độ không tương tác, tự động trả lời “yes” cho tất cả các lời nhắc sửa lỗi. |
-f | Buộc fsck kiểm tra hệ thống file. |
-n | Chạy thử, chỉ thực hiện kiểm tra mà không ghi bất kỳ thay đổi thực tế nào lên đĩa. |
-r | Cho phép sửa chữa tương tác, hệ thống sẽ hỏi người dùng xác nhận trước khi sửa chữa từng lỗi. |
-R | Bỏ qua việc kiểm tra hệ thống file gốc, thường được dùng kết hợp với -A. |
-M | Bỏ qua các hệ thống file đang được mount để đảm bảo an toàn. |
-t | Chỉ định cụ thể loại hệ thống file cần kiểm tra. |
-C | Hiển thị thanh tiến trình đối với các định dạng ext2 và ext3 để người dùng theo dõi mức độ hoàn thành. |
-l | Thiết lập khóa trên thiết bị, ngăn chặn các tiến trình khác cố gắng truy cập phân vùng trong khi lệnh đang chạy. |
-N | Chỉ mô phỏng quá trình kiểm tra và báo cáo những thao tác sẽ được thực hiện mà không ghi đè dữ liệu thực tế. |
-P | Kích hoạt chế độ kiểm tra song song cho nhiều hệ thống file cùng lúc để tiết kiệm thời gian |
-T | Tắt việc hiển thị dòng tiêu đề giới thiệu thông tin khi lệnh bắt đầu khởi chạy để làm gọn giao diện console. |
-v | Kích hoạt chế độ chi tiết, xuất ra màn hình toàn bộ thông tin cụ thể về quá trình kiểm tra và sửa lỗi. |
Khi nào cần sử dụng lệnh fsck?
Việc nắm bắt đúng thời điểm để kích hoạt fsck là kỹ năng quan trọng giúp ngăn chặn sự cố lan rộng. Dưới đây là 4 trường hợp cần sử dụng fsck:
- Khắc phục sự cố không thể khởi động: Khi hệ thống không thể nạp hệ điều hành do lỗi cấu trúc phân vùng, bạn sử dụng fsck để sửa chữa các bad sector hoặc node bị hỏng, giúp hệ thống tiếp tục quy trình boot.
- Xử lý lỗi truy xuất dữ liệu: Khi bạn gặp các thông báo lỗi liên quan đến “Input/Output error” hoặc hệ thống file đột ngột chuyển sang chế độ “Chỉ đọc” để tự bảo vệ, đó là dấu hiệu cho thấy cấu trúc dữ liệu đang bị tổn hại nghiêm trọng và bạn cần sử dụng fsck để tái cấu trúc.
- Bảo trì dự phòng và kiểm soát tính nhất quán: Việc chạy fsck định kỳ giúp phát hiện sớm các sự cố ngầm, qua đó ngăn ngừa hậu quả mất mát dữ liệu thực tế.
- Kiểm tra sức khỏe thiết bị lưu trữ ngoài: Các thiết bị di động như USB, thẻ nhớ SD hoặc ổ cứng gắn ngoài rất dễ bị lỗi do tháo rút đột ngột, do đó, việc sử dụng fsck sẽ giúp bạn rà soát và sửa chữa các lỗi logic trên các thiết bị này để đảm bảo khả năng lưu trữ ổn định.

Cách sử dụng lệnh fsck cơ bản
Bước 1: Xác định phân vùng
Trước khi tiến hành sửa lỗi, bạn phải tìm ra tên chính xác của phân vùng đang gặp sự cố bằng cách mở Terminal và sử dụng các lệnh sau để liệt kê toàn bộ các ổ đĩa trên hệ thống:
lsblkHoặc lệnh:
df -hBước 2: Ngắt kết nối thiết bị
Để đảm bảo an toàn dữ liệu, bạn hãy ngắt kết nối phân vùng cần kiểm tra bằng lệnh sau:
sudo umount /dev/[partition]Sau khi chạy lệnh, bạn có thể dùng df -h một lần nữa để xác nhận phân vùng đã hoàn toàn biến mất khỏi danh sách các thiết bị đang được gắn kết.
Lỗi thường gặp: Rất nhiều người dùng gặp lỗi target is busy khi chạy lệnh umount. Nguyên nhân là do đang có một tiến trình đọc/ghi ngầm trên phân vùng đó. Bạn tuyệt đối không được cố gắng ép chạy fsck lúc này. Hãy dùng lệnh lsof +D /đường_dẫn_mount để tìm và tắt tiến trình đó trước khi unmount.
Bước 3: Kiểm tra và sửa lỗi
Sau khi đã ngắt kết nối, bạn chạy lệnh fsck trên phân vùng đó:
sudo fsck /dev/[partition]Lúc này, công cụ sẽ tiến hành rà soát cấu trúc đĩa. Nếu hệ thống phát hiện ra block nào bị hỏng thì sẽ dừng lại và hiển thị thông báo yêu cầu bạn nhấn y để xác nhận việc sửa chữa. Nếu bạn muốn hệ thống tự động sửa chữa mà không cần hỏi lại, hãy dùng tùy chọn -y:
sudo fsck -y /dev/[partition]Bước 4: Mount lại
Sau khi quá trình sửa chữa hoàn tất, bạn có thể gắn kết lại phân vùng để sử dụng bình thường bằng lệnh dưới đây:
sudo mount /dev/[partition]
Cách tự động sửa chữa tất cả các hệ thống file với fsck
Trong trường hợp cần sửa lỗi cho hệ thống file gốc, bạn không thể umount khi máy đang chạy bình thường mà phải thực hiện thông qua chế độ Recovery:
Bước 1: Đầu tiên, bạn hãy khởi động lại hệ thống Linux sau khi đã dừng các dịch vụ quan trọng như MySQL/MariaDB bằng lệnh:
sudo rebootKinh nghiệm của mình: Trước khi gõ lệnh reboot, bạn nên chạy lệnh sync khoảng 2-3 lần. Lệnh này giúp ép hệ thống ghi toàn bộ dữ liệu từ bộ nhớ đệm xuống ổ cứng ngay lập tức, từ đó giảm thiểu rủi ro mất các bản ghi cuối cùng của Database trước khi máy sập nguồn.
Bước 2: Trong quá trình khởi động lại, bạn hãy nhấn và giữ phím Shift để truy cập vào menu GNU GRUB.
Bước 3: Tại giao diện GRUB, bạn sử dụng phím mũi tên để chọn tùy chọn Advanced options for Ubuntu.

Bước 4: Tiếp theo, bạn chọn dòng có chữ recovery mode để vào menu khôi phục.

Bước 5: Trong danh sách các công cụ hiện ra, bạn chọn tùy chọn fsck.

Bước 6: Hệ thống sẽ hỏi xác nhận, bạn hãy chọn “yes” để đồng ý remount hệ thống tập tin ở chế độ đọc-ghi và tiến hành sửa lỗi.

Lỗi thường gặp: Nếu sau khi chạy fsck mà màn hình hiện thông báo UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY, điều này có nghĩa là lỗi quá nặng và hệ thống cần bạn xác nhận sửa từng khối dữ liệu một. Lúc này, bạn có thể phải dùng lệnh fsck -y /dev/sda1 (với -y để tự động chọn Yes cho mọi câu hỏi) để đẩy nhanh tiến độ.
Bước 7: Sau khi quá trình kiểm tra và sửa lỗi hoàn tất, bạn chọn tùy chọn resume từ Recovery Menu để khởi động lại máy vào chế độ bình thường.

Câu hỏi thường gặp
Tại sao không nên chạy fsck trên phân vùng đang được mount?
Khi một phân vùng đang được mount, hệ điều hành có thể đang ghi dữ liệu lên đó. Nếu fsck cố gắng sửa chữa cấu trúc file trong khi dữ liệu đang thay đổi liên tục, điều này sẽ dẫn đến xung đột và làm hỏng hoàn toàn hệ thống tập tin, khiến dữ liệu bị mất vĩnh viễn.
Thư mục /lost+found xuất hiện sau khi chạy fsck có ý nghĩa gì?
Trong quá trình sửa lỗi, nếu fsck tìm thấy các dữ liệu có nội dung nhưng không còn liên kết với tên file hay thư mục nào, lệnh sẽ khôi phục và đưa các dữ liệu này vào thư mục /lost+found. Bạn có thể kiểm tra thư mục này để tìm lại các dữ liệu bị thất lạc.
Nếu muốn hệ thống tự động chạy fsck trong lần khởi động tiếp theo thì làm thế nào?
Bạn có thể tạo một file rỗng có tên là forcefsck ngay tại thư mục gốc. Khi khởi động lại, hệ thống sẽ phát hiện file này và tự động kích hoạt quy trình kiểm tra ổ đĩa. Cú pháp tạo file /forcefsck như sau:sudo touch /forcefsck
Trong quy trình vận hành và bảo trì hệ thống Linux, lệnh fsck đóng vai trò quan trọng trong việc đảm bảo tính toàn vẹn và sự nhất quán của cấu trúc file. Công cụ này hỗ trợ khôi phục hệ thống sau các sự cố gián đoạn đột ngột và là giải pháp tối ưu để xử lý các lỗi Bad Sector hoặc Corrupted Inode. Chúc bạn thao tác với lệnh fsck thành công và hẹn gặp lại bạn trong các bài viết tiếp theo!




