Mount

分區安裝/調整大小未能讀取最後一個扇區?

  • July 6, 2020

調整大小操作失敗後,掛載操作失敗並顯示:

Failed to read last sector (718198764): Invalid argument

Gparted 和其他 GUI 工具無法訪問該分區。我們如何解決這樣的問題?

分析

ntfsfix -n /dev/sda5n參數將使工具在不應用的情況下輸出修復解決方案(請謹慎使用此類工具,例如自動修復工具可能會選擇錯誤的決定來修復分區)

ntfsresize -if /dev/sda5這將告訴我們到底發生了什麼……

備份

建議在做任何事情之前首先做一個完整的映像備份……否則只需備份分區表

sfdisk -d /dev/sda > sda.partition.table.txt

解釋

在這種特殊情況下Failed to read last sector (345345...),這意味著分區大於分區表上指示的大小,這可能發生在調整分區大小(縮小)而不縮小文件系統(此處為 ntfs)時…解決方案是恢復調整大小(在分區表上)…請注意,ntfsfix可能會猜出好的舊值並將其恢復,該工具也可能會猜出錯誤的值並使您失去部分/所有數據…如果分區可以在修復並不意味著您沒有失去任何數據,尤其是在chkdsk糾正大量錯誤時…

解決方案

  • 備份目前分區表sfdisk -d /dev/sda > sda.partition.table.txt
  • Failed to read last sector (345345...)表明真正的分區結束扇區是[start.sector]+[345345...]這樣的,我們需要通過將分區的起始扇區和錯誤上顯示的最後一個扇區相加來計算真正的結束扇區位置
  • 編輯 sda.partition.table.txt 並用新計算的扇區替換結束扇區…(對於 sda5)
  • 恢復分區表sfdisk /dev/sda < sda.partition.table.txt

引用自:https://unix.stackexchange.com/questions/596917