Partition

Clonezilla:不能有重疊的分區

  • November 30, 2021

我正在嘗試使用 Clonezilla 對我的 Ubuntu 磁碟進行映像,但它失敗了,因為我收到一條錯誤消息:

錯誤不能有重疊的分區

以下是我的磁碟的設置方式和lsblk輸出:

NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop1         7:1    0  42,2M  1 loop /snap/snapd/14066
nvme0n1     259:0    0 953,9G  0 disk 
├─nvme0n1p5 259:3    0   976M  0 part [SWAP]
└─nvme0n1p1 259:1    0 952,9G  0 part /

這是輸出fdisk -l /dev/nvme0n1

Disk /dev/nvme0n1: 953,9 GiB, 1024209543168 bytes, 2000409264 sectors
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: dos
Disk identifier: 0x6e617337

Device         Boot      Start        End    Sectors   Size Id Type
/dev/nvme0n1p1 *          2048 1998407679 1998405632 952,9G 83 Linux
/dev/nvme0n1p2      1998409726 2000397734    1988009 970,7M  5 Extended
/dev/nvme0n1p5      1998409728 2000408575    1998848   976M 82 Linux swap / Sola

以下是它在 gparted 中的顯示方式:

在此處輸入圖像描述

任何建議如何解決此錯誤以便我可以映像/保存我的磁碟?

答案改編自:how-to-fix-overlapped-partitions-in-the-mbr-table。你可以試試這個,但我認為刪除交換和邏輯分區更簡單


使用以下方法修復分區表sfdisk

  1. 使用實時 Ubuntu 磁碟啟動;
  2. 確認磁碟設備上的問題/dev/sdaparted例如
 sudo parted /dev/sda unit s print which should show:

 Error: Can't have overlapping partitions.
  1. 可以通過以下方式檢查分區詳細資訊:
 sudo fdisk -l -u /dev/sda 

對你來說,根據你的文章是:

Disk /dev/nvme0n1: 953,9 GiB, 1024209543168 bytes, 2000409264 sectors
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: dos
Disk identifier: 0x6e617337

Device         Boot      Start        End    Sectors   Size Id Type
/dev/nvme0n1p1 *          2048 1998407679 1998405632 952,9G 83 Linux
/dev/nvme0n1p2      1998409726 2000397734    1988009 970,7M  5 Extended
/dev/nvme0n1p5      1998409728 2000408575    1998848   976M 82 Linux swap / Solaris
  1. 檢查重疊:您可以看到您的擴展分區/dev/nvme0n1p2小於交換分區 /dev/nvme0n1p5

為了讓事情更清楚,您的交換分區位於該擴展分區內,因此理想情況下它的大小應該小於擴展分區大小。但在您的情況下,交換大小大於邏輯分區大小本身。

Device            Size  

/dev/nvme0n1p2    970,7M  
/dev/nvme0n1p5    976M    

或者換句話說,nvme0n1p2 的結束扇區應該大於 nvme0n1p5 的結束扇區。但在你的情況下

nvme0n1p2結束= 2000397734

nvme0n1p5結束=2000408575

因此問題。

現在您可以通過簡單地使用 gparted 減小交換分區大小來解決它。(~ 600MB - 700MB)

或者您可以使用命令行工具:

sfdisk

使用 sfdisk

  1. 正如文件中所建議的那樣 - “如果我們不知道起始扇區還是結束扇區是問題所在,我們假設每個分區的起始扇區是正確的,而結束扇區可能是錯誤的”,我們假設擴展分區的起始扇區nvme0n1p2正確。因此,我們將尋求更改交換分區的結束扇區nvme0n1p5

計算:

nvme0n1p5 newEnd = nvme0n1p2結束- 1 = 2000397734 - 1 = 2000397733

nvme0n1p5 newSize = nvme0n1p5 newEnd - nvme0n1p5開始= 2000397733 - 1998409728 = 1988005

  1. sfdisk使用以下命令將分區表的副本轉儲到文件中:

sudo sfdisk -d /dev/sda應該轉儲分區表的詳細資訊。這可以轉儲到文件中,在進行必要的更正後,可以將其回饋到sfdisk. [**致 OP:**請編輯您的問題並包括輸出sudo sfdisk -d /dev/sda]

轉儲分區表的副本:

    sudo sfdisk -d /dev/sda > sda-backup.txt 
  1. 使用您選擇的文本編輯器以 root 權限打開在上一步中創建的文件。在範例中,我將使用nano.
 sudo nano sda-backup.txt (`sda-backup.txt` assuming the file is in the current directory, else repalce it with the file's absolute

小路。)

nvme0n1p5將( )的舊大小更改為1998848更正後的大小 ( 1988005),以便您的新分區表轉儲看起來像:

操作未附加輸出

保存文件 ( Ctrl+ Ofor nano) 並關閉編輯器 ( Ctrl+ Xfor nano)。

  1. sfdisk使用以下命令將更正的分區詳細資訊回饋到分區表:
 sudo sfdisk /dev/sda < sda-backup.txt
  1. parted通過在磁碟設備上執行來確認問題是否已解決:
 sudo parted /dev/sda unit s print
  1. 如果步驟 9 確認分區表已修復,則您可以在設備上使用GParted或其他分區編輯器。

GParted 文件還提出了另一種方法,使用 testdisk掃描磁碟設備以重建分區表。testdisk 應用程序包含在GParted Live中。因此,如果您對命令行方式不滿意,可以嘗試替代方法。

資源


使用 Gparted

unmount your swap partition before continuing
  1. 目前狀態

在此處輸入圖像描述

  1. 調整根分區的大小

在此處輸入圖像描述

  1. 調整大小前的根分區

在此處輸入圖像描述

  1. 調整大小後的根分區

在此處輸入圖像描述

  1. 根分區後創建空白空間

在此處輸入圖像描述

  1. 刪除交換

在此處輸入圖像描述

  1. 刪除邏輯分區

在此處輸入圖像描述

  1. 刪除除根以外的所有分區

在此處輸入圖像描述

  1. 創建新的邏輯分區

在此處輸入圖像描述

  1. 在分區之前留下一些可用空間(因此它不會重疊)並選擇分區類型為Extended partition

在此處輸入圖像描述

  1. 這就是它現在的樣子

在此處輸入圖像描述

  1. 創建交換分區

在此處輸入圖像描述

  1. 在分區後留下一些可用空間,使其不會超過並選擇 filesysytem 作為linux swap

在此處輸入圖像描述

  1. 這就是它現在的樣子

在此處輸入圖像描述

  1. 複製新交換的 UUID 並將其替換為/etc/fstab

在此處輸入圖像描述


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