Computer >> Máy Tính >  >> Lập trình >> Lập trình BASH

fsck để sửa chữa lỗi hệ thống tệp Linux [4 ví dụ về Commmon]

Máy tính hiện đại cực kỳ đáng tin cậy, nhưng mọi thứ vẫn có thể xảy ra sai sót - và điều tồi tệ nhất thường xảy ra là làm mất dữ liệu của bạn - có thể là công việc quan trọng hoặc những bức ảnh quý giá của bạn.

Cùng với hệ thống sao lưu mạnh mẽ, fsck (File System cheCK) có lẽ là công cụ quan trọng nhất mà bạn có thể có trong tay để ngăn chặn việc mất dữ liệu. Hướng dẫn này giải thích cách sử dụng fsck để sửa lỗi hệ thống tệp trong Linux và đưa bạn qua bốn ví dụ phổ biến.

fsck xác minh tính toàn vẹn và sửa chữa các lỗi trong hệ thống tệp Linux của bạn.

Cú pháp

fsck là giao diện cho một số trình kiểm tra hệ thống tệp có sẵn cho các hệ thống tệp được Linux sử dụng và có cú pháp sau:

fsck [OPTIONS]... [FILESYSTEMS]...

Lưu ý rằng:

  • [OPTIONS]… là danh sách các tùy chọn từ bảng bên dưới
  • [FILESYSTEMS] là danh sách các hệ thống tệp cần được kiểm tra / sửa chữa
  • Các tùy chọn không được hiểu bởi fsck sẽ được chuyển đến trình kiểm tra hệ thống tệp cụ thể được sử dụng cho hệ thống tệp cụ thể mà bạn đang kiểm tra.
  • Nếu không có hệ thống tệp nào được chỉ định, fsck sẽ mặc định kiểm tra tất cả các hệ thống tệp trong / etc / fstab (tức là nó được mặc định là -A tùy chọn)

Tùy chọn

fsck có một số tùy chọn. Bạn có thể xem danh sách đầy đủ bằng cách chạy:

man fsck

… Trong thiết bị đầu cuối của bạn. Dưới đây là tóm tắt về các tùy chọn mà bạn có thể sẽ cần sử dụng nhất:

Dưới đây là các tùy chọn thường được sử dụng khi sử dụng fsck , ngay từ hướng dẫn sử dụng (nhưng với một số thao tác được thực hiện cho ngắn gọn - hãy kiểm tra hướng dẫn để biết thêm chi tiết sử dụng nâng cao):

-t fslist Chỉ định (các) loại hệ thống tệp được kiểm tra. Tham số fslist là danh sách được phân tách bằng dấu phẩy gồm các hệ thống tệp và các chỉ định tùy chọn. Thông thường, loại hệ thống tệp được suy ra bằng cách tìm kiếm các tệp tin trong tệp / etc / fstab và sử dụng mục nhập tương ứng.
-A Xem qua tệp / etc / fstab và cố gắng kiểm tra tất cả các hệ thống tệp trong một lần chạy. Tùy chọn này thường được sử dụng từ tệp khởi tạo hệ thống / etc / rc, thay vì nhiều lệnh để kiểm tra một hệ thống tệp.
-M Không kiểm tra hệ thống tệp được gắn kết và trả về mã thoát 0 cho hệ thống tệp được gắn kết.
-N Không thực thi, chỉ hiển thị những gì sẽ được thực hiện.
-R Khi kiểm tra tất cả các hệ thống tệp với cờ -A, hãy bỏ qua hệ thống tệp gốc (trong trường hợp hệ thống tệp đã được gắn kết đọc-ghi).
-V Tạo đầu ra dài dòng, bao gồm tất cả các lệnh dành riêng cho hệ thống tệp được thực thi.

Các tùy chọn cho các fsck dành riêng cho hệ thống tệp khác nhau không được chuẩn hóa. Nếu nghi ngờ, vui lòng tham khảo trang chủ của trình kiểm tra hệ thống tệp cụ thể. Mặc dù không được đảm bảo, các tùy chọn sau được hầu hết các trình kiểm tra hệ thống tệp hỗ trợ:

-a Tự động sửa chữa hệ thống tệp mà không có bất kỳ câu hỏi nào (sử dụng tùy chọn này một cách thận trọng).
-n Đối với một số trình kiểm tra dành riêng cho hệ thống tệp, tùy chọn -n sẽ khiến fsck dành riêng cho fs để tránh cố gắng sửa chữa bất kỳ vấn đề nào mà chỉ cần báo cáo các vấn đề đó.
-r Sửa chữa tương tác hệ thống tệp (yêu cầu xác nhận).
-y Đối với một số trình kiểm tra dành riêng cho hệ thống tệp, tùy chọn -y sẽ khiến fsck dành riêng cho fs luôn cố gắng tự động sửa mọi lỗi hệ thống tệp được phát hiện.

