如何掃描和修復 Linux 磁碟錯誤
fsck
(檔案系統一致性檢查)是用於檢查Linux作業系統檔案系統一致性的工具。
首先,需要確定 Linux 系統的磁碟分割槽、它們各自的檔案系統以及掛載點。
下面使用
lsblk
列出磁碟明、檔案系統型別、掛載點:
[root@localhost ~]# lsblk -o NAME,FSTYPE,MOUNTPOINT NAME FSTYPE MOUNTPOINT sda sdb sdc sdd sr0 iso9660 nvme0n1 ├─nvme0n1p1 ext4 /boot └─nvme0n1p2 LVM2_member ├─cl-root xfs / └─cl-swap swap [SWAP]
你可以使用下命令找到 Ext2,Ext3,Ext4 型別分割槽的最後一次掃描時間。
[root@localhost ~]# tune2fs -l /dev/nvme0n1p1 |grep checked Last checked: Wed Sep 1 15:42:11 2021
掃描 Linux 磁碟分割槽,可以使用
fsck
(檔案系統一致性檢查)命令。但是在檢查和修復它之前,需要解除安裝該分割槽。下面例項中,我們解除安裝的是/boot分割槽。
[root@localhost ~]# umount /dev/nvme0n1p1
解除安裝成功後,使用
fsck.ext4
檢查/dev/nvme0n1p1分割槽
[root@localhost ~]# fsck.ext4 /dev/nvme0n1p1 e2fsck 1.44.3 (10-July-2018) /dev/nvme0n1p1: clean, 311/65536 files, 55546/262144 blocks
檢查並修復您的 Linux 磁碟後,在其各自的掛載點再次掛載分割槽。執行以下命令用來掛載 /etc/fstab 配置檔案中列出的所有磁碟分割槽。
[root@localhost ~]# mount -a
在系統啟動時啟用磁碟檢查。你必須修改該磁碟分割槽的
Mount Count
引數。
[root@localhost ~]# tune2fs -c 1 /dev/nvme0n1p1 tune2fs 1.44.3 (10-July-2018) Setting maximal mount count to 1
重啟系統之後,fsck命令現在會在啟動時檢查你的 Ext4 磁碟分割槽。
[root@localhost ~]# reboot
重新啟動後,獲取磁碟分割槽的
Last Checked
值,現在它會顯示 Linux 上次啟動的時間。
[root@localhost ~]# tune2fs -l /dev/nvme0n1p1 |grep checked Last checked: Tue Sep 14 11:08:11 2021
恢復
Mount Count
引數的預設值,否則它會在每次系統啟動時繼續執行磁碟掃描。
[root@localhost ~]# tune2fs -c -1 /dev/nvme0n1p1 tune2fs 1.44.3 (10-July-2018) Setting maximal mount count to -1
xfs_repair 實用程式具有高度可擴充套件性,旨在有效修復具有許多 inode 且非常大的檔案系統。與其他 Linux 檔案系統不同,xfs_repair 不會在啟動時執行,即使 XFS 檔案系統沒有完全解除安裝。如果發生不乾淨的解除安裝,xfs_repair 只會在掛載時重放日誌,確保檔案系統一致。
XFS 型別的磁碟分割槽有自己的一組命令,與 Ext4 有點不同。在檢查其一致性之前,必須解除安裝 XFS 磁碟分割槽。
[root@localhost ~]# umount /dev/sda1
我們有 xfs_repair 命令用於檢查和修復磁碟錯誤。使用xfs_repair 命令的
-n
選項來檢查磁碟錯誤。
[root@localhost ~]# xfs_repair -n /dev/sda1 Phase 1 - find and verify superblock... Phase 2 - using internal log - zero log... - scan filesystem freespace and inode maps... - found root inode chunk Phase 3 - for each AG... - scan (but don't clear) agi unlinked lists... - process known inodes and perform inode discovery... - agno = 0 - agno = 1 - agno = 2 - agno = 3 - process newly discovered inodes... Phase 4 - check for duplicate blocks... - setting up duplicate extent list... - check for inodes claiming duplicate blocks... - agno = 0 - agno = 1 - agno = 2 - agno = 3 No modify flag set, skipping phase 5 Phase 6 - check inode connectivity... - traversing filesystem ... - traversal finished ... - moving disconnected inodes to lost+found ... Phase 7 - verify link counts... No modify flag set, skipping filesystem flush and exiting.
上述命令只執行磁碟檢查,不嘗試修復任何錯誤。現在,執行不帶 -n 選項的 xfs_repair 命令,它將執行 Linux 磁碟分割槽的掃描和修復。
[root@localhost ~]# xfs_repair /dev/sda1 Phase 1 - find and verify superblock... Phase 2 - using internal log - zero log... - scan filesystem freespace and inode maps... - found root inode chunk Phase 3 - for each AG... - scan and clear agi unlinked lists... - process known inodes and perform inode discovery... - agno = 0 - agno = 1 - agno = 2 - agno = 3 - process newly discovered inodes... Phase 4 - check for duplicate blocks... - setting up duplicate extent list... - check for inodes claiming duplicate blocks... - agno = 0 - agno = 1 - agno = 2 - agno = 3 Phase 5 - rebuild AG headers and trees... - reset superblock... Phase 6 - check inode connectivity... - resetting contents of realtime bitmap and summary inodes - traversing filesystem ... - traversal finished ... - moving disconnected inodes to lost+found ... Phase 7 - verify and correct link counts... done
下面誠信掛載分割槽
[root@localhost ~]# mount /dev/sda1 /data/
在某些情況下,如果 Linux 作業系統正在使用磁碟分割槽,則無法解除安裝磁碟分割槽。出於這個原因,您可能不得不將磁碟檢查推遲到下一次系統啟動。
要使 xfs_repair 命令能夠在 Linux 啟動時執行,請在 GRUB 選單核心命令的末尾新增“fsck.mode=force fsck.repair=yes”。
檢視系統日誌以驗證磁碟修復命令的執行情況。
[root@localhost ~]# journalctl |grep systemd-fsck
要在啟動時永久啟用磁碟檢查,您必須在 GRUB 配置檔案中新增“fsck.mode=force fsck.repair=yes”。
下面編輯grub配置檔案,找到
GRUB_CMDLINE_LINUX
引數並在行尾附加fsck.mode=force fsck.repair=yes。
[root@localhost ~]# cat /etc/default/grub GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="console" GRUB_CMDLINE_LINUX="crashkernel=auto resume=/dev/mapper/cl-swap rd.lvm.lv=cl/root rd.lvm.lv=cl/swap fsck.mode=force fsck.repair=yes" GRUB_DISABLE_RECOVERY="true" GRUB_ENABLE_BLSCFG=true
根據新引數重新生成 GRUB 選單配置。
[root@localhost ~]# grub2-mkconfig
然後重啟系統:
# reboot
到目前為止已經成功掃描和修復XFS、Ext4檔案系統了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901823/viewspace-2839229/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Mac如何修復“無法解除安裝磁碟”錯誤Mac
- 使用 KRAWL 掃描 Kubernetes 錯誤
- 如何修復 HTTP 505 錯誤?HTTP
- 如何修復HTTP 301錯誤?HTTP
- 如何修復HTTP 302錯誤呢?HTTP
- win10 如何用檔案掃描修復系統_w10系統如何掃描檔案Win10
- 如何修復http代理406錯誤呢?HTTP
- 如何修復代理400錯誤請求?
- linux online掃描共享儲存磁碟(無需reboot)Linuxboot
- linux下修復磁碟損壞Linux
- win10硬碟提示掃描修復怎麼辦_win10硬碟提示掃描並修復的解決方法Win10硬碟
- 如何修復http代理出現的503錯誤?HTTP
- 電腦磁碟分割槽調整後出現錯誤磁碟機代號消失的修復方法
- 全表掃描和全索引掃描索引
- Vue packages version conflicts 錯誤修復VuePackage
- win10讀取行動硬碟一直顯示掃描如何修復Win10硬碟
- 爬蟲代理ip出現401錯誤原因是什麼?如何修復錯誤?爬蟲
- 如何修復http代理504閘道器超時錯誤HTTP
- HTTP代理504閘道器超時錯誤如何修復?HTTP
- Checkpoint log:invalid bitmap page錯誤修復
- MySQL GTID複製錯誤修復演示MySql
- http代理401錯誤修復步驟HTTP
- Win10系統掃描磁碟時將檔案掃沒了如何解決Win10
- win10系統lsp錯誤怎樣修復_win10修復lsp錯誤的步驟Win10
- 磁碟修復工具TestDisk
- win10系統掃描器提示掃描不到掃描器如何解決Win10
- WinNTSetup硬碟安裝出錯磁碟機代號錯亂的修復方法和步驟硬碟
- 如何修復帶有問號錯誤的 Mac 資料夾Mac
- 如何修復終端中的 macOS 命令列拼寫錯誤Mac命令列
- http代理出現404錯誤是什麼原因?如何修復?HTTP
- MySQL中的全表掃描和索引樹掃描MySql索引
- 在Linux中,什麼是埠掃描?如何使用工具如nmap進行埠掃描?Linux
- 在Linux中,如何進行安全漏洞掃描?Linux
- 【ASM】ASM磁碟頭被重寫,如何修復ASM
- 【LINUX】Oracle資料庫 linux磁碟頭資料損壞修復LinuxOracle資料庫
- linux RAID10磁碟陣列損壞的修復LinuxAI陣列
- Linux系統磁碟資料修復工具,建議收藏!Linux
- 如何修復Windows 10中的Java虛擬機器致命錯誤WindowsJava虛擬機