linux fack 文件系統修複命令

来源:http://www.cnblogs.com/qianyuliang/archive/2017/12/20/8072487.html
-Advertisement-
Play Games

【簡介】 fsck命令被用於檢查並且試圖修複文件系統中的錯誤。當文件系統發生錯誤四化,可用fsck指令嘗試加以修複。【選項】必要參數 -a 非互交模式,自動修複 -c 檢查是否存在有損壞的區塊。 -C<反敘述器> fsck.ext3命令會把全部的執行過程,都交由其逆向敘述,便於監控程式 -d 詳細顯 ...


簡介

fsck命令被用於檢查並且試圖修複文件系統中的錯誤。當文件系統發生錯誤四化,可用fsck指令嘗試加以修複。

選項
必要參數
 -a 非互交模式,自動修複
 -c 檢查是否存在有損壞的區塊。
 -C<反敘述器> fsck.ext3命令會把全部的執行過程,都交由其逆向敘述,便於監控程式
 -d 詳細顯示命令執行過程
 -f 強制進行檢查
 -F 檢查文件系統之前,先清理該保存設備塊區內的數據
 -l<損壞區塊文件> 把文件中所列出的損壞區塊,加入標記
 -L<損壞區塊文件> 清除所有損壞標誌,重新標記
 -n 非交互模式,把欲檢查的文件系統設成只讀
 -P<數字>  設置fsck.ext2命令所能處理的inode大小為多少
 -r 交互模式
 -R 忽略目錄
 -s 順序檢查
 -S 效果和指定“-s”參數類似
 -t  顯示fsck.ext2命令的時序信息。
 -v 顯示詳細的處理過程
 -y 關閉互動模式
選擇參數
 -b<分區第一個磁區地址>  指定分區的第一個磁區的起始地址/Super Block
 -B<區塊大小>  設置該分區每個區塊的大小
 -I設置欲檢查的文件系統,其inode緩衝區的區塊數目
 -V顯示版本信息

適用
1) 文件系統:ext2 ext3 reiserfs xfs等
2) 範圍:提示文件系統需要FSCK時,未執行或FSCK執行完成

癥狀
1) 無法MOUNT分區;
2) 大量文件、目錄丟失,根目錄下生成/LOST+FOUND文件夾,裡面有大量#XXXXXX類的文件和目錄;
3) fsck很快報錯完成;
4) fsck執行時,有大量提示,如修改節點、清0節點等操作

應急
1,如遇提示fsck時,要小心,如果可能,請儘快斷開系統,umount所有分區
2,必須執行fsck時,先做準備工作,方法一:可實現用dd命令所有涉及到的分區輸出到另外的存儲體上,命令大致所示:dd if=/dev/sda1 of=/dev/sdb1
3,如上面幾種方式均因條件等原因無法執行,但又必須執行時,可小心觀察fsck的執行提示(關掉 -a) 如果發現有提示節點錯誤需更正或清0,節點描述文件大小不正確等信息,應停止執行fsck
備註
1,如果可能,先對故障區做dd全鏡像備份後在執行,或者以只讀方式自行,並仔細看修複過程,如果提示大量inode錯誤,需要重建樹、或大小不對等就不可再繼續下去了
2,文件系統常見錯誤,並且問題通暢原因是電源失敗,硬體失敗,或者操作失誤,例如沒有正常關閉系統
3,fsck只能運行於為mount的文件系統,不要用於已mount的文件系統
4,修複完成後,會出現提示“FILE SYSTEM WAS MODIFIED”。這時重啟系統

參考範例

手動fsck修複

  fsck不僅可以對文件系統進行掃描,還能修正文件系統的一些問題。值得註意的是fsck 掃描文件系統時一定要在單用戶模式、修複模式或把設備umount後進行。
  警告:如果掃描運行中的系統,會造成系統文件損壞。
  文件系統掃描工具有 fsck,fsck.ext2,fsck.jfs,fsck.msdos,fsck.vfat,fsck.ext3,fsck.reiserfs(reiserfsck)。其中fsck 預設支持文件系統ext2,如果想支持ext3文件系統的掃描,應該加-j 參數。最好是根據不同的文件系統來調用不同的掃描工具,比如ext3的文件系統使用fsck.ext3,ext2文件系統使用fsck.etx2等。


/dev/sdb1是ext3的文件系統,只介紹fsck.ext3

範例1: 檢測磁碟
[root@linux test]# fsck.ext3 /dev/fd0
範例2: 檢測磁碟並顯示時序信息
[root@linux test]# fsck.ext3 -ft /dev/fd0

查看fsck報錯的日誌
[root@server ~]# ls -l /var/log/fsck/
total 8
-rw-r----- 1 root adm 190 2011-06-09 10:03 checkfs
-rw-r----- 1 root adm 192 2011-06-09 10:03 checkroot
這兩個文件中會出現fsck的報錯信息。
[root@server ~]# more /var/log/fsck/checkfs
[root@server ~]# more /var/log/fsck/checkroot

查看當前的運行級別:
fsck.ext3掃描文件系統時一定要在單用戶模式、修複模式或把設備umount後進行。如果掃描運行中的系統,會造成系統文件損壞。
選擇在單用戶模式下運行
# runlevel  ---查看運行級別
[root@server ~]# runlevel
N 2
#init 1  --單用戶模式(1 S),在轉換成單用戶模式時可能會需要輸入root密碼。
[root@server ~]# init 1

使用fsck.ext3對文件系統進行掃描、修複
[root@server ~]# fsck.ext3  -y /dev/sdb1  ---開始進入掃描、修正文件系統, sdb1必須umount
註意紅色方框,該位置需要輸入yes

 

fsck.ext3開始進入掃描、修正文件系統,這個過程時間比較長,中間有數次停頓的過程,只需等待即可,千萬不要以為死機而重啟伺服器。
fsck.ext3掃描、修正完文件系統後,根據提示可能需要重啟系統。如果沒有提示重啟系統,也需要reboot來重啟系統。
[root@server ~]# reboot  ---重啟系統
在重啟系統的過程中,fsck會對文件系統進行掃描,如下:

fsck掃描完以後,會啟動到系統的登錄界面,不需要進行任何干涉。
 
再次重新啟動系統,系統可以正常啟動。
 

Linux ext3 fsck一定要慎用

  不管是哪種文件系統,其根本目的都是相同的:如何把文件存在系統給定的區域里,如何有效地管理文件的讀與寫。為實現這樣的目的,驅動層需要完善、周密地應付附加在文件系統上的各種操作。這些操作通常不會是一條指令完成的,如果一個過程需要多條指令完成,在執行這些操作時,全部指令未完成的情況下產生中斷,那這個文件系統便會出現一致性錯誤(或者叫連續性錯誤)。


  為了保證盡可以少的出現一致性錯誤,現在主流的文件系統都會設計成日誌型的。日誌型文件系統的主要特點就是把一個操作的所有指令執行過程都另外緩衝下來,如果全部執行完成再清除日誌標誌,如果操作沒有執行完成,可以在重新激活後通過日誌回溯或繼續完成。


  EXT3的日誌功能通過在EXT2的設計基礎上增加一個特殊的文件(通常是8號節點文件),在這個文件中記錄文件系統的操作過程。但EXT系統文件系統本身在節點、間接索引塊、目錄節點方面沒有冗餘保護,所以當文件系統除日誌外的其他結構並不一致,卻又要通過fsck來進行修複,這種一致性有可能將原本正確的結構也錯誤化。(就像原來是1+2=3,現在錯成了1+3=3,也許改完後變成了1+3=4,就完全沒辦法還原成最早的1+2=3)。


  數據恢復領域經常會遇到這類情況:一次RAID出故障後,下次啟動系統提示做fsck,但做完後,也無法mount分區或者mount 分區後數據全是錯的。需要對這類情況進行數據修複的難度是很大的,從一個完整的結構(fsck後實際上從系統角度看已經是完整的了)再構建另一個完全不同的結構要比修正一個錯誤的結構更難以下手。其實這類情況,很多是因為RAID5有早離線的盤加入了兩個邏輯磁碟組,導致所有的數據流是以新+舊的方式交錯組成的,自然會有太多錯誤。這時候如果做fsck後,有可能數據都無法恢復了。


  所以,在EXT3(實際上其他文件系統也類似)無法mount,或者提示fsck時,如果有重要數據,應該慎重對待,千萬不可貿然執行"fsck -f -y "這樣的自動修複功能。如果可能,先對故障區域做dd全鏡像後再執行,或者以只讀方式執行,並仔細看修複過程,如果提示大量inode錯誤、需要重建樹、或大小不對等就不可再繼續下去了。





您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 推輓輸出,可以輸出高電平,連接數字器件: 輸出0時,N-MOS導通,P-MOS高阻,輸出0。 輸出1時,N-MOS高阻,P-MOS高阻,輸出1;(不需要外部上拉電阻) 開漏輸出: 輸出端相當於三極體的集電極,要得到高電平狀態需要上拉電阻才行,適合做電流型驅動; 輸出0時,N-MOS導通,P-MOS不 ...
  • 1.什麼操作出現:當我在項目中添加產品或者修改時,瀏覽器出現HTTP Status 500 Request processing failed; nested exception is org.hibernate.exception.GenericJDBCException: could not e ...
  • #!/usr/bin/expect -f set pwffd [lindex $argv 0] spawn ssh cmesvr2i expect "*password:" send "$pwffd\r" expect "*#" interact ...
  • 二周第三次課(12月20日)2.14 更改文件和目錄許可權chmod 2.15 更改所有者和所屬組chown2.16 umask2.17 隱藏許可權lsattr/chattr 更改文件和目錄許可權:命令:#chmod >> change mode (-R=文件所有者·文件所屬組·其他用戶一起更改) # r ...
  • Linux下一次刪除百萬文件 Linux下一次刪除百萬文件 線上環境遇到的一個問題,文件數量過多,執行rm命令報錯 # rm -f ./* -bash: /bin/rm: Argument list too long # rm -f ./* -bash: /bin/rm: Argument list ...
  • 一、heartbeat介紹 heartbeat是HA高可用集群的一個重要組件,heartbeat實現了資源轉移和心跳信息傳遞。它的常用組合方式為heartbeat v1,heartbeat v2+crm,heartbeat v3 + pacemaker,目前版本為v3版本。 二、編譯前準備 hear ...
  • 一、LVS基本情況 lvs:Linux Virtual Server,是一種負載均衡集群,其主要是由工作在內核的ipvs與用戶空間的命令行工具ipvsadm組成。支持TCP,UDP,AH,EST,AH_EST,SCTP等諸多協議。 lvs-type: lvs-nat ​ lvs-dr(direct ...
  • 一、systemd的由來與特性 1、歷史由來 從CentOS 7系列開始,redhat正式將systemd用於系統管理,來取代CentOS 5的sysV init和CentOS 6的upstart體系;較之之前,systemd為linux系統提供了啟動與管理的一整套解決方案;下圖為systemd框架 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...