0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

fsck命令用于處理可能損壞的文件系統(tǒng)

冬至子 ? 來(lái)源:TIAP ? 作者:劉光錄 ? 2022-11-15 17:44 ? 次閱讀

fsck(file system check,文件系統(tǒng)檢查)用于處理可能損壞的文件系統(tǒng),本文對(duì)該命令做個(gè)簡(jiǎn)單介紹。

一般來(lái)說(shuō),有這么幾種情況,你可能會(huì)用到 fsck 命令:系統(tǒng)無(wú)法啟動(dòng),設(shè)備(外部驅(qū)動(dòng)器或存儲(chǔ)設(shè)備)運(yùn)行不正常,或者有文件損壞的情況等。

fsck 實(shí)際上是許多文件系統(tǒng)特定檢查器的“前端”,比如 fsck.vfat, fsck.ext2 等。使用 fsck 的時(shí)候不需要指定具體使用的是哪個(gè)檢查器。

fsck 命令簡(jiǎn)介

fsck 命令與大多數(shù) Linux 命令的結(jié)構(gòu)相同,如下為其使用方式:

fsck [options] [filesystem]

如果未指定文件系統(tǒng),系統(tǒng)將分析你的 fstab 文件(/etc/fstab)以查找要掃描的設(shè)備。另外,需要使用 root 用戶或者 sudo 來(lái)運(yùn)行該命令。

我們可以使用 fdisk 或 df 命令列出 Linux 中的硬盤(pán)驅(qū)動(dòng)器,然后就可以使用 fsck 命令來(lái)指定要檢查的設(shè)備了。

Disk /dev/nvme0n1: 238.49 GiB, 256060514304 bytes, 500118192 sectors
Disk model: THNSN5256GPUK NVMe TOSHIBA 256GB        
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 014A45DC-22A2-4FC0-BEEA-25A6F2406380




Device            Start       End   Sectors   Size Type
/dev/nvme0n1p1     2048   1050623   1048576   512M EFI System
/dev/nvme0n1p2  1050624  98563270  97512647  46.5G Linux filesystem
/dev/nvme0n1p3 98564096 500117503 401553408 191.5G Linux filesystem

在運(yùn)行 fsck 之前卸載設(shè)備

不要在已安裝或掛載的設(shè)備上運(yùn)行 fsck ,否則的話會(huì)損壞文件。所以在運(yùn)行 fsck 之前需要先卸載設(shè)備。

如果你嘗試在已安裝的設(shè)備上運(yùn)行 fsck,會(huì)看到如下錯(cuò)誤:

$ sudo fsck /dev/sda3
fsck from util-linux 2.34
e2fsck 1.45.5 (07-Jan-2020)
/dev/sda3 is mounted.
e2fsck: Cannot continue, aborting.

而在正常的驅(qū)動(dòng)器上運(yùn)行 fsck,輸出是這樣的:

$ sudo fsck /dev/sda2
fsck from util-linux 2.34
fsck.fat 4.1 (2017-01-24)
/dev/sda2: 5 files, 1967/1972 clusters

雖然 fsck 命令接受設(shè)備名稱(比如 /dev/sda)作為參數(shù),但是你可以選擇輸入 UUID,以免將已安裝的和卸載的設(shè)備混淆。UUID是分配給設(shè)備的固定值,不會(huì)受這些系統(tǒng)更改的影響。

fsck 命令的退出代碼

如下是使用 fsck 檢查磁盤(pán)后返回的一個(gè)代碼列表。如果分析一個(gè)磁盤(pán),退出代碼是這些代碼的總和,如果在多個(gè)設(shè)備上使用 fsck,那么返回的是兩個(gè)和的邏輯或(OR,||)。

  • 0 - 沒(méi)有報(bào)錯(cuò);
  • 1 - 文件系統(tǒng)錯(cuò)誤已更正;
  • 2 - 應(yīng)重新啟動(dòng)系統(tǒng);
  • 4 - 未更正的文件系統(tǒng)錯(cuò)誤;
  • 8 - 操作錯(cuò)誤;
  • 16 - 用法或語(yǔ)法錯(cuò)誤;
  • 32 - 用戶請(qǐng)求取消了 fsck
  • 128 - 共享庫(kù)錯(cuò)誤。

