CodeGym /Các khóa học /Docker SELF /Kiểm tra và sửa lỗi hệ thống tập tin: lệnh fsck

Kiểm tra và sửa lỗi hệ thống tập tin: lệnh fsck

Docker SELF
Mức độ , Bài học
Có sẵn

Kiểm tra và sửa lỗi hệ thống tập tin: lệnh fsck

1. Tại sao cần kiểm tra hệ thống tệp?

Hệ thống tệp trong Linux — thực sự là một trong những "nhân viên" bận rộn nhất của hệ điều hành. Nó làm việc liên tục, mỗi khi bạn lưu tệp, mở chương trình hoặc chỉ đơn giản là đọc dữ liệu. Hãy thử tưởng tượng: ngay lúc quan trọng nhất, "nhân viên" này mệt mỏi và quyết định ngất xỉu (ý là: hệ thống đột ngột tắt do mất điện). Điều này có thể dẫn đến việc hỏng bảng tệp, mất dữ liệu hoặc hàng loạt vấn đề khó chịu khác.

Vậy những gì có thể xảy ra sai sót?

  1. Mất nguồn điện đột ngột — thiết bị của bạn đột ngột tắt mà không kịp hoàn tất quá trình ghi dữ liệu.
  2. Lỗi lưu trữ — ổ cứng hoặc SSD có thể gặp sự cố phần cứng, gây hỏng hệ thống tệp.
  3. Lỗi phần mềm — không loại trừ được bug trong driver hoặc các tiện ích hệ thống.

Thường sau những sự cố như vậy, hệ thống tệp sẽ trở nên không sử dụng được, và hệ điều hành sẽ yêu cầu bạn kiểm tra trạng thái của nó. Lúc này, fsck, viết tắt của File System Check, sẽ xuất hiện để cứu trợ.


2. fsck là gì và nó hoạt động như thế nào?

Ý tưởng của công cụ

fsck — đây là công cụ đa năng giúp kiểm tra tính toàn vẹn của hệ thống tệp và sửa lỗi được tìm thấy. Nó hoạt động giống như bác sĩ: thực hiện kiểm tra, tìm vấn đề và nếu có thể, sẽ "chữa lành". Nếu vấn đề quá nghiêm trọng, fsck ít nhất có thể chẩn đoán điều gì đã xảy ra.

Khi nào sử dụng fsck?

  1. Khi có lỗi rõ ràng trong tệp (ví dụ, đột nhiên chúng "biến mất").
  2. Nếu hệ thống không khởi động và báo lỗi về hệ thống tệp.
  3. Để bảo trì định kỳ, nhằm đảm bảo mọi thứ đều ổn.

3. Cú pháp cơ bản của fsck

Để sử dụng fsck, thường áp dụng lệnh sau:

fsck [tùy chọn] <thiết bị>

Các tùy chọn chính:

  • -y — Tự động chấp nhận sửa chữa. Điều này tiện lợi nếu cậu không muốn ngồi bấm yes cho mỗi câu hỏi.
  • -n — Chỉ kiểm tra, không sửa chữa (chạy khô). Có ích để phân tích tình hình nếu cậu lo lắng phá vỡ điều gì đó.
  • -t — Chỉ định loại hệ thống tệp (ví dụ, ext4, xfs).
  • -r — Bật chế độ tương tác (cậu sẽ xác nhận mỗi lần sửa chữa).

4. Thực hành: kiểm tra hệ thống file

Hãy bắt đầu với một bài kiểm tra đơn giản. Giả sử chúng ta có thiết bị /dev/sdb1, và muốn kiểm tra nó.

Bước 1: Kiểm tra mà không sửa chữa

Đầu tiên, chúng ta đánh giá trạng thái của hệ thống file mà không thực hiện thay đổi nào:

fsck -n /dev/sdb1

Sau khi chạy lệnh, bạn sẽ thấy danh sách các vấn đề được tìm thấy, nếu có. Đây là một ví dụ về đầu ra:

