如何使用'fsck'修復(fù)Linux中的文件系統(tǒng)錯(cuò)誤
文件系統(tǒng)負(fù)責(zé)組織數(shù)據(jù)的存儲(chǔ)和恢復(fù)方式。 無論如何,隨著時(shí)間的推移,文件系統(tǒng)可能會(huì)被破壞,并且可能無法訪問它的某些部分。 如果您的文件系統(tǒng)出現(xiàn)這種不一致,建議驗(yàn)證其完整性。
這可以通過名為fsck的系統(tǒng)實(shí)用程序( 文件系統(tǒng)一致性檢查)完成。 此檢查可在引導(dǎo)期間自動(dòng)完成或手動(dòng)運(yùn)行。
在本文中,我們將回顧fsck實(shí)用程序及其用法,以幫助您修復(fù)磁盤錯(cuò)誤。
何時(shí)在Linux中使用fsck
當(dāng)您想要運(yùn)行fsck時(shí),有不同的場景。 以下是一些例子:
- 系統(tǒng)無法啟動(dòng)。
- 系統(tǒng)上的文件已損壞(通常您可能會(huì)看到輸入/輸出錯(cuò)誤)。
- 附加驅(qū)動(dòng)器(包括閃存驅(qū)動(dòng)器/ SD卡)無法正常工作。
fsck可用選項(xiàng)
需要使用超級(jí)用戶權(quán)限或root運(yùn)行Fsck命令。 您可以使用不同的參數(shù)。 它們的用法取決于您的具體情況。 您將在下面看到一些更重要的選項(xiàng):
- -A - 用于檢查所有文件系統(tǒng)。 該列表取自/etc/fstab 。
- -C - 顯示進(jìn)度條。
- -l - 鎖定設(shè)備以確保在檢查期間沒有其他程序嘗試使用該分區(qū)。
- -M - 不檢查已掛載的文件系統(tǒng)。
- -N - 僅顯示將要執(zhí)行的操作 - 不進(jìn)行實(shí)際更改。
- -P - 如果要并行檢查文件系統(tǒng),包括root。
- -R - 不檢查根文件系統(tǒng)。 這僅適用于' -A '。
- -r - 為正在檢查的每個(gè)設(shè)備提供統(tǒng)計(jì)信息。
- -T - 不顯示標(biāo)題。
- -t - 專門指定要檢查的文件系統(tǒng)類型。 類型可以是逗號(hào)分隔列表。
- -V - 提供描述正在進(jìn)行的操作。
如何運(yùn)行fsck來修復(fù)Linux文件系統(tǒng)錯(cuò)誤
要運(yùn)行fsck ,您需要確保未安裝要檢查的分區(qū)。 出于本文的目的,我將使用安裝在/mnt第二個(gè)驅(qū)動(dòng)器/dev/sdb 。
如果我在安裝分區(qū)時(shí)嘗試運(yùn)行fsck會(huì)發(fā)生什么。
- # fsck /dev/sdb
在已安裝的分區(qū)上運(yùn)行fsck
為避免這種情況,請(qǐng)使用卸載分區(qū)。
- # umount /dev/sdb
然后fsck可以安全地運(yùn)行。
- # fsck /dev/sdb
在Linux分區(qū)上運(yùn)行fsck
了解fsck退出代碼
運(yùn)行fsck后 ,它將返回退出代碼。 這些鱈魚可以通過運(yùn)行以下命令在fsck的手冊(cè)中看到:
- # man fsck
- 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
修復(fù)Linux文件系統(tǒng)錯(cuò)誤
有時(shí)在文件系統(tǒng)上可以找到多個(gè)錯(cuò)誤。 在這種情況下,您可能希望fsck自動(dòng)嘗試更正錯(cuò)誤。 這可以通過以下方式完成:
- # fsck -y /dev/sdb
-y標(biāo)志, “yes”來自fsck的任何提示自動(dòng)“yes”以糾正錯(cuò)誤。
同樣,您可以在所有文件系統(tǒng)上運(yùn)行相同的操作(沒有root ):
- $ fsck -AR -y
如何在Linux根分區(qū)上運(yùn)行fsck
在某些情況下,您可能需要在系統(tǒng)的根分區(qū)上運(yùn)行fsck 。 由于在安裝分區(qū)時(shí)無法運(yùn)行fsck ,因此可以嘗試以下選項(xiàng)之一:
- 在系統(tǒng)啟動(dòng)時(shí)強(qiáng)制fsck
- 在救援模式下運(yùn)行fsck
我們將審查這兩種情況。
系統(tǒng)啟動(dòng)時(shí)強(qiáng)制fsck
這相對(duì)容易完成,您唯一需要做的就是在系統(tǒng)的根分區(qū)中創(chuàng)建一個(gè)名為forcefsck的文件。 使用以下命令:
- # touch /forcefsck
然后,您可以簡單地強(qiáng)制或安排重新啟動(dòng)系統(tǒng)。 在下次啟動(dòng)期間,將執(zhí)行fsck 。 如果停機(jī)時(shí)間很重要,建議您仔細(xì)規(guī)劃,因?yàn)槿绻南到y(tǒng)上有許多使用的inode, fsck可能需要一些額外的時(shí)間。
系統(tǒng)引導(dǎo)后,檢查文件是否仍然存在:
- # ls /forcefsck
如果是這樣,您可能希望將其刪除,以避免每次系統(tǒng)啟動(dòng)時(shí)出現(xiàn)fsck 。
在救援模式下運(yùn)行fsck
在救援模式下運(yùn)行fsck需要更多步驟。 首先準(zhǔn)備系統(tǒng)以重新啟動(dòng) 。 停止任何關(guān)鍵服務(wù),如MySQL / MariaDB等,然后鍵入。
- # reboot
在啟動(dòng)過程中,按住shift鍵以顯示grub菜單。 選擇“ 高級(jí)選項(xiàng) ”。
Grub Advance Options
然后選擇“ 恢復(fù)模式 ”。
選擇Linux恢復(fù)模式
在下一個(gè)菜單中選擇“ fsck ”。
選擇fsck Utility
系統(tǒng)將詢問您是否希望重新安裝/ filesystem。 選擇“yes” 。
確認(rèn)根文件系統(tǒng)
你應(yīng)該看到類似的東西。
運(yùn)行fsck文件系統(tǒng)檢查
然后,您可以通過選擇“恢復(fù)”恢復(fù)正常啟動(dòng)。
選擇正常啟動(dòng)
結(jié)論
在本教程中,您學(xué)習(xí)了如何使用fsck并在不同的Linux文件系統(tǒng)上運(yùn)行一致性檢查。 如果您對(duì)fsck有任何疑問,請(qǐng)不要猶豫,在下面的評(píng)論部分提交。