给定这样的磁盘布局

                                            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的开始,因此不需要实际移动任何数据。这个问题就是如何更改分区表,使sdc3位于sdc2中

副本 this

tl;dr如何在不实际编辑分区中的数据的情况下更改分区表?

最佳回复

您只需使用parted编辑分区表,直到它看起来像您想要的那样——这意味着您还需要扩展扩展分区。与Windows分区工具不同,常规的Linux工具不会擦除分区的前几KB(销毁数据)。对分区名的更改将意味着不同的设备名,因此您需要在mount表中对此进行说明。如果是根分区或引导分区,则需要在initramfs中对其进行解释,并可能重新生成grub—当需要引导到grub时,所有这些都可能很棘手,但这并不是不可能的。

一定要备份,以防万一。

编辑:这样说,考虑一下你是否真的需要这么做,因为它可以减少在未来调整大小或移动的灵活性。目前,SDC3很容易在它之后扩展到空闲空间,但是如果扩展分区在它之后就结束了,那么你必须再次进入原始分区编辑来这样做。