什么是FSCK?
fsck(文件系統(tǒng)一致性檢查)是用于檢查Linux操作系統(tǒng)文件系統(tǒng)一致性的工具。
列出 Linux 磁盤分區(qū)和類型:
首先,需要確定 Linux 系統(tǒng)的磁盤分區(qū)、它們各自的文件系統(tǒng)以及掛載點(diǎn)。 下面使用lsblk命令列出磁盤明、文件系統(tǒng)類型、掛載點(diǎn):
[root@localhost~]#lsblk-oNAME,FSTYPE,MOUNTPOINT NAMEFSTYPEMOUNTPOINT sda sdb sdc sdd sr0iso9660 nvme0n1 ├─nvme0n1p1ext4/boot └─nvme0n1p2LVM2_member ├─cl-rootxfs/ └─cl-swapswap[SWAP]
獲取 Linux 磁盤的上次掃描時(shí)間
你可以使用下命令找到 Ext2,Ext3,Ext4 類型分區(qū)的最后一次掃描時(shí)間。
[root@localhost~]#tune2fs-l/dev/nvme0n1p1|grepchecked Lastchecked:WedSep115:42:112021
掃描和修復(fù) Ext4 類型的磁盤分區(qū)
掃描 Linux 磁盤分區(qū),可以使用fsck(文件系統(tǒng)一致性檢查)命令。但是在檢查和修復(fù)它之前,需要卸載該分區(qū)。下面實(shí)例中,我們卸載的是/boot分區(qū)。
[root@localhost~]#umount/dev/nvme0n1p1卸載成功后,使用fsck.ext4檢查/dev/nvme0n1p1分區(qū)
[root@localhost~]#fsck.ext4/dev/nvme0n1p1 e2fsck1.44.3(10-July-2018) /dev/nvme0n1p1:clean,311/65536files,55546/262144blocks
檢查并修復(fù)您的 Linux 磁盤后,在其各自的掛載點(diǎn)再次掛載分區(qū)。執(zhí)行以下命令用來掛載 /etc/fstab 配置文件中列出的所有磁盤分區(qū)。
[root@localhost~]#mount-a
在 Linux 啟動(dòng)時(shí)啟用 Ext4 磁盤分區(qū)掃描
在系統(tǒng)啟動(dòng)時(shí)啟用磁盤檢查。你必須修改該磁盤分區(qū)的Mount Count參數(shù)。
[root@localhost~]#tune2fs-c1/dev/nvme0n1p1 tune2fs1.44.3(10-July-2018) Settingmaximalmountcountto1
重啟系統(tǒng)之后,fsck命令現(xiàn)在會(huì)在啟動(dòng)時(shí)檢查你的 Ext4 磁盤分區(qū)。
[root@localhost~]#reboot重新啟動(dòng)后,獲取磁盤分區(qū)的Last Checked值,現(xiàn)在它會(huì)顯示 Linux 上次啟動(dòng)的時(shí)間。
[root@localhost~]#tune2fs-l/dev/nvme0n1p1|grepchecked Lastchecked:TueSep1411:08:112021
恢復(fù)Mount Count參數(shù)的默認(rèn)值,否則它會(huì)在每次系統(tǒng)啟動(dòng)時(shí)繼續(xù)執(zhí)行磁盤掃描。
[root@localhost~]#tune2fs-c-1/dev/nvme0n1p1 tune2fs1.44.3(10-July-2018) Settingmaximalmountcountto-1
什么是 XFS_REPAIR?
xfs_repair 實(shí)用程序具有高度可擴(kuò)展性,旨在有效修復(fù)具有許多 inode 且非常大的文件系統(tǒng)。與其他 Linux 文件系統(tǒng)不同,xfs_repair 不會(huì)在啟動(dòng)時(shí)運(yùn)行,即使 XFS 文件系統(tǒng)沒有完全卸載。如果發(fā)生不干凈的卸載,xfs_repair 只會(huì)在掛載時(shí)重放日志,確保文件系統(tǒng)一致。
掃描和修復(fù) XFS 類型的磁盤分區(qū)
XFS 類型的磁盤分區(qū)有自己的一組命令,與 Ext4 有點(diǎn)不同。在檢查其一致性之前,必須卸載 XFS 磁盤分區(qū)。
[root@localhost~]#umount/dev/sda1我們有 xfs_repair 命令用于檢查和修復(fù)磁盤錯(cuò)誤。使用xfs_repair 命令的-n選項(xiàng)來檢查磁盤錯(cuò)誤。
[root@localhost~]#xfs_repair-n/dev/sda1 Phase1-findandverifysuperblock... Phase2-usinginternallog -zerolog... -scanfilesystemfreespaceandinodemaps... -foundrootinodechunk Phase3-foreachAG... -scan(butdon'tclear)agiunlinkedlists... -processknowninodesandperforminodediscovery... -agno=0 -agno=1 -agno=2 -agno=3 -processnewlydiscoveredinodes... Phase4-checkforduplicateblocks... -settingupduplicateextentlist... -checkforinodesclaimingduplicateblocks... -agno=0 -agno=1 -agno=2 -agno=3 Nomodifyflagset,skippingphase5 Phase6-checkinodeconnectivity... -traversingfilesystem... -traversalfinished... -movingdisconnectedinodestolost+found... Phase7-verifylinkcounts... Nomodifyflagset,skippingfilesystemflushandexiting.
上述命令只執(zhí)行磁盤檢查,不嘗試修復(fù)任何錯(cuò)誤?,F(xiàn)在,執(zhí)行不帶 -n 選項(xiàng)的 xfs_repair 命令,它將執(zhí)行 Linux 磁盤分區(qū)的掃描和修復(fù)。
[root@localhost~]#xfs_repair/dev/sda1 Phase1-findandverifysuperblock... Phase2-usinginternallog -zerolog... -scanfilesystemfreespaceandinodemaps... -foundrootinodechunk Phase3-foreachAG... -scanandclearagiunlinkedlists... -processknowninodesandperforminodediscovery... -agno=0 -agno=1 -agno=2 -agno=3 -processnewlydiscoveredinodes... Phase4-checkforduplicateblocks... -settingupduplicateextentlist... -checkforinodesclaimingduplicateblocks... -agno=0 -agno=1 -agno=2 -agno=3 Phase5-rebuildAGheadersandtrees... -resetsuperblock... Phase6-checkinodeconnectivity... -resettingcontentsofrealtimebitmapandsummaryinodes -traversingfilesystem... -traversalfinished... -movingdisconnectedinodestolost+found... Phase7-verifyandcorrectlinkcounts... done
下面誠信掛載分區(qū)
[root@localhost~]#mount/dev/sda1/data/
在 Linux 啟動(dòng)時(shí)啟用 XFS 磁盤分區(qū)掃描
在某些情況下,如果 Linux 操作系統(tǒng)正在使用磁盤分區(qū),則無法卸載磁盤分區(qū)。出于這個(gè)原因,您可能不得不將磁盤檢查推遲到下一次系統(tǒng)啟動(dòng)。
要使 xfs_repair 命令能夠在 Linux 啟動(dòng)時(shí)運(yùn)行,請(qǐng)?jiān)?GRUB 菜單內(nèi)核命令的末尾添加“fsck.mode=force fsck.repair=yes”。 查看系統(tǒng)日志以驗(yàn)證磁盤修復(fù)命令的執(zhí)行情況。
[root@localhost~]#journalctl|grepsystemd-fsck要在啟動(dòng)時(shí)永久啟用磁盤檢查,您必須在 GRUB 配置文件中添加“fsck.mode=force fsck.repair=yes”。 下面編輯grub配置文件,找到GRUB_CMDLINE_LINUX參數(shù)并在行尾附加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=autoresume=/dev/mapper/cl-swaprd.lvm.lv=cl/rootrd.lvm.lv=cl/swapfsck.mode=forcefsck.repair=yes" GRUB_DISABLE_RECOVERY="true" GRUB_ENABLE_BLSCFG=true
根據(jù)新參數(shù)重新生成 GRUB 菜單配置。
[root@localhost~]#grub2-mkconfig
然后重啟系統(tǒng):
#reboot
總 結(jié)
到目前為止已經(jīng)成功掃描和修復(fù)XFS、Ext4文件系統(tǒng)了。
審核編輯:劉清
-
XfS
+關(guān)注
關(guān)注
0文章
9瀏覽量
9008 -
GRUB
+關(guān)注
關(guān)注
0文章
6瀏覽量
7011 -
Linux操作系統(tǒng)
+關(guān)注
關(guān)注
0文章
54瀏覽量
11133
原文標(biāo)題:如何掃描和修復(fù) Linux 磁盤錯(cuò)誤
文章出處:【微信號(hào):良許Linux,微信公眾號(hào):良許Linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論