Cách sử dụng lệnh fsck trên Linux

Cách sử dụng lệnh fsck trên Linux

Tất cả dữ liệu quan trọng của chúng tôi nằm trong một hệ thống tệp thuộc loại này hay loại khác và các vấn đề về hệ thống tệp chắc chắn sẽ xảy ra. Trên Linux, chúng ta có thể sử dụng lệnh fsckđể tìm và sửa lỗi hệ thống tệp.

Hệ thống tệp là phần mềm

Hệ thống tệp là một trong những thành phần quan trọng nhất của máy tính. Nếu không có hệ thống tệp, máy tính không thể lưu trữ bất kỳ dữ liệu nào trên ổ cứng, cho dù ổ đó là đĩa cơ quay hay ổ cứng thể rắn . Trên thực tế, một hệ thống tệp phải được tạo trước khi hệ điều hành có thể được cài đặt trên ổ cứng. Phải có một cái gì đó để các tệp hệ điều hành được lưu trữ. Vì vậy, một hệ thống tệp được tạo ra trong quá trình cài đặt.

Hệ thống tệp được  tạo ra bởi phần mềm , được ghi vào phần mềm và được đọc từ phần mềm. Như bạn đã biết, tất cả các phần mềm phức tạp đều có lỗi. Dữ liệu của chúng tôi cực kỳ quan trọng đối với chúng tôi, vì vậy chúng tôi đặt rất nhiều niềm tin vào hệ thống tệp và phần mềm tạo và sử dụng chúng. Nếu xảy ra sự cố, chúng tôi có thể mất quyền truy cập vào các phần của hệ thống tệp hoặc thậm chí toàn bộ phân vùng.

Các hệ thống tệp nhật ký hiện đại   xử lý tốt hơn các sự cố có thể gây ra do mất điện đột ngột hoặc sự cố hệ thống. Chúng mạnh mẽ, nhưng không phải là bất khả chiến bại. Nếu các bảng nội bộ của chúng  bị xáo trộn,  chúng có thể mất dấu vị trí của mỗi tệp trên ổ đĩa, kích thước của nó, tên nó có và quyền đối với tệp nào được đặt trên chúng.

Các fscklệnh cho phép bạn kiểm tra xem hệ thống tập tin của bạn được khỏe mạnh. Nếu nó tìm thấy bất kỳ vấn đề nào, nó thường có thể khắc phục chúng cho bạn.

Thực hiện kiểm tra trước

Sử dụng fsckyêu cầu đặc quyền sudo . Bất kỳ lệnh nào có thể thực hiện thay đổi đối với hệ thống tệp cần được xử lý một cách thận trọng và hạn chế đối với những người biết họ đang làm gì.

Chúng tôi sẽ bắt đầu với fdiskvà đưa nó vào less. Chúng tôi không yêu cầu thông tin về một phân vùng cụ thể. Bằng cách sử dụng -l(danh sách) tùy chọn fdiskliệt kê các bảng phân vùng trên tất cả các thiết bị mà nó tìm thấy trong tệp “/ proc / partitions”, nếu nó tồn tại.

sudo fdisk -l | less

Chúng ta có thể thấy các mục cho /dev/sdavà /dev/sdb. Bạn có thể cuộn qua tệp để xem bất kỳ mục nhập nào khác có thể tồn tại trên máy tính của bạn.

Quan sát đầu ra trong cửa sổ đầu cuối

Các phân vùng trên /dev/sdađược liệt kê như /dev/sda1/dev/sda2, và /dev/sda3. Vì vậy, chúng tôi có ba phân vùng trên ổ đĩa đầu tiên. Chúng ta có thể xem thêm một chút thông tin bằng cách sử dụng parted lệnh. Chúng tôi sẽ sử dụng 'print'tùy chọn để hiển thị các bảng phân vùng trong cửa sổ đầu cuối.

sudo parted /dev/sda 'print'

Nhận thông tin về bảng phân vùng

Chúng tôi nhận được một số thông tin bổ sung lần này, bao gồm loại hệ thống tệp trên mỗi phân vùng.

Model: ATA VBOX HARDDISK (scsi) 
Disk /dev/sda: 34.4GB 
Sector size (logical/physical): 512B/512B 
Partition Table: gpt 
Disk Flags:

Number Start  End    Size    File system   Name                 Flags 
1      1049kB 2097kB 1049kB                                     bios_grub 
2      2097kB 540MB  538MB   fat32         EFI System Partition boot, esp 
3      540MB 34.4GB  33.8GB  ext4
 Number Start End Size File system Name Flags  1 1049kB 2097kB 1049kB bios_grub  2 2097kB 540MB 538MB fat32 Khởi động phân vùng hệ thống EFI, đặc biệt là  3 540MB 34,4GB 33,8GB ext4
