Tất cả dữ liệu quan trọng của chúng tôi đều 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 fsck
lệnh 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 chúng không phải là bất khả chiến bại. Nếu các bảng nội bộ của họ bị xáo trộn, họ 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 của bạn có hoạt động tốt hay không. 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ì.
Phi công không nhảy vào máy bay, khởi động nó và bay vào chiếc máy bay màu xanh nhạt. Họ kiểm tra trước khi bay. Có quá nhiều nguy cơ để làm khác. Đó là một thói quen tốt để phát triển. Trước khi bạn sử dụng fsck
bạn cần đảm bảo rằng bạn sẽ sử dụng nó trên đúng ổ đĩa. Vì vậy, trước khi làm bất cứ điều gì với fsck
, chúng ta sẽ thực hiện một chút trinh sát.
Chúng ta 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 / phân vùng”, nếu nó tồn tại.
sudo fdisk -l | less
Chúng ta có thể xem 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ê là /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
chỉ huy. 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
Có ba ổ đĩa trong máy tính thử nghiệm này. Đây là kết quả cho hai ổ đĩa còn lại /dev/sdb
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 tôi chuyển một mã định danh phân vùng cho fsck
, và nó 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 fsck
trê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 df
chỉ huy.
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 /dev/sdb
, đó là /dev/sdb1
. Chúng tôi đã thấy trước đó rằng đây là một ext4
hệ thống tệp và nó được gắn tại “/ run / mount / dave / sata2.”
Chúng tôi sẽ sử dụng umount
chỉ huy. Lưu ý rằng không có chữ “n” trong “ôount”.
sudo umount /run/mount/dave/sata2
Với umount
, không có tin nào 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 tôi cũng có thể xem mã trả lại fsck
trở lại vỏ.
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: Không có lỗi
- 1: Đã sửa lỗi hệ thống tập tin
- 2: Hệ thống nên được khởi động lại
- 4: Lỗi hệ thống tập tin không được sửa chữa
- số 8: Lỗi hoạt động
- 16: Lỗi sử dụng hoặc cú pháp
- 32: Kiểm tra bị hủy theo yêu cầu của người dùng
- 128: Lỗi thư viện được chia sẻ
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
(lực lượng) tùy chọn.
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 phát hiện khi các thử nghiệm đang được tiến hành, bạn sẽ được nhắc cho 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ất cả) tùy chọn. 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
Lưu ý rằng chúng ta không cần phải nói fsck
loạ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 trên /dev/sdc1
, NS ext3
hệ 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 trên /dev/sdb1
, đó là một ext4
vách ngăn.
sudo fsck /dev/sdc1 -f
Bạn có thể không muốn đi sâu vào sửa chữa hệ thống tệp. Bạn có thể thích nhìn trước khi nhảy. Bạn có thể hỏi fsck
không đề nghị sửa chữa bất cứ điều gì và chỉ báo cáo sự cố cho cửa sổ đầu cuối. Các -N
(chạy khô) tùy chọn thực hiện điều đó:
sudo fsck -N /dev/sdb1
Ngược lại với điều đó là nói fsck
để không bận tâm đến việc nhắc nhở nếu nó tìm thấy bất kỳ lỗi nào, và chỉ cần tiếp tục và sửa chúng. Để làm điều này, hãy sử dụng -y
(không có lời nhắc) tùy chọn.
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 một 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ì 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à làm gián đoạn quá trình khởi động và chạy fsck
trong chế độ phục hồi.
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 để fsck
sửa chúng 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.
Việc khởi động chế độ khôi phục có thể ảnh hưởng đến một số trình điều khiển, vì vậy, bạn nên khởi động lại một lần nữa, ngay sau khi bạn khởi động vào Linux. Điều này đảm bảo máy tính của bạn đang hoạt động theo tiêu chuẩn của nó.
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
chỉ huy. 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.