Clonezilla:不能有重疊的分區
我正在嘗試使用 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
:
- 使用實時 Ubuntu 磁碟啟動;
- 確認磁碟設備上的問題
/dev/sda
,parted
例如sudo parted /dev/sda unit s print which should show: Error: Can't have overlapping partitions.
- 可以通過以下方式檢查分區詳細資訊:
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
- 檢查重疊:您可以看到您的擴展分區
/dev/nvme0n1p2
小於交換分區/dev/nvme0n1p5
。為了讓事情更清楚,您的交換分區位於該擴展分區內,因此理想情況下它的大小應該小於擴展分區大小。但在您的情況下,交換大小大於邏輯分區大小本身。
Device Size /dev/nvme0n1p2 970,7M /dev/nvme0n1p5 976M
或者換句話說,nvme0n1p2 的結束扇區應該大於 nvme0n1p5 的結束扇區。但在你的情況下
nvme0n1p2結束= 2000397734
nvme0n1p5結束=2000408575
因此問題。
現在您可以通過簡單地使用 gparted 減小交換分區大小來解決它。(~ 600MB - 700MB)
或者您可以使用命令行工具:
sfdisk
使用 sfdisk
- 正如文件中所建議的那樣 - “如果我們不知道起始扇區還是結束扇區是問題所在,我們假設每個分區的起始扇區是正確的,而結束扇區可能是錯誤的”,我們假設擴展分區的起始扇區
nvme0n1p2
正確。因此,我們將尋求更改交換分區的結束扇區nvme0n1p5
。計算:
nvme0n1p5 newEnd = nvme0n1p2結束- 1 = 2000397734 - 1 = 2000397733
nvme0n1p5 newSize = nvme0n1p5 newEnd - nvme0n1p5開始= 2000397733 - 1998409728 = 1988005
sfdisk
使用以下命令將分區表的副本轉儲到文件中:
sudo sfdisk -d /dev/sda
應該轉儲分區表的詳細資訊。這可以轉儲到文件中,在進行必要的更正後,可以將其回饋到sfdisk
. [**致 OP:**請編輯您的問題並包括輸出sudo sfdisk -d /dev/sda
]轉儲分區表的副本:
sudo sfdisk -d /dev/sda > sda-backup.txt
- 使用您選擇的文本編輯器以 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
+O
fornano
) 並關閉編輯器 (Ctrl
+X
fornano
)。
sfdisk
使用以下命令將更正的分區詳細資訊回饋到分區表:sudo sfdisk /dev/sda < sda-backup.txt
parted
通過在磁碟設備上執行來確認問題是否已解決:sudo parted /dev/sda unit s print
- 如果步驟 9 確認分區表已修復,則您可以在設備上使用GParted或其他分區編輯器。
GParted 文件還提出了另一種方法,使用 testdisk掃描磁碟設備以重建分區表。testdisk 應用程序包含在GParted Live中。因此,如果您對命令行方式不滿意,可以嘗試替代方法。
使用 Gparted
unmount your swap partition before continuing
- 目前狀態
- 調整根分區的大小
- 調整大小前的根分區
- 調整大小後的根分區
- 根分區後創建空白空間
- 刪除交換
- 刪除邏輯分區
- 刪除除根以外的所有分區
- 創建新的邏輯分區
- 在分區之前留下一些可用空間(因此它不會重疊)並選擇分區類型為
Extended partition
- 這就是它現在的樣子
- 創建交換分區
- 在分區後留下一些可用空間,使其不會超過並選擇 filesysytem 作為
linux swap
- 這就是它現在的樣子
- 複製新交換的 UUID 並將其替換為
/etc/fstab