Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình Bash

Dùng fsck sửa lỗi hệ thống file Linux – 4 tình huống phổ biến

Máy tính hiện đại rất đáng tin cậy, nhưng vẫn có thể xảy ra sự cố – và điều tồi tệ nhất thường là mất dữ liệu – công việc quan trọng hay ảnh kỷ niệm.

Bên cạnh hệ thống backup vững chắc, fsck (File System cheCK) là công cụ quan trọng nhất để phòng mất mát dữ liệu. Hướng dẫn này giải thích cách dùng fsck sửa lỗi filesystem Linux qua 4 ví dụ phổ biến.

fsck kiểm tra tính toàn vẹn và sửa lỗi trong filesystem Linux.

Cú pháp

fsck là giao diện cho nhiều trình kiểm tra filesystem dùng bởi Linux, cú pháp:

fsck [TUY_CHON]... [FILESYSTEMS]...

Lưu ý:

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

Tùy chọn

fsck có vài tùy chọn. Xem đầy đủ bằng lệnh:

man fsck

…trong terminal. Tóm tắt tùy chọn bạn thường cần:

Tùy chọn Mô tả
-t fslist Chỉ định loại filesystem cần kiểm tra. Tham số fslist là danh sách phân cách bởi dấu phẩy các filesystem và option specifier. Thường loại filesystem suy ra từ tìm filesys trong /etc/fstab và dùng entry tương ứng.
-A Duyệt /etc/fstab và thử kiểm tra tất cả filesystem trong một lần. Thường dùng từ file khởi tạo /etc/rc hệ thống, thay vì nhiều lệnh kiểm tra từng filesystem.
-M Không kiểm tra filesystem đã mount, trả về exit code 0 cho filesystem đã mount.
-N Không thực thi, chỉ hiện những gì sẽ làm.
-R Khi kiểm tra tất cả với -A, bỏ qua root filesystem (trường hợp đã mount read-write).
-V Output chi tiết (verbose), bao gồm lệnh cụ thể filesystem được thực thi.

Tùy chọn cho fsck riêng từng filesystem không chuẩn hóa. Nếu không chắc, xem man page của trình kiểm tra filesystem cụ thể. Dù không đảm bảo, các tùy chọn sau được hỗ trợ bởi hầu hết trình kiểm tra:

Tùy chọn Mô tả
-a Tự động sửa filesystem không hỏi (dùng thận trọng).
-n Với một số trình kiểm tra, -n làm fsck chỉ báo cáo vấn đề mà không sửa.
-r Sửa filesystem tương tác (hỏi xác nhận).
-y Với một số trình kiểm tra, -y làm fsck luôn tự động sửa lỗi phát hiện.

Muốn xem tùy chọn cho trình kiểm tra cụ thể của filesystem, chạy:

man fsck.ext4

Mã thoát (Exit Codes)

Mã thoát fsck là tổng các điều kiện sau Ý nghĩa
0 Không lỗi
1 Lỗi filesystem đã sửa
2 Hệ thống cần reboot
4 Lỗi filesystem chưa sửa
8 Lỗi vận hành
16 Lỗi dùng/cú pháp
32 Fsck bị hủy bởi user
128 Lỗi shared library
Mã thoát khi kiểm tra nhiều filesystem là bitwise OR của mã thoát từng filesystem.

Ví dụ

Một số ví dụ dùng fsck phổ biến – kiểm tra ổ cục bộ, kể cả root filesystem.

Unmount (Ngắt gắn)

Không thể kiểm tra filesystem đang dùng, vì có thể làm hỏng filesystem và mất dữ liệu. Để unmount filesystem để không dùng và có thể kiểm tra, chạy:

sudo umount /dev/filesystem

… filesystem là tên filesystem cần unmount.

Nếu không biết tên filesystem, chạy:

df -h

… lấy danh sách filesystem và mount point.

Remount (Gắn lại)

Sau khi kiểm tra/sửa xong, gắn lại filesystem bằng:

sudo mount /dev/filesystem

Kiểm tra & Sửa filesystem hỏng

sudo fsck -p /dev/filesystem

Lưu ý:

  • filesystem là tên filesystem kiểm tra, dạng như “sda1” hoặc “sdc1”
  • tùy chọn -p báo fsck tự sửa vấn đề không cần tương tác user

Kiểm tra khi boot / Kiểm tra root filesystem

Vì không kiểm tra được filesystem đang dùng, không thể kiểm tra root filesystem khi hệ thống đã boot đầy đủ và nó đang dùng.

Chạy kiểm tra khi boot là cách tốt nhất, hoạt động kể cả khi đăng nhập remote.

Phần lớn distro Linux mặc định chạy fsck tự động nếu filesystem đánh dấu "dirty" (cần kiểm tra) hoặc sau khoảng boot cố định.

Để ép kiểm tra filesystem cụ thể (kể cả root) mỗi lần boot, dùng tune2fs điều chỉnh tham số filesystem:

tune2fs -c 1 /dev/filesystem

filesystem là tên filesystem cần kiểm tra. 1 là số boot sau đó chạy fsck – mặc định 30 trên Ubuntu, để về mặc định chạy:

tune2fs -c 30 /dev/filesystem

Nếu không hoạt động, distro cũ chạy fsck khi boot nếu file /forcefsck tồn tại:

sudo touch /forcefsck

Sau khi fsck chạy ở boot, kết quả log tại:

/var/log/fsck

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

Nếu hệ thống hỏng đến mức không boot được, bạn có thể boot từ đĩa/USB recovery và chạy fsck từ đó vì root filesystem cần kiểm tra sẽ không bị mount.

Kết luận

Để biết thêm, đọc manual fsck bằng lệnh:

man fsck

Trong terminal.

Xem thêm giải thích công cụ shell Linux phổ biến khác.