你可以使用 echo $? 來(lái)檢查上次運(yùn)行命令的退出代碼。

fsck 命令的應(yīng)用

上述我們對(duì) fsck 做了一個(gè)基本的介紹,下面我們來(lái)看看這個(gè)命令的使用。

修復(fù)USB磁盤(pán)和其他可移動(dòng)設(shè)備

作為演示,我們假定有問(wèn)題(待檢查)的設(shè)備為 /dev/sdb。

首先,我們需要確保驅(qū)動(dòng)器已卸載:

sudo umount /dev/sdb

然后運(yùn)行 fsck 命令:

sudo fsck /dev/sdb

檢查是否有錯(cuò)誤輸出,如果沒(méi)有顯示任何信息,可使用 echo $? 來(lái)檢查退出代碼。

我們可以添加一些選項(xiàng),允許命令進(jìn)行自動(dòng)更正。但是這些命令沒(méi)有進(jìn)行標(biāo)準(zhǔn)化,所以在使用前需要驗(yàn)證文件系統(tǒng)并比較 man 手冊(cè)中的描述信息。

盡管如此,通常我們可以使用 -p 選項(xiàng)來(lái)讓 fsck 自動(dòng)修復(fù):

sudo fsck -p /dev/sdb

類似的,-y 選項(xiàng)可以對(duì)檢測(cè)到的任何損壞的文件系統(tǒng)進(jìn)行更正。

修復(fù)根文件系統(tǒng)

當(dāng)系統(tǒng)處于活動(dòng)(active)狀態(tài)時(shí),我們無(wú)法卸載 root 分區(qū)。如果我們懷疑主文件系統(tǒng)已損壞,那就需要使用其他的方法了。

對(duì)于這種情況,有幾個(gè)方案可以使用。比如可以在系統(tǒng)啟動(dòng)時(shí),在救援模式(rescue mode)下運(yùn)行 fsck,或者使用恢復(fù)主題的引導(dǎo)盤(pán)(recovery-themed live cd)。

許多 Linux 發(fā)行版,在經(jīng)過(guò)幾次系統(tǒng)啟動(dòng)失敗后,重新啟動(dòng)時(shí)會(huì)自動(dòng)強(qiáng)制 fsck。如果你喜歡自己動(dòng)手,可以手動(dòng)設(shè)置“幾次”這個(gè)數(shù)值。

大多數(shù)現(xiàn)代 Linux 版本都有一個(gè)名為 tune2fs 的工具,假如你的 root 設(shè)備為 /dev/sda,可以使用如下命令:

sudo tune2fs -c 1 /dev/sda

上述命令是對(duì)系統(tǒng)設(shè)置的更改,設(shè)置為每 **n **次(上述例子中為 1 )引導(dǎo)(系統(tǒng)啟動(dòng)),運(yùn)行一次 fsck。你還可以將其設(shè)置為標(biāo)準(zhǔn)的時(shí)間間隔,單位可以設(shè)置為 天、周或月 。

假如我們希望在任何時(shí)間啟動(dòng)系統(tǒng)時(shí),如果一周內(nèi)沒(méi)有檢查,就運(yùn)行 fsck。那么可以使用 -i 選項(xiàng)來(lái)指定時(shí)間間隔,如下:

sudo tune2fs -i 1w /dev/sda

如果你使用的是 systemd,則可以通過(guò)輸入以下命令在下次啟動(dòng)時(shí)強(qiáng)制運(yùn)行 fsck:

fsck.mode=force
fsck.repair=yes

關(guān)于 fsck 的更多信息,大家可以參考 man 手冊(cè),在終端中運(yùn)行 man fsck 即可。