Inodes that were part of a corrupted orphan linked list found.
Filesystem errors detected. Run fsck to repair.

Bước 2: Sửa chữa tự động

Bây giờ, chúng ta bật chế độ sửa chữa lỗi:

fsck -y /dev/sdb1

fsck sẽ cố gắng sửa chữa mỗi lỗi được phát hiện và tự động xác nhận hành động. Quá trình này có thể mất thời gian nếu thiết bị lớn.


5. Làm gì nếu hệ thống tập tin đang được sử dụng?

Lỗi khi chạy fsck

Nếu bạn cố gắng chạy fsck trên một phân vùng mà đã được gắn kết, sẽ nhận được cảnh báo:

fsck: cannot check a mounted filesystem.

Điều này xảy ra vì kiểm tra một hệ thống tập tin đã được gắn kết có thể dẫn đến hỏng dữ liệu. Có vài cách để giải quyết vấn đề này.

  1. Gắn kết thiết bị ở chế độ chỉ đọc.
mount -o remount,ro /dev/sdb1
  1. Sử dụng LiveCD hoặc LiveUSB.

Khởi động từ đĩa hoặc USB để thực hiện kiểm tra trên thiết bị đã được tháo gắn.

  1. Sử dụng chế độ khôi phục.

Khởi động lại hệ thống ở chế độ khôi phục, nơi thường cung cấp môi trường an toàn để thực hiện kiểm tra.

Đặc biệt khi kiểm tra hệ thống tập tin gốc /

Hệ thống tập tin gốc là một trường hợp đặc biệt vì nó đang được hệ thống sử dụng tích cực. Để chạy fsck cho phân vùng này, cần làm như sau:

  1. Chuyển sang chế độ người dùng duy nhất bằng lệnh:
systemctl isolate rescue.target
  1. Tự chạy fsck bằng tay:
fsck -y /

6. Lỗi thường gặp và cách sửa

Inode bị hỏng

Nếu fsck thông báo về inode (cấu trúc lưu thông tin về tệp) bị hỏng, nó sẽ đề nghị xóa chúng. Điều này an toàn vì inode bị hỏng không còn liên kết với các tệp hiện tại.

Tệp bị mất

Đôi khi sau khi chạy fsck, các tệp bị mất sẽ được lưu vào thư mục lost+found trong gốc hệ thống tệp. Bạn có thể kiểm tra thủ công chỗ đó để khôi phục dữ liệu quan trọng.

Khuyến nghị quan trọng

  1. Luôn sao lưu trước khi kiểm tra. Mặc dù fsck thường hoạt động an toàn, việc sửa chữa có thể dẫn đến mất dữ liệu.

  2. Không chạy fsck trên các phân vùng đã gắn kết. Điều này có thể gây hỏng dữ liệu.

  3. Sử dụng flag -n để phân tích ban đầu. Nếu bạn không chắc chắn có nên sửa lỗi tự động hay không, hãy bắt đầu với một lần chạy khô.


7. Ví dụ: Mô phỏng lỗi và sửa chữa

  1. Tạo một đĩa ảo và tạo một hệ thống tệp tin trên đó:
dd if=/dev/zero of=./disk.img bs=1M count=100
mkfs.ext4 ./disk.img
  1. Gắn kết đĩa:
sudo mount ./disk.img /mnt/test/
  1. Mô phỏng sự hỏng hóc:
sudo dd if=/dev/zero of=/mnt/test/randomfile bs=512 count=10
  1. Tháo đĩa và kiểm tra nó:
sudo umount /mnt/test/
fsck ./disk.img

Dựa theo kết quả của lệnh, sửa lỗi.

Với bước này, bạn đã tự tin nắm được cách kiểm tra hệ thống tệp tin, có thể sửa lỗi đúng cách và ngăn chặn sự cố. Phía trước chúng ta sẽ tìm hiểu thêm các công cụ mới để làm việc với hệ thống tệp tin, nhưng fsck giờ đây là công cụ đáng tin cậy của bạn để chẩn đoán và sửa chữa.

Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION