linux磁碟修復
⑴ 磁碟修復命令
linux磁碟修復相關命令:
badblocks
功能說明:檢查磁碟裝置中損壞的區塊。
語 法:badblocks [-svw][-b ][-o ][磁碟裝置][磁碟區塊數][啟始區塊]
補充說明:執行指令時須指定所要檢查的磁碟裝置,及此裝置的磁碟區塊數。
參 數:
-b 指定磁碟的區塊大小,單位為位元組。
-o 將檢查的結果寫入指定的輸出文件。
-s 在檢查時顯示進度。
-v 執行時顯示詳細的信息。
-w 在檢查時,執行寫入測試。
[磁碟裝置] 指定要檢查的磁碟裝置。
[磁碟區塊數] 指定磁碟裝置的區塊總數。
[啟始區塊] 指定要從哪個區塊開始檢查。
--------------------------------------------------------------------------------
cfdisk
功能說明:磁碟分區。
語 法:cfdisk [-avz][-c -h -s ][-P ][外圍設備代號]
補充說明:cfdisk是用來磁碟分區的程序,它十分類似DOS的fdisk,具有互動式操作界面而非傳統fdisk的問答式界面,您可以輕易地利用方向鍵來操控分區操作。
參 數:
-a 在程序里不用反白代表選取,而以箭頭表示。
-c 忽略BIOS的數值,直接指定磁碟的柱面數目。
-h 忽略BIOS的數值,直接指定磁碟的磁頭數目。
-P 顯示分區表的內容,附加參數"r"會顯示整個分區表的詳細資料,附加參數"s"會依照磁區的順序顯示相關信息,附加參數"t"則會以磁頭,磁區,柱面的方式來顯示資料。
-s 忽略BIOS的數值,直接指定磁碟的磁區數目。
-v 顯示版本信息。
-z 不讀取現有的分區,直接當作沒有分區的新磁碟使用。
--------------------------------------------------------------------------------
dd
功能說明:讀取,轉換並輸出數據。
語 法:dd [bs=][cbs=][conv=][count=][ibs=][if=][obs=][of=][seek=][skip=][--help][--version]
補充說明:dd可從標准輸入或文件讀取數據,依指定的格式來轉換數據,再輸出到文件,設備或標准輸出。
參 數:
bs= 將ibs( 輸入)與obs(輸出)設成指定的位元組數。
cbs= 轉換時,每次只轉換指定的位元組數。
conv= 指定文件轉換的方式。
count= 僅讀取指定的區塊數。
ibs= 每次讀取的位元組數。
if= 從文件讀取。
obs= 每次輸出的位元組數。
of= 輸出到文件。
seek= 一開始輸出時,跳過指定的區塊數。
skip= 一開始讀取時,跳過指定的區塊數。
--help 幫助。
--version 顯示版本信息。
--------------------------------------------------------------------------------
e2fsck(ext2 file system check)
功能說明:檢查ext2文件系統的正確性。
語 法:e2fsck [-acCdfFnprsStvVy][-b ][-B ][-l ][-L ][設備名稱]
補充說明:e2fsck執行後的傳回值及代表意義如下。
0 沒有任何錯誤發生。
1 文件系統發生錯誤,並且已經修正。
2 文件系統發生錯誤,並且已經修正。
4 文件系統發生錯誤,但沒有修正。
8 運作時發生錯誤。
16 使用的語法發生錯誤。
128 共享的函數庫發生錯誤。
參 數:
-a 不詢問使用者意見,便自動修復文件系統。
-b 指定superblock,而不使用預設的superblock。
-B 指定區塊的大小,單位為位元組。
-c 一並執行badblocks,以標示損壞的區塊。
-C 將檢查過程的信息完整記錄在file descriptor中,使得整個檢查過程都能完整監控。
-d 顯示排錯信息。
-f 即使文件系統沒有錯誤跡象,仍強制地檢查正確性。
-F 執行前先清除設備的緩沖區。
-l 將文件中指定的區塊加到損壞區塊列表。
-L 先清除損壞區塊列表,再將文件中指定的區塊加到損壞區塊列表。因此損壞區塊列表的區塊跟文件中指定的區塊是一樣的。
-n 以只讀模式開啟文件系統,並採取非互動方式執行,所有的問題對話均設置以"no"回答。
-p 不詢問使用者意見,便自動修復文件系統。
-r 此參數只為了兼容性而存在,並無實際作用。
-s 如果文件系統的位元組順序不適當,就交換位元組順序,否則不做任何動作。
-S 不管文件系統的位元組順序,一律交換位元組順序。
-t 顯示時間信息。
-v 執行時顯示詳細的信息。
-V 顯示版本信息。
-y 採取非互動方式執行,所有的問題均設置以"yes"回答。
-------------------------------分頁欄-------------------------------
ext2ed(ext2 file system editor)
功能說明:ext2文件系統編輯程序。
語 法:ext2ed
補充說明:ext2ed可直接處理硬碟分區上的數據,這指令只有Red Hat Linux才提供。
參 數:
一般指令
setdevice[設備名稱] 指定要處理的設備。
disablewrite 將ext2ed設為只讀的狀態。
enablewrite 將ext2ed設為可讀寫的狀態。
help[指令] 顯示個別指令的幫助。
next 移至下一個單位,單位會依目前所在的模式而異。
prev 移至前一個單位,單位會依目前所在的模式而異。
pgup 移至下一頁。
pgdn 移至上一頁。
set 修改目前的數據,參數會依目前所在的模式而異。
writedata 在執行此指令之後,才會實際修改分區中的數據。
ext2進入3種模式的指令
super 進入main superblock,即Superblock模式。
group 進入指定的group,即Group模式。
cd 在inode模式下,進入指定的目錄或文件,即Inode模式。
Superblock模式
go 進入指定的superblock備份。
setactive 將目前所在的superblock,復制到main superblock。
Group模式
blockbitmap 顯示目前groupo的區塊圖。
inode 進入目前group的第一個inode。
inodebitmap 顯示目前group的inode二進制碼。
Inode模式
dir 進入目錄模式。
file 進入文件模式。
--------------------------------------------------------------------------------
fdisk
功能說明:磁碟分區。
語 法:fdisk [-b ][-uv][外圍設備代號] 或 fdisk [-l][-b ][-uv][外圍設備代號...] 或 fdisk [-s ]
補充說明:fdisk是用來磁碟分區的程序,它採用傳統的問答式界面,而非類似DOS fdisk的cfdisk互動式操作界面,因此在使用上較為不便,但功能卻絲毫不打折扣。
參 數:
-b 指定每個分區的大小。
-l 列出指定的外圍設備的分區表狀況。
-s 將指定的分區大小輸出到標准輸出上,單位為區塊。
-u 搭配"-l"參數列表,會用分區數目取代柱面數目,來表示每個分區的起始地址。
-v 顯示版本信息。
--------------------------------------------------------------------------------
fsck.ext2(file system check-second filesystem)
功能說明:檢查文件系統並嘗試修復錯誤。
語 法:fsck.ext2 [-acdfFnprsStvVy][-b ][-B ][-C ][-I ][-l/L ][-P ][外圍設備代號]
補充說明:當ext2文件系統發生錯誤時,可用fsck.ext2指令嘗試加以修復。
參 數:
-a 自動修復文件系統,不詢問任何問題。
-b 指定分區的第一個磁區的起始地址,也就是Super Block。
-B 設置該分區每個區塊的大小。
-c 檢查指定的文件系統內,是否存在有損壞的區塊。
-C 指定反敘述器,fsck.ext2指令會把全部的執行過程,都交由其逆向敘述,便於排錯或監控程序執行的情形。
-d 詳細顯示指令執行過程,便於排錯或分析程序執行的情形。
-f 強制對該文件系統進行完整檢查,縱然該文件系統在慨略檢查下沒有問題。
-F 檢查文件系統之前,先清理該保存設備塊區內的數據。
-I 設置欲檢查的文件系統,其inode緩沖區的區塊數目。
-l 把文件中所列出的區塊,視為損壞區塊並將其標示出來,避免應用程序使用該區塊。
-L 此參數的效果和指定"-l"參數類似,但在參考損壞區塊文件標示損壞區塊之前,會先將原來標示成損壞區塊者統統清楚,即全部重新設置,而非僅是加入新的損壞區塊標示。
-n 把欲檢查的文件系統設成只讀,並關閉互動模式,否決所有詢問的問題。
-p 此參數的效果和指定"-a"參數相同。
-P 設置fsck.ext2指令所能處理的inode大小為多少。
-r 此參數將忽略不予處理,僅負責解決兼容性的問題。
-s 檢查文件系統時,交換每對位元組的內容。
-S 此參數的效果和指定"-s"參數類似,但不論該文件系統是否已是標准位順序,一律交換每對位元組的內容。
-t 顯示fsck.ext2指令的時序信息。
-v 詳細顯示指令執行過程。
-V 顯示版本信息。
-y 關閉互動模式,且同意所有詢問的問題。
--------------------------------------------------------------------------------
fsck(file system check)
功能說明:檢查文件系統並嘗試修復錯誤。
語 法:fsck [-aANPrRsTV][-t ][文件系統...]
補充說明:當文件系統發生錯誤四化,可用fsck指令嘗試加以修復。
參 數:
-a 自動修復文件系統,不詢問任何問題。
-A 依照/etc/fstab配置文件的內容,檢查文件內所列的全部文件系統。
-N 不執行指令,僅列出實際執行會進行的動作。
-P 當搭配"-A"參數使用時,則會同時檢查所有的文件系統。
-r 採用互動模式,在執行修復時詢問問題,讓用戶得以確認並決定處理方式。
-R 當搭配"-A"參數使用時,則會略過/目錄的文件系統不予檢查。
-s 依序執行檢查作業,而非同時執行。
-t 指定要檢查的文件系統類型。
-T 執行fsck指令時,不顯示標題信息。
-V 顯示指令執行過程。
原文出自【比特網】,轉載請保留原文鏈接:http://soft.chinabyte.com/os/170/11412170.shtml
⑵ Linux中怎樣備份、破壞、修復MBR扇區故障
實驗環境:
MBR引導記錄位於物理硬碟的第一個扇區(512個位元組),該扇區又稱為主引導扇區(MBR扇區),除了包含系統引導程序的部分數據外,還包含了整個硬碟的分區表記錄。當主引導扇區發生故障時,將可能無法進入引導菜單,或者因無法找到正確的分區位置而無法載入系統,通過該硬碟引導主機時很可能進入黑屏狀態。下面我們就模擬實際環境對MBR扇區進行備份、破壞、修復過程。
詳細步驟:
備份MBR扇區數據
1.由於MBR扇區中包含了整個硬碟的分區表記錄,因此要把MBR備份到其他存儲設備中,這里我們就添加另一塊硬碟hdb進行備份。
2.在命令提示符下輸入以下命令,進行備份操作。
[root@localhost
~]#mkdir
/backup
//創建掛載hdb1文件夾
[root@localhost
~]#mount
/dev/hdb1
/backup
//把hdb1掛載到backup文件夾下
[root@localhost
~]#dd
if=/dev/hdb1
of=/backup/hda.mar.bak
bs=512
count=1
//使用dd命令進行備份
模擬MBR扇區故障
這里仍然使用dd命令,認為地將MBR扇區記錄覆蓋。
[root@localhost
~]#dd
if=/dev/zero
of=/dev/hda
bs=512
count=1
//從空設備文件zero中讀取512位元組的數據,將其覆蓋到第一塊硬碟(hda),從而破壞MBR扇區中的數據。
從備份文件中恢復MBR扇區數據
1.把系統光碟放入光碟機,重啟linux系統。系統啟動時按F2鍵,在boot:提示符下輸入linuxrescue後回車,進入急救模式引導光碟中的linux系統。之後依次按回車鍵接收默認的語言、鍵盤格式,提示是否配置網卡是一般選擇NO,然後系統會自動查找硬碟中的linux分區並嘗試將其掛載到/mnt/sysimage目錄(選擇Continue確認並繼續)。接下來需要特別注意:當出現是否初始化磁碟的警告窗口時,一定要選擇NO,以免對硬碟數據造成進一步損壞。最後選擇OK確認後將進入到帶sh-3.1#提示符的Bash
Shell環境。
2.在提示符下輸入以下命令:
⑶ linux中檢測、修復磁碟的命令是啥
chkdsk。
chkdsk的全稱是checkdisk,就是磁碟檢查的意思。這個東西是當你的系統崩潰或者非法關機的時候由系統來調用檢查磁碟的,也可以由手工通過命令行調用來檢查某一個磁碟分區。
該工具基於被檢測的分區所用的文件系統,創建和顯示磁碟的狀態報告。Chkdsk 還會列出並糾正磁碟上的錯誤。如果不帶任何參數,chkdsk 將顯示當前驅動器中的磁碟狀態。
(3)linux磁碟修復擴展閱讀
chkdsk檢查適用情況:
1、windows7系統進入到歡迎界面,無法輸入用戶密碼,即鍵盤沒反應,但鍵盤操作bios、F8功能鍵等進入歡迎界面之前的操作都正常,可以進入安全模式;
2、系統啟動過程中藍屏,即藍底白字屏幕顯示,低端顯示stop:0x???????字樣,即藍屏代碼。
3、磁碟分區變成ram格式。
4、突然斷電,重啟電腦無法進入系統;
5、電腦運行速度非常慢,磁碟指示燈非常忙,殺毒軟體檢測不到病毒。
⑷ 【badblocks】Linux上使用badblocks命令檢測、修復硬碟壞道
使用badblocks命令檢測、修復硬碟壞道
https://blog.51cto.com/pynliu/1617921
badblocks檢測磁碟壞道
https://www.cnblogs.com/itfenqing/p/7536623.html
badblocks 檢查硬碟是否有壞道
https://blog.csdn.net/dapeng0112/article/details/37971923
⑸ linux操作系統故障處理-ext4文件系統超級塊「can't read superblock」損壞修復
前幾天在廣州參加植物病毒學會議,一邊聽會一邊開著TeamViewer遠程連接實驗室裝有linux系統的工作站跑程序幹活。有一天下午發現TeamViewer顯示伺服器離線,原來是因為施工導致停電。Anyway, 不重要,發微信讓小青兒給我重啟伺服器,結果發現重啟不了,大概就是這個界面。
怎麼著都進不去圖形界面,簡而言之,工作站重啟不了了。索性不管了,好好聽報告,心想回到福州再收拾工作站。回到福州第一件事就是坐下來重啟工作站,發現無論怎麼折騰都進不去系統。
雖然圖形界面進不去,好在還能夠在命令行下進行操作。當看到 /bioinfor ,這個存放目錄的路徑下啥都沒有的時候,這可是我所有的數據啊!如果這個盤里的數據沒了,各個合作者還不得把我手撕了。想到這里,冷汗差點下來了。
於是開始尋找解決方法。
首先得想辦法進入系統,在反復地 sudo reboot 都無法進入系統之後,通過 df -h 也看不到/dev/sda(也就是掛載到/bioinfor路徑的磁碟)信息。然後猜測是不是因為磁碟以及分區表之類出現了錯誤導致不能進入系統。通過 sudo vi /etc/fstab 將除了系統安裝盤之外的所有硬碟的掛載信息全部注釋掉,再 reboot , 這時候果然可以進入圖形界面系統了。但依然看不到 /bioinfor 盤下的數據。能夠開機就讓我放心了很多。通過 gparted 工具,能夠看到/dev/sda硬碟里used space大概是1.7T,還剩下1.9T左右,這就表示我的數據還在。試圖通過 sudo umount /dev/sda 先取消掛載,再重新 sudo mount /dev/sda /bioinfor 掛載到/bioinfor路徑,結果報錯。
報錯信息顯示:
搜索網頁發現,有一個哥們經歷了跟我一樣的遭遇, 意外斷電造成mount掛載硬碟報錯 。所以,這次事故是因為意外斷電,基本實錘了。
但到底什麼是superblock呢?
繼續搜索,直到讀到一篇技術文章 linux操作系統故障處理,ext4文件系統超級快損壞修復 。本文可以忽略,但這篇技術文章得認真讀讀。裡面講解了磁頭,磁軌,柱面,扇區,以及硬碟容量等等概念,以及最重要的inode和block,Superblock(超級塊)概念。
既然報錯提示Superblock出了問題,那我們就應該從這里入手。linux系統提供了一個磁碟命令 fsck 來嘗試對設備進行修復。但可惜,用這個命令的時候,都會提醒你,應該安裝最新的 fsck 工具包。
提示如下:
根據這篇文章 E2FSCK: how to handle the 「metadata_csum」 error by advancing the e2fsck version beyond default installed version 的提示,需要安裝1.43X的 e2fsck , 安裝方法小結如下。
檢驗一下是否更新成功:
能夠看到已經更新到1.43.5版本。
安裝完之後,開始對磁碟進行修復,命令如下:
一般都能修復完畢,然後可以再進行取消掛載或者重新掛載的操作。看到數據都還完好無缺地在電腦上,還處於後怕的我趕緊掏出移動硬碟進行原始數據的備份。
本次debug結束
這篇技術日誌對讀者可參考性並不高,是因為應用場合實在是少,(試想誰會天天斷電呢),但還是有一些體會和感悟:
⑹ 在windows中把linux的磁碟頂替了,還能恢復嗎
之前遇到類似問題,我重裝了win10系統後,發現linux系統進不去了,分區變成了空閑空間。
問題原因:linux引導文件被覆蓋
解決方案:
使用之前製作linux(ubuntu舉例)的引導盤,在bios中設置從引導盤啟動。
啟動後可以選擇修復ubuntu這個選項中,有一個選項可以進入grub模式。或者直接選擇ubuntu進入後,選擇試用ubuntu,使用ctrl+alt+F3進入。
在grub rescue命令行下利用ls命令查看盤符情況。(hd0) (hd0,GTP1) (hd0,GTP2) 這樣的,在這里可以清楚的看到有一個分區是你的ubuntu引導即efi掛載分區。
第三步若找不到可以通過 ls (hd0,GTP1)/grub 命令分別尋找,如果列印出一些文件信息,說明找到;如果沒有,會報找不到文件的錯誤,需要繼續試下一個盤符。
確定boot分區所在盤符後進行環境變數設置。在grub rescue命令行下輸入:
set boot=(hd0,msdos8)
set prefix=(hd0,msdos8)/grub
insmod normal
normal
輸入normal後,會進入ubuntu的引導
進入系統後需要進行grub設置
sudo update-grub
sudo grub-install /dev/sda
最後,先不要急著重啟進入windows,再輸下列指令進行更新
sudo update-grub
sudo apt-get update