審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 驅(qū)動(dòng)器
    +關(guān)注

    關(guān)注

    52

    文章

    8102

    瀏覽量

    145828
  • Linux系統(tǒng)
    +關(guān)注

    關(guān)注

    4

    文章

    590

    瀏覽量

    27318
  • UUID
    +關(guān)注

    關(guān)注

    0

    文章

    22

    瀏覽量

    8094
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    在Linux 系統(tǒng)中緊急情況處理六招

    、文件系統(tǒng)被破壞時(shí)的處理方法當(dāng)文件系統(tǒng)被破壞時(shí),如果使用的是ext2fs類型的文件系統(tǒng),就可從軟盤(pán)運(yùn)e2fsck
    發(fā)表于 09-25 10:37

    在Linux 系統(tǒng)中緊急情況處理六招

    上原來(lái)的/etc/passwd文件的路徑就是 /mnt/etc/passwd。 2、文件系統(tǒng)被破壞時(shí)的處理方法當(dāng)文件系統(tǒng)被破壞時(shí),如果使用的是ext2fs類型的
    發(fā)表于 09-26 15:14

    Linux常見(jiàn)故障的緊急處理方法

    、文件系統(tǒng)被破壞時(shí)的處理方法當(dāng)文件系統(tǒng)被破壞時(shí),如果使用的是ext2fs類型的文件系統(tǒng),就可從軟盤(pán)運(yùn)e2fsck
    發(fā)表于 05-19 08:00

    XfS文件系統(tǒng),XfS文件系統(tǒng)是什么意思

    XfS文件系統(tǒng),XfS文件系統(tǒng)是什么意思 XfS文件系統(tǒng)是SGI開(kāi)發(fā)的高級(jí)日志文件系統(tǒng),XFS極具伸縮性,非常健壯。所幸的是SGI將其移植到了Lin
    發(fā)表于 03-29 10:39 ?4247次閱讀

    Linux日志文件系統(tǒng)解析

    時(shí),如何提供更好的完整性。此外本文還介紹了現(xiàn)行的幾種日志文件 系統(tǒng)和下一代日志文件系統(tǒng)。 定義日志文件系統(tǒng)的方法有很多種,但是讓我們抓住要點(diǎn)。日志
    發(fā)表于 11-01 15:23 ?0次下載
    Linux日志<b class='flag-5'>文件系統(tǒng)</b>解析

    設(shè)備文件系統(tǒng)devfs詳細(xì)解析

    ,典型的 /dev 樹(shù)包含數(shù)百個(gè)塊特殊文件和字符特殊文件,它們?nèi)荚诟?b class='flag-5'>文件系統(tǒng)上。每個(gè)特殊文件都可以讓用戶空間進(jìn)程輕松地與內(nèi)核設(shè)備實(shí)現(xiàn)交互。舉例來(lái)說(shuō),通過(guò)對(duì)這些特殊
    發(fā)表于 11-01 15:36 ?0次下載

    Flash文件系統(tǒng)剖析

    設(shè)備的文件系統(tǒng)意味著什么嗎?本文將向您介紹 Linux 的 flash 文件系統(tǒng),并探索它們?nèi)绾瓮ㄟ^(guò)平均讀寫(xiě)(wear leveling)處理底層的可消耗設(shè)備(flash 部件),并鑒別各種
    發(fā)表于 11-01 15:43 ?4次下載
    Flash<b class='flag-5'>文件系統(tǒng)</b>剖析

    DOS命令修復(fù)U盤(pán)文件錯(cuò)誤

    Chkdsk命令是在DOS下用于修復(fù)文件系統(tǒng)錯(cuò)誤的關(guān)鍵命令。U盤(pán)的文件系統(tǒng)錯(cuò)誤會(huì)對(duì)我們的數(shù)據(jù)安全造成危害。
    發(fā)表于 01-17 15:08 ?9134次閱讀

    文件系統(tǒng)是什么?淺談EXT文件系統(tǒng)歷史

    在先前關(guān)于Linux文件系統(tǒng)的文章中,我很想去深入地討論更多EXT文件系統(tǒng)的特性的信息。所以,首先讓我們來(lái)回答這個(gè)問(wèn)題:什么是文件系統(tǒng)?一個(gè)文件系統(tǒng)應(yīng)該遵循以下特點(diǎn)。
    發(fā)表于 06-28 09:03 ?5655次閱讀
    <b class='flag-5'>文件系統(tǒng)</b>是什么?淺談EXT<b class='flag-5'>文件系統(tǒng)</b>歷史

    使用RT-Thread文件系統(tǒng)

    了解了文件系統(tǒng)的一些常用命令之后,下面帶領(lǐng)大家通過(guò)運(yùn)行文件系統(tǒng)的一些示例程序,來(lái)熟悉文件系統(tǒng)的基本操作。示例程序通過(guò)使用一些 DFS 的 API接口來(lái)實(shí)現(xiàn),并將示例導(dǎo)出到 msh
    的頭像 發(fā)表于 11-07 10:40 ?8700次閱讀

    linux文件系統(tǒng)中的虛擬文件系統(tǒng)設(shè)計(jì)詳解

    ;更進(jìn)一步,對(duì)文件的 操作可以跨文件系統(tǒng)而執(zhí)行。如圖 1 所示,我們可以使用 cp 命令從 vfat 文件系統(tǒng)格式的硬盤(pán)拷貝數(shù)據(jù)到 ext3 文件系
    發(fā)表于 04-02 14:37 ?1786次閱讀
    linux<b class='flag-5'>文件系統(tǒng)</b>中的虛擬<b class='flag-5'>文件系統(tǒng)</b>設(shè)計(jì)詳解

    EE-329:在SHARC?處理器上運(yùn)行FAT16文件系統(tǒng)和DOS命令

    EE-329:在SHARC?處理器上運(yùn)行FAT16文件系統(tǒng)和DOS命令
    發(fā)表于 05-16 11:25 ?6次下載
    EE-329:在SHARC?<b class='flag-5'>處理</b>器上運(yùn)行FAT16<b class='flag-5'>文件系統(tǒng)</b>和DOS<b class='flag-5'>命令</b>

    【服務(wù)器數(shù)據(jù)恢復(fù)】Linux Ext4文件系統(tǒng)執(zhí)行fsck檢查一致性后文件掛載報(bào)錯(cuò)的數(shù)據(jù)恢復(fù)案例

    某公司Ext4文件系統(tǒng)umount失敗,管理員執(zhí)行fsck檢查一致性,結(jié)果Ext4文件mount不上(有時(shí)也表現(xiàn)為目錄變成了文件),報(bào)錯(cuò)信息:mount: wrong fs type,
    的頭像 發(fā)表于 10-21 14:11 ?1337次閱讀
    【服務(wù)器數(shù)據(jù)恢復(fù)】Linux Ext4<b class='flag-5'>文件系統(tǒng)</b>執(zhí)行<b class='flag-5'>fsck</b>檢查一致性后<b class='flag-5'>文件</b>掛載報(bào)錯(cuò)的數(shù)據(jù)恢復(fù)案例

    如何使用fsck和xfs_repair命令修復(fù)Linux磁盤(pán)錯(cuò)誤?

    fsck文件系統(tǒng)一致性檢查)是用于檢查L(zhǎng)inux操作系統(tǒng)文件系統(tǒng)一致性的工具。
    的頭像 發(fā)表于 03-15 09:24 ?1.4w次閱讀

    用于Linux的最佳通用文件系統(tǒng) Linux文件系統(tǒng)的安裝

    為您的計(jì)算機(jī)選擇正確的文件系統(tǒng)可能是一個(gè)困難的過(guò)程。您可能會(huì)想知道:為什么文件系統(tǒng)很重要?有沒(méi)有適用于安裝 Linux 的特定
    發(fā)表于 08-03 10:22 ?320次閱讀
    適<b class='flag-5'>用于</b>Linux的最佳通用<b class='flag-5'>文件系統(tǒng)</b> Linux<b class='flag-5'>文件系統(tǒng)</b>的安裝