Linux

如何將物理分區移動到擴展分區?

  • December 7, 2019

給定這樣的磁碟佈局

                                           Disk: /dev/sdc
                                      Size: 119.9 GiB, 127865454592 bytes, 249737216 sectors
                                                Label: dos, identifier: 0x000efb19

   Device               Boot                   Start              End          Sectors         Size        Id Type
>>  Free space                                   2048             8191             6144           3M                                 
   /dev/sdc1                                    8192          4615234          4607043         2.2G         e W95 FAT16 (LBA)
   /dev/sdc2                                 4615235         29985858         25370624        12.1G         5 Extended
   ├─Free space                              4618240          4620288             2049           1M
   ├─/dev/sdc5                               4620288          4685821            65534          32M        83 Linux
   ├─/dev/sdc6                               4685824          5210109           524286         256M         c W95 FAT32 (LBA)
   └─/dev/sdc7                               5210112         29983811         24773700        11.8G        83 Linux
   /dev/sdc3            *                   29986816         92901375         62914560          30G        83 Linux
   Free space                               92901376        249737215        156835840        74.8G

如果我想將 sdc3 移動到 sdc2(從而使其成為 sdc8),我該怎麼做?

注意:sdc7 的結尾是 sdc3 的開頭,因此實際上不需要 MOVE 任何數據。這個問題只是如何更改分區表,使 sdc3 在 sdc2

tl; dr如何在不實際編輯分區中的數據的情況下更改分區表?

首先,你應該記下或拍攝所有開始和結束扇區的照片,如果出現任何問題,你可以恢復它。為了安全起見,使用文件系統備份每個分區的開頭:

dd if=/dev/sdc3 of=sdc3.bak bs=1M count=1

然後使用fdisk來:

  1. 刪除分區 2 和 3。這也將刪除所有邏輯分區。
  2. 創建一個從扇區4615235到至少扇區92901375的邏輯分區。
  3. 重新創建所有其他分區,注意保持起始扇區不變,並在 EBR 分區之間保留幾個扇區。最新版本的fdisk會警告您它檢測到文件系統簽名。顯然這是一件好事,應該清除塊。

fdisk通常會嘗試保持 1MiB 的分區對齊,因此可能需要進入專家模式 ( x ) 並使用b來調整起始扇區。

如果這不是您的主磁碟,我會努力將分區類型更改為 GPT 並擺脫所有 DOS 的怪異行為。

備註:所有文件系統都可以駐留在大於 FS 的分區上。它們中的大多數可以安全地調整大小以匹配新的分區大小。

引用自:https://serverfault.com/questions/994063