6 ví dụ áp dụng lệnh fsck trên Centos / Ubuntu / Debian / Fedora

Lệnh fsck (kiểm tra tính nhất quán hệ thống tệp) là một công cụ dòng lệnh được sử dụng để kiểm tra tính nhất quán của hệ thống tệp gốc tự động trong quá trình khởi động hoặc chạy thủ công.

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 chữa lỗi đĩa Linux. 

Khi nào bạn nên sử dụng lệnh fsck trong Linux

Có những tình huống khác nhau khi bạn muốn chạy fsck. Dưới đây là một số 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 thấy lỗi đầu vào/đầu ra).
  • Ổ đĩa kết nối (bao gồm ổ 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 đặc quyền người dùng siêu (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ệ tệp. Danh sách được lấy từ tệp /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 nào 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ệ 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ệ tệp đồng thời, bao gồm cả hệ tệp gốc.
  • -R - Không kiểm tra hệ tệp gốc. Chỉ hữu ích khi sử dụng với '-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 - Xác định độc quyền các loại hệ tệp Linux để kiểm tra. Các loại có thể là danh sách được phân tách bằng dấu phẩy.
  • -V - Cung cấp mô tả về những gì đang được thực hiện.

Chạy lệnh fsck để sửa lỗi hệ thống

Để chạy lệnh fsck, bạn cần đảm bảo rằng phân vùng bạn sẽ kiểm tra không được gắn kết. Ví dụ, trong trường hợp này, tôi sẽ sử dụng ổ đĩa thứ hai /dev/sdb được gắn kết trong /mnt.

Dưới đây là những gì sẽ xảy ra nếu tôi cố gắng chạy fsck khi phân vùng đang được gắn kết. 

# fsck /dev/sdb

Chạy fsck trên phân vùng được gắn kết

Để tránh điều này, hãy tháo gắn phân vùng bằng lệnh unmount. 

# umount /dev/sdb

Sau đó, bạn có thể chạy fsck một cách an toàn với lệnh fsck và đường dẫn tới phân vùng.

# fsck /dev/sdb

Chạy fsck trên phân vùng Linux

Hiểu về mã thoát (Exit Codes) của fsck

Sau khi chạy fsck, nó sẽ trả về một mã thoát (exit code). Những mã này có thể được xem trong hướng dẫn của fsck bằng cách chạy lệnh: 

#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  

Fsck sửa chữa hệ thống tập tin Linux

Đôi khi có thể tìm thấy nhiều lỗi trên một hệ tệp. Trong những trường hợp như vậy, bạn có thể muốn fsck tự động cố gắng sửa các lỗi.

# fsck -y /dev/sdb

Điều này có thể được thực hiện bằng cách sử dụng tùy chọn -y để tự động trả lời "yes" cho bất kỳ lời nhắc nào từ fsck để sửa lỗi.

Tương tự, bạn có thể chạy lệnh tương tự trên tất cả các hệ tệp (không cần quyền root):

$ fsck -AR -y 

Làm thế nào để chạy fsck trên phân vùng gốc Linux

Trong một số trường hợp, bạn có thể cần chạy fsck trên phân vùng gốc của hệ thống. Vì bạn không thể chạy fsck khi phân vùng đang được gắn kết, bạn có thể thử một trong những tùy chọn sau:

  • Ép buộc fsck khi khởi động hệ thống
  • Chạy fsck trong chế độ cứu hộ

Chúng ta sẽ xem xét cả hai tình huống này.

Ép buộc fsck khi khởi động hệ thống

Điều này khá dễ thực hiện, bạn chỉ cần tạo một tệp có tên là forcefsck trong phân vùng gốc của hệ thống. Sử dụng lệnh sau đây: 

# touch /forcefsck

Sau đó, bạn có thể ép buộc hoặc lên lịch khởi động lại hệ thống của bạn. Trong quá trình khởi động lại tiếp theo, fsck sẽ được thực hiện. Nếu thời gian ngừng hoạt động quan trọng, bạn nên lên kế hoạch cẩn thận cho điều này, vì nếu có nhiều inode đã sử dụng trên hệ thống của bạn, fsck có thể mất thời gian bổ sung.

Sau khi hệ thống của bạn khởi động, kiểm tra xem tệp vẫn tồn tại hay không: 

# ls /forcefsck

Nếu vẫn tồn tại, bạn có thể muốn xóa nó để tránh fsck được thực hiện trong mỗi lần khởi động hệ thống.

Chạy fsck trong chế độ cứu hộ

Chạy fsck trong chế độ cứu hộ đòi hỏi một số bước thêm. Đầu tiên, chuẩn bị hệ thống của bạn cho việc khởi động lại. Dừng các dịch vụ quan trọng như MySQL/MariaDB và sau đó gõ lệnh reboot.

# reboot

Trong quá trình khởi động lại, nhấn và giữ phím Shift để hiển thị menu grub. Chọn "Advanced options" (Tùy chọn nâng cao). 

Tùy chọn nâng cao Grub

Sau đó chọn "Recovery mode" (Chế độ cứu hộ). 

Chọn chế độ khôi phục Linux

Trong menu tiếp theo, chọn "fsck". 

Chọn tiện ích fsck

Bạn sẽ được hỏi liệu bạn muốn phân vùng / của bạn được gắn kết lại hay không. Chọn "yes" (có). 

Xác nhận hệ thống tập tin gốc

Bạn sẽ thấy một cái gì đó tương tự như thế này:

Chạy kiểm tra hệ thống tập tin fsck

Tiếp theo, bạn có thể tiếp tục khởi động bình thường bằng cách chọn "Resume" (Tiếp tục).

Chọn khởi động bình thường

Kết luận

Tổng kết lại, qua 6 ví dụ áp dụng lệnh fsck trên các hệ điều hành như CentOS, Ubuntu, Debian, và Fedora, chúng ta đã có cái nhìn tổng quan về cách kiểm tra và sửa chữa các vấn đề liên quan đến hệ thống tệp hệ ext4. Việc sử dụng lệnh fsck là một phương tiện quan trọng để duyệt qua và khắc phục lỗi trên đĩa cứng, giúp bảo dưỡng và duy trì tính ổn định của hệ thống. Qua các hướng dẫn chi tiết từng bước trên từng hệ điều hành, bạn có thể tự tin áp dụng fsck để xử lý các vấn đề về file system một cách hiệu quả, giúp tăng cường khả năng hoạt động và đảm bảo an toàn cho dữ liệu quan trọng trên máy chủ của mình.

Mọi người cùng tìm kiếm: fsck, fsck linux, fsck -f, fsck centos 7