Nếu bạn muốn xem các tùy chọn có sẵn cho trình kiểm tra cụ thể cho một hệ thống tệp cụ thể, hãy chạy:

man fsck.ext4

Mã thoát

Mã thoát do fsck trả về là tổng các điều kiện sau
0 Không có lỗi
1 Đã sửa lỗi hệ thống tệp
2 Hệ thống phải được khởi động lại
4 Lỗi hệ thống tệp không được sửa chữa
8 Lỗi hoạt động
16 Lỗi sử dụng hoặc cú pháp
32 Fsck bị hủy theo yêu cầu của người dùng
128 Lỗi thư viện được chia sẻ
Mã thoát được trả về khi nhiều hệ thống tệp được kiểm tra là mã HOẶC bit khôn ngoan của mã thoát cho mỗi hệ thống tệp được kiểm tra.

Ví dụ

Dưới đây là một số ví dụ sử dụng phổ biến của fsck - kiểm tra các đĩa cục bộ, bao gồm cả hệ thống tệp gốc.

Ngắt kết nối

Bạn không thể kiểm tra hệ thống tệp đang được sử dụng vì điều này có thể làm hỏng hệ thống tệp và dẫn đến mất dữ liệu. Để ngắt kết nối hệ thống tệp để nó không được sử dụng và có thể được kiểm tra, hãy chạy:

sudo umount /dev/filesystem

… Ở đâu hệ thống tệp là tên của hệ thống tệp cần ngắt kết nối.

Nếu bạn không biết tên của hệ thống tệp, hãy chạy:

df -h

… Để nhận danh sách hệ thống tệp và điểm gắn kết.

Gắn lại

Sau khi hoàn tất việc kiểm tra và sửa chữa, bạn có thể đánh giá lại hệ thống tệp bằng cách sử dụng:

sudo mount /dev/filesystem

Kiểm tra và sửa chữa hệ thống tệp bị hỏng

sudo fsck -p /dev/filesystem

Lưu ý rằng:

  • hệ thống tệp là tên của hệ thống tệp đang được kiểm tra và trông giống như “sda1” hoặc “sdc1”
  • -p tùy chọn cho fsck để khắc phục mọi sự cố không tự động yêu cầu tương tác của người dùng

Kiểm tra khởi động / Kiểm tra hệ thống tệp gốc

Vì bạn không thể kiểm tra hệ thống tệp đang được sử dụng, bạn không thể kiểm tra hệ thống tệp gốc trong Linux khi hệ thống đã được khởi động hoàn toàn và nó đang được sử dụng.

Chạy kiểm tra khi khởi động là cách tốt nhất để thực hiện việc này, vì nó hoạt động ngay cả khi bạn đăng nhập vào hệ thống từ xa.

Hầu hết bản phân phối Linux được định cấu hình theo mặc định để chạy fsck tự động nếu hệ thống tệp được đánh dấu là "bẩn" (cần kiểm tra) hoặc sau một khoảng thời gian khởi động cố định.

Để buộc kiểm tra một giá trị cụ thể tại mỗi lần khởi động hệ thống (bao gồm cả hệ thống tệp gốc), hãy sử dụng tune2fs để điều chỉnh các thông số hệ thống tệp:

tune2fs -c 1 /dev/filesystem

Ở đâu hệ thống tệp là tên của hệ thống tệp được kiểm tra. 1 là số lượng ủng của fsck được chạy sau - nó mặc định là 30 trong bản phân phối Ubuntu, vì vậy, để mọi thứ trở lại bình thường, bạn có thể chạy:

tune2fs -c 30 /dev/filesystem

Nếu điều này không hiệu quả, các bản phân phối cũ hơn sẽ chạy fsck khi khởi động nếu / forcefsck tệp hiện có:

sudo touch /forcefsck

Từng là một fsck đã được thực hiện khi khởi động, kết quả sẽ được ghi lại tại vị trí:

/var/log/fsck

… Sẵn sàng để bạn kiểm tra.

Nếu hệ thống của bạn bị hỏng đến mức hoàn toàn không khởi động được, bạn có thể khởi động từ đĩa khôi phục hoặc thẻ USB rồi chạy fsck từ đó vì hệ thống tệp gốc mà bạn muốn kiểm tra sẽ không được gắn kết.

Kết luận

Để biết thêm thông tin, bạn có thể đọc fsck thủ công bằng cách chạy:

man fsck

Trong thiết bị đầu cuối của bạn.

Kiểm tra các phần giải thích khác của chúng tôi về các công cụ trình bao Linux phổ biến.