sudo parted /dev/sdb 'print'
Model: ATA VBOX HARDDISK (scsi) 
Disk /dev/sdb: 21.5GB 
Sector size (logical/physical): 512B/512B 
Partition Table: msdos 
Disk Flags:

Number Start  End    Size   Type     File system Flags 
1      1049kB 21.5GB 21.5GB primary  ext4
sudo parted /dev/sdc 'print'
Model: ATA VBOX HARDDISK (scsi) 
Disk /dev/sdc: 21.5GB 
Sector size (logical/physical): 512B/512B 
Partition Table: msdos 
Disk Flags:

Number Start  End    Size   Type     File system Flags
1      1049kB 21.5GB 21.5GB primary  ext3

Ổ thứ hai và thứ ba có cùng kích thước và mỗi ổ có một phân vùng duy nhất. Nhưng hệ thống tệp trên ổ đĩa thứ hai là ext4, và hệ thống tệp trên ổ đĩa thứ ba là cũ hơn ext3.

Chúng tôi chuyển một mã định danh phân vùng tới fsckvà nó sẽ kiểm tra hệ thống tệp trên phân vùng đó. Nhưng chúng tôi không thể chạy fscktrên hệ thống tệp được gắn kết. Chúng ta cần ngắt kết nối ổ đĩa. Để làm điều đó, chúng ta cần biết điểm gắn kết mà phân vùng — và do đó là hệ thống tệp — được gắn vào.

Chúng ta có thể dễ dàng tìm ra điều đó bằng cách sử dụng dflệnh.

df / dev / sdb1
df / dev / sdc1

Sử dụng lệnh fsck

Chúng tôi có tất cả thông tin chúng tôi cần. Điều đầu tiên chúng tôi sẽ làm là ngắt kết nối hệ thống tệp mà chúng tôi sẽ kiểm tra. Chúng tôi sẽ làm việc trên hệ thống tệp trên phân vùng đầu tiên — và duy nhất — của phân vùng /dev/sdbnày /dev/sdb1. Trước đó, chúng tôi đã thấy rằng đây là một ext4hệ thống tệp và nó được gắn kết tại “/ run / mount / dave / sata2”.

Chúng tôi sẽ sử dụng umountlệnh. Lưu ý rằng không có chữ “n” trong “ôount”.

sudo umount / run / mount / dave / sata2

Sử dụng lệnh umount để ngắt kết nối hệ thống tệp.

sudo fsck / dev / sdb1

Sử dụng lệnh fsck để kiểm tra trạng thái của hệ thống tệp.

Hệ thống tệp này được báo cáo là sạch. Điều đó có nghĩa là hệ thống tệp đang báo cáo rằng nó không có lỗi hoặc sự cố. Việc kiểm tra hệ thống tệp sâu hơn không được tự động tiến hành. Chúng ta cũng có thể xem mã fscktrả về đã trả về trình bao.

echo $?

Giá trị trả về bằng không cho biết không có lỗi. Các mã trả lại có thể là:

  • 0: No errors
  • 1: Filesystem errors corrected
  • 2: System should be rebooted
  • 4: Filesystem errors left uncorrected
  • 8: Operational error
  • 16: Usage or syntax error
  • 32: Checking canceled by user request
  • 128: Shared-library error

Mặc dù hệ thống tệp được báo cáo là sạch, chúng tôi có thể buộc tiến hành kiểm tra hệ thống tệp bằng cách sử dụng -ftùy chọn (force).

sudo fsck / dev / sdb1 -f

Buộc kiểm tra hệ thống tệp bằng cách sử dụng tùy chọn lực lượng trong lệnh fsck

Lần này, quá trình kiểm tra mất nhiều thời gian hơn để hoàn thành nhưng nó thực hiện kiểm tra toàn diện hơn đối với hệ thống tệp. Hệ thống tệp của chúng tôi thực sự sạch sẽ và không có lỗi nào được báo cáo. Nếu các vấn đề được tìm thấy khi các thử nghiệm đang được tiến hành, bạn sẽ được nhắc cho phép fsckkhắc phục sự cố hoặc bỏ qua lỗi.

