Trong bài viết này, chúng tôi sẽ xem xét lệnh fsck và cách sử dụng nó để giúp bạn sửa lỗi đĩa Linux.
Hệ thống tệp Linux đảm nhận việc tổ chức cách dữ liệu được lưu trữ và khôi phục. Từ một cách nào đó, theo thời gian, hệ thống tệp có thể bị hỏng và một số phần của nó có thể không thể truy cập được. Nếu hệ thống tệp của bạn phát triển sự không nhất quán như vậy, nên kiểm tra tính toàn vẹn của nó.
Có thể hoàn thành điều này thông qua một tiện ích hệ thống gọi là fsck (kiểm tra tính nhất quán của hệ thống tệp), nó tự động kiểm tra hệ thống tệp gốc trong quá trình khởi động hoặc chạy thủ công.
Khi nào thì sử dụng lệnh fsck trong Linux
Có các tình huống khác nhau khi bạn muốn chạy lệnh fsck. Dưới đây là vài ví dụ:
- Hệ thống không khởi động được.
- Các tệp trên hệ thống bị hỏng (thường bạn có thể thấy lỗi đầu vào/đầu ra).
- Ổ đĩa gắn kết (kể cả ổ flash/thẻ SD) không hoạt động như mong đợi.
Tùy chọn lệnh fsck
Lệnh fsck cần được chạy với quyền superuser hoặc root. Bạn có thể sử dụng nó với các đối số khác nhau. Cách sử dụng của chúng phụ thuộc vào trường hợp cụ thể của bạn. Dưới đây là một số tùy chọn quan trọng hơn:
-A
– Sử dụng để kiểm tra tất cả các hệ thống tệp. Danh sách được lấy từ /etc/fstab
.
-C
– Hiển thị thanh tiến trình.
-l
– Khóa thiết bị để đảm bảo không có chương trình khác sẽ cố gắng sử dụng phân vùng trong quá trình kiểm tra.
-M
– Không kiểm tra các hệ thống tệp được gắn kết.
-N
– Chỉ hiển thị những gì sẽ được thực hiện - không thực hiện thay đổi thực tế.
-P
– Nếu bạn muốn kiểm tra các hệ thống tệp song song, bao gồm cả hệ thống gốc.
-R
– Không kiểm tra hệ thống tệp gốc. Điều này chỉ hữu ích khi sử dụng ‘-A
‘.
-r
– Cung cấp thống kê cho mỗi thiết bị đang được kiểm tra.
-T
– Không hiển thị tiêu đề.
-t
– Chỉ định độc quyền các loại hệ thống tệp Linux cần được kiểm tra. Loại có thể là danh sách phân cách bằng dấu phẩy.
-V
– Cung cấp một mô tả về những gì đang được thực hiện.
Chạy lệnh fsck để sửa lỗi hệ thống tệp Linux
Để chạy lệnh fsck, bạn cần đảm bảo phân vùng bạn sẽ kiểm tra không được gắn kết. Vì mục đích của bài viết này, tôi sẽ sử dụng ổ đĩa thứ hai của mình /dev/sdb
được gắn kết ở /mnt
.
Dưới đây là những gì sẽ xảy ra nếu tôi cố gắng chạy lệnh fsck khi phân vùng đã được gắn kết.
# fsck /dev/sdb
Để tránh điều này, hãy tháo gỡ phân vùng sử dụng lệnh:
# umount /dev/sdb
Sau đó, lệnh fsck có thể được chạy an toàn với:
# fsck /dev/sdb
Hiểu mã thoát của lệnh fsck
Sau khi chạy lệnh fsck, nó sẽ trả về một mã thoát. Các mã này có thể được thấy trong hướng dẫn của fsck bằng cách chạy:
# man fsck
0 No errors
1 Filesystem errors corrected
2 System should be rebooted
4 Filesystem errors were left uncorrected
8 Operational error
16 Usage or syntax error
32 Checking canceled by user request
128 Shared-library error
Sửa chữa hệ thống tệp Linux bằng lệnh fsck
Đôi khi có thể tìm thấy nhiều lỗi trên một hệ thống tệp. Trong các trường hợp như vậy, bạn có thể muốn lệnh fsck thử tự động sửa các lỗi. Điều này có thể được thực hiện với:
# fsck -y /dev/sdb
Cờ -y
, tự động trả lời “yes”
các lời nhắc từ fsck để sửa một lỗi.
Tương tự, bạn có thể chạy lệnh tương tự trên tất cả các hệ thống tệp (không có root):
$ fsck -AR -y
Làm thế nào để chạy fsck trên phân vùng gốc của Linux
Trong một số trường hợp, bạn có thể cần chạy lệnh fsck trên phân vùng gốc của hệ thống của bạn. Vì bạn không thể chạy lệnh fsck khi phân vùng được gắn kết, bạn có thể thử một trong những tùy chọn sau:
- Ép lệnh fsck khi khởi động hệ thống
- Chạy fsck ở chế độ cứu hộ
Chúng tôi sẽ xem xét cả hai tình huống.
Ép lệnh fsck khi khởi động hệ thống
Việc này khá dễ dàng để thực hiện, bạn chỉ cần tạo một tệp có tên forcefsck trong phân vùng gốc của hệ thống của bạn. Sử dụng lệnh sau:
# touch /forcefsck
Sau đó, bạn chỉ cần ép buộc hoặc lập lịch khởi động lại hệ thống của bạn. Trong lần khởi động tiếp theo, fsck sẽ được thực hiện. Nếu thời gian chết chóc quan trọng, nên lên kế hoạch cẩn thận cho việc này, vì nếu có nhiều inode đã được sử dụng trên hệ thống của bạn, fsck có thể mất một chút thời gian phụ.
Sau khi hệ thống của bạn khởi động, kiểm tra xem tệp có tồn tại không:
# ls /forcefsck
Nếu có, bạn có thể muốn xóa nó để tránh fsck trên mỗi lần khởi động hệ thống.
Chạy fsck ở chế độ cứu hộ
Chạy lệnh fsck ở chế độ cứu hộ đòi hỏi một số bước nữa. Đầu tiên, chuẩn bị hệ thống của bạn để khởi động lại. Dừng bất kỳ dịch vụ quan trọng nào như MySQL/MariaDB v.v. và sau đó gõ lệnh:
# reboot
Trong quá trình khởi động, giữ phím shift
để hiển thị menu grub. Chọn “Tùy chọn nâng cao”.
Sau đó chọn “Chế độ cứu hộ”.
Trong menu tiếp theo, chọn “fsck”.
Bạn sẽ được hỏi liệu bạn có muốn phân vùng /
được gắn kết lại không. Chọn “yes”
.
Bạn sẽ thấy một cái tương tự như thế này.
Sau đó, bạn có thể tiếp tục khởi động bình thường bằng cách chọn “Tiếp tục”.
Trong hướng dẫn này, bạn đã tìm hiểu cách sử dụng fsck và chạy kiểm tra tính nhất quán trên các hệ thống tệp Linux khác nhau. Nếu bạn có bất kỳ câu hỏi nào về lệnh fsck, đừng ngần ngại đăng chúng trong phần bình luận dưới đây.