因為無法控制的意外,我安裝Linux系統的電腦遭遇了斷電,當我回到租屋處後重啟系統,就遇到無法掛載磁區的問題;因為在Linux下我不只一次遇到這狀況,而且我也不想往後都是重新格式化來處理這事情,所以趁這機會就尋找解決的方法
我自己這次的解法
1.從Dlophin點擊磁碟,不意外的無法掛載成功,並且上方會出現以下錯誤
Error mounting /dev/nvme0n1p1 at /media/jkoppailove/Samsuang SSD 970 EVO Plus 500G: wrong fs type, bad option, bad superblock on /dev/nvme0n1p1, missing codepage or helper program, or other error
大概是說磁碟區有問題,無論是設定或是壞軌等等
2.直接在Kubuntu下執行fsck /dev/nvme1n1p1,無效,出現以下錯誤
fsck from util-linux 2.40.2
fsck: fsck.ntfs not found; ignore /dev/nvme1n1p1
這是因為fsck沒有找到可以用於修復NTFS磁區的程式,所以無法修復;當然在這個階段我還不清楚原因為何,單純以為沒辦法找到NTFS磁區,所以才會有後面的動作
3.在Konsole(KDE預設的終端機)中輸入lspci,確認是否硬碟還在
確認硬碟還沒死透
4.輸入sudo blkid,確認是否能夠辨識檔案磁區
確認可以讀取到磁區
5.輸入CD /sbin,移動至sbin這個目錄
輸入ls fcks*,確認可以修復的指令
這邊可以看到,不包含NTFS格式,所以我就切換至Windows PE的環境進行修復
6.在Windows PE內輸入chkdsk /f /r C:
/f :修復硬碟上的錯誤
/r:定位壞軌並修復可讀取資訊
7.修復後,重新開機進入Linux,實測成功掛載,修復成功
後續更新
1.回到上個階段的第三項
fsck: fsck.ntfs not found; ignore /dev/nvme1n1p1
這個異常訊息是因為沒有找到可以用於修復NTFS的指令導致,但實際上Linux下是具備修復NTFS磁區的能力,但命令並非fsck,而是ntfsfix,靠ntfs-3g實現
2.修復指令可以改為使用ntfsfix /dev/nvme1n1p1來進行修復
3.另一個方式是將ntfsfix跟fsck連結在一起,往後執行fsck遇到NTFS分割方式時,就可以自動帶入ntfsfix的修復指令
fsck: fsck.ntfs not found; ignore /dev/nvme1n1p1
這個異常訊息是因為沒有找到可以用於修復NTFS的指令導致,但實際上Linux下是具備修復NTFS磁區的能力,但命令並非fsck,而是ntfsfix,靠ntfs-3g實現
2.修復指令可以改為使用ntfsfix /dev/nvme1n1p1來進行修復
3.另一個方式是將ntfsfix跟fsck連結在一起,往後執行fsck遇到NTFS分割方式時,就可以自動帶入ntfsfix的修復指令
sudo ln -nsf /bin/ntfsfix /sbin/fsck.ntfs
sudo ln -nsf /bin/ntfsfix /sbin/fsck.ntfs-3g
4.有鑑於我自己事後使用這個指令嘗試修復未果、且根據找到的一些結果,使用ntfsfix只能進行一些簡單的錯誤修復;故情況允許,仍然以Windows PE執行chkdsk為主要的修復手段為佳
sudo ln -nsf /bin/ntfsfix /sbin/fsck.ntfs-3g
4.有鑑於我自己事後使用這個指令嘗試修復未果、且根據找到的一些結果,使用ntfsfix只能進行一些簡單的錯誤修復;故情況允許,仍然以Windows PE執行chkdsk為主要的修復手段為佳
指令整理
Linux指令 |
說明 |
lspci |
ls為Linux常用的指令之一,要求輸出使用者所需的資訊;pci為通道 故這段指令是說列出電腦的pci通道上的所有裝置 |
blkid |
列出目前電腦上所有抓到的儲存裝置的的分割區狀態 |
fsck -y /dev/nvme1n1p1 |
fsck為Linux下修復磁區的指令,不加上任何引數的情況下,僅檢查而不修復 /dev/nvme1n1p1為需要修復的硬碟掛載點,一顆硬碟並非只會有一個磁區,每一個都會有自己的掛載點,所以必須看實際的狀況來修改 -y為偵測到錯誤時,自動應答執行修復 -a偵測到錯誤時,不提問直接進行修復 -r偵測錯誤時,會詢問是否進行修復 -N不執行修復 -C顯示進度條 |
sudo ln -nsf /bin/ntfsfix /sbin/fsck.ntfs sudo ln -nsf /bin/ntfsfix /sbin/fsck.ntfs-3g |
ln -nsf為建立連結的指令 -s為建立軟連結 -f為強制覆蓋舊檔 -n尚未找到解釋 |
Windows PE指令 |
說明 |
chkdsk /f /r /x |
chkdsk為Windows專屬的磁碟修復程式,必須在Windows、Windows PE環境下才可以執行 /f 檢查磁碟錯誤,必須鎖定硬碟 /r 檢查硬碟壞軌,並嘗試修復,必須鎖定硬碟,這個指令可以偵測物理壞軌;包含/r的功能 /x 若有必要則強制解鎖磁區;包含/f的功能 |
參考資料
https://linux.cn/article-4734-1.html
https://blog.gtwang.org/linux/linux-fsck-examples/
https://askubuntu.com/questions/174937/main-differences-between-fsck-and-chkdsk
https://forum.manjaro.org/t/how-to-check-disk-chkdsk-ntfs3-under-linux/93599/5
https://askubuntu.com/questions/86086/fsck-cant-find-fsck-ntfs
https://superuser.com/questions/233700/fsck-an-ntfs-drive-in-linux
https://man.archlinux.org/man/fsck.8.zh_TW
https://bbs.archlinux.org/viewtopic.php?id=95856
https://wiki.archlinuxcn.org/zh-tw/NTFS-3G
https://tw.easeus.com/partition-manager-tips/run-chkdsk-to-check-repair-drive.html
https://blog.gtwang.org/linux/linux-fsck-examples/
https://askubuntu.com/questions/174937/main-differences-between-fsck-and-chkdsk
https://forum.manjaro.org/t/how-to-check-disk-chkdsk-ntfs3-under-linux/93599/5
https://askubuntu.com/questions/86086/fsck-cant-find-fsck-ntfs
https://superuser.com/questions/233700/fsck-an-ntfs-drive-in-linux
https://man.archlinux.org/man/fsck.8.zh_TW
https://bbs.archlinux.org/viewtopic.php?id=95856
https://wiki.archlinuxcn.org/zh-tw/NTFS-3G
https://tw.easeus.com/partition-manager-tips/run-chkdsk-to-check-repair-drive.html