Khi bạn đã hoàn tất quá trình kiểm tra, bạn cần phải gắn lại hệ thống tệp. Cách dễ nhất để làm điều này là sử dụng mountvới -atùy chọn (tất cả). Thao tác này sẽ kiểm tra “/ etc / fstab” cho danh sách các hệ thống tệp và đảm bảo rằng tất cả chúng đều được gắn kết giống như khi chúng khởi động thông thường.

sudo mount -a

Remount hệ thống tệp bằng lệnh mount

Lưu ý rằng chúng ta không cần cho biết fsckloại hệ thống tệp trên một phân vùng; tiện ích xác định điều đó bằng cách kiểm tra hệ thống tệp. Điều đó có nghĩa là chúng tôi có thể buộc kiểm tra hệ thống tệp /dev/sdc1ext3hệ thống tệp trên PC thử nghiệm của chúng tôi, sử dụng chính xác lệnh mà chúng tôi đã sử dụng /dev/sdb1, đó là một ext4phân vùng.
sudo fsck / dev / sdc1 -f

Sử dụng lệnh fsck để buộc kiểm tra hệ thống tệp

sudo fsck -N / dev / sdb1

Trước khi sửa chữa hệ thống tệp, hãy chạy nhanh

Điều ngược lại của điều đó là nói rằng fsckđừng bận tâm đến việc nhắc nhở nếu nó phát hiện ra bất kỳ lỗi nào, và chỉ cần tiếp tục và sửa chúng. Để thực hiện việc này, hãy sử dụng -ytùy chọn (không có lời nhắc).

sudo fsck -y / dev / sdb1

Sử dụng fsck trên phân vùng gốc

Bạn không thể sử dụng fscktrên phân vùng được gắn kết, nhưng để khởi động máy tính của bạn, phân vùng gốc phải được gắn kết. Vậy làm thế nào chúng ta có thể chạy fscktrên phân vùng gốc? Câu trả lời là ngắt quá trình khởi động và chạy fsckở chế độ khôi phục.

Trong khi máy tính của bạn đang khởi động, hãy giữ phím “Shift”. Nếu bạn đã canh đúng thời gian, bạn sẽ không khởi động được vào Linux. Quá trình khởi động sẽ dừng lại ở menu đen trắng. Máy thử nghiệm được sử dụng cho bài viết này đang chạy Ubuntu nhưng các bản phân phối khác có cùng loại menu, mặc dù nó có thể khác nhau về hình thức. Nơi nó nói “Ubuntu” trong ảnh chụp màn hình, nó sẽ có tên của bản phân phối của bạn.

Menu khôi phục với mục menu tùy chọn nâng cao được chọn

Di chuyển thanh tô sáng bằng các phím “Mũi tên Lên” và “Mũi tên Xuống” để chọn mục menu “Tùy chọn nâng cao cho Ubuntu”. Nhấn “Enter” để chuyển sang màn hình tiếp theo.

Menu khôi phục với mục menu "chế độ khôi phục" được chọn

Chọn tùy chọn kết thúc bằng “(chế độ khôi phục).” Trong ví dụ của chúng tôi, đó là “Ubuntu, với Linux 5.11.0-20-chung (chế độ khôi phục).” Nhấn phím “Enter”.

Bạn sẽ thấy menu khôi phục. Chọn “fsck check all files system” và nhấn phím “Tab” để di chuyển phần đánh dấu đến nút “OK”. Nhấn nút Enter.”

Menu khôi phục với fsck được chọn

Bạn sẽ thấy thông báo rằng phân vùng gốc sẽ được gắn kết cùng với bất kỳ phân vùng nào khác được xác định trong tệp “/ etc / fstab” của bạn .

Chọn có để bắt đầu fsck trong chế độ tương tác

Nhấn phím “Tab” để di chuyển phần đánh dấu đến nút “Có” và nhấn “Enter”.

Bạn sẽ thấy fsckchạy ở chế độ tương tác. Nếu có vấn đề, bạn sẽ được nhắc cho phép fsckkhắc phục hoặc bỏ qua chúng. Khi hệ thống tệp đã được kiểm tra, bạn sẽ thấy lại menu khôi phục.

Chọn tùy chọn “tiếp tục”, nhấn phím “Tab” để di chuyển phần đánh dấu đến nút “Ok” và nhấn “Enter”. Quá trình khởi động sẽ tiếp tục và bạn sẽ khởi động vào Linux.

Khi mọi việc không như mong muốn

Lưới an toàn là có lý do. Nhận biết fscklệnh. Nếu một ngày nào đó bạn có nhu cầu sử dụng nó trong cơn tức giận, bạn sẽ rất vui vì đã làm quen với bản thân từ trước.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *