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 fsck
lệ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 fsck
yê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 fdisk
và đư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 fdisk
liệ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/sda
và /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.
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'
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
/dev/sdb
còn lại và /dev/sdc
. Lưu ý rằng các hệ thống tệp này không có trường “Tên”.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 ta có thể dễ dàng tìm ra điều đó bằng cách sử dụng df
lệ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/sdb
này /dev/sdb1
. Trước đó, chúng tôi đã thấy rằng đây là một ext4
hệ 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 umount
lệnh. Lưu ý rằng không có chữ “n” trong “ôount”.
sudo umount / run / mount / dave / sata2
umount
, không có tin tức là tin tốt. Nếu bạn im lặng quay trở lại dấu nhắc lệnh, chúng tôi sẵn sàng tiếp tục.sudo fsck / dev / sdb1
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ã fsck
trả 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 -f
tùy chọn (force).
sudo fsck / dev / sdb1 -f
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 fsck
khắ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 mount
với -a
tù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
sudo fsck / dev / sdc1 -f
fsck
không đề nghị sửa chữa bất cứ điều gì và chỉ báo cáo sự cố với cửa sổ đầu cuối. Các -N
(chạy khô) tùy chọn không chỉ rằng:sudo fsck -N / dev / sdb1
Đ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 -y
tù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 fsck
trê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 fsck
trê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.
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.
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.”
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 .
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 fsck
chạy ở chế độ tương tác. Nếu có vấn đề, bạn sẽ được nhắc cho phép fsck
khắ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 fsck
lệ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.