我有以下一个硬盘
Disk /dev/sda: 320.1 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders, total 625142448 sectors
Disk identifier: 0xfa6bd800
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 821247 409600 7 HPFS/NTFS/exFAT
/dev/sda2 821248 210991103 105084928 7 HPFS/NTFS/exFAT
/dev/sda3 210991104 317941759 53475328 83 Linux
/dev/sda4 420343806 625141759 102398977 5 Extended
/dev/sda5 435689472 507955096 36132812+ 83 Linux
/dev/sda6 507955200 566546431 29295616 83 Linux
/dev/sda7 566548480 625141759 29296640 83 Linux
/dev/sda8 420345856 435687423 7670784 82 Linux swap / Solaris
我最近从 Windows 恢复了一个分区。我想将“扩展分区”/dev/sda4 向左扩展以使用未分配的空间。您可以看到 /dev/sda4 可以从 420343806 扩展到 317941760(/dev/sda3 的末尾)。我尝试从 gparted 执行此操作,但失败了。
GParted 0.12.1 --enable-libparted-dmraid
Libparted 2.3
Move /dev/sda4 to the left and grow it from 97.66 GiB to 126.95 GiB 00:00:00 ( ERROR )
calibrate /dev/sda4 00:00:00 ( SUCCESS )
path: /dev/sda4
start: 420,343,806
end: 625,141,759
size: 204,797,954 (97.66 GiB)
move partition to the left and grow it from 97.66 GiB to 126.95 GiB 00:00:00 ( ERROR )
old start: 420,343,806
old end: 625,141,759
old size: 204,797,954 (97.66 GiB)
requested start: 358,901,760
requested end: 625,139,711
requested size: 266,237,952 (126.95 GiB)
libparted messages ( INFO )
Unable to satisfy all constraints on the partition.
Can't have overlapping partitions.
所以我尝试使用 fdisk 进行分区扩展。
我认为这些是以下步骤。 1. 删除 /dev/sda4 2. 创建新的扩展分区,从 317941760 到 625141759。 3. 在 /dev/sda4 上 resize2fs
但如果我这样做,我会丢失逻辑分区或数据吗?或者我应该走另一条路。
答案1
我不知道gparted是否可以做到这一点。当您删除/重新创建扩展分区时,大多数分区程序都会删除 sda5-x。
你可以试试sfdisk。
# sfdisk -d /dev/sda > sda.original
这将创建分区布局的转储,如下所示:
# /dev/sda的分区表 单位:部门 /dev/sda1 :开始= 2048,大小= 4194304,Id= c /dev/sda2 :开始= 4198400,大小= 2097152,Id=83,可启动 /dev/sda3 :开始= 6297600,大小= 20971520,ID=83 /dev/sda4 :开始= 27271168,大小= 3844096,Id= f /dev/sda5:开始= 27273216,大小= 1918976,ID=83 /dev/sda6 :开始= 29194240,大小= 1918976,ID=83
创建该转储的副本并根据您的喜好进行修改。
# cp sda.original sda.modified # 纳米 sda. 修改
因此,在您的情况下,您想要将 /dev/sda4 从 420343806 扩展到 317941760,只需替换 sda.modified 文件中 /dev/sda4 条目的 start= 编号即可。
完成修改后,您可以加载它:
# sfdisk /dev/sda < sda.modified
如果出现任何问题,您可以调整编辑,或恢复到原始状态:
# sfdisk /dev/sda < sda.original
这就是使用 sfdisk 的方式。
在分离的情况下,如果调整大小不起作用,您必须非常仔细地记下分区偏移量和大小,例如使用:
#parted /dev/sda 单元 b print free > sda.parted
这将创建一个像这样的文件:
型号:通用存储设备 (scsi) 磁盘/dev/sda:15931539456B 扇区大小(逻辑/物理):512B/512B 分区表:msdos 磁盘标志: 编号 开始 结束 大小 类型 文件系统 标志 32256B 1048575B 1016320B 可用空间 1 1048576B 2148532223B 2147483648B 初级脂肪32 lba 2148532224B 2149580799B 1048576B 可用空间 2 2149580800B 3223322623B 1073741824B 主 ext2 引导 3223322624B 3224371199B 1048576B 可用空间 3 3224371200B 13961789439B 10737418240B 主 ext2 13961789440B 13962838015B 1048576B 可用空间 4 13962838016B 15931015167B 1968177152B 扩展 lba 5 13963886592B 14946402303B 982515712B 逻辑 ext2 6 14947450880B 15929966591B 982515712B 逻辑 ext2 15929966592B 15931015167B 1048576B 可用空间 15931015168B 15931539455B 524288B 可用空间
您可以选择不同的单位,例如扇区;在这种情况下,我喜欢字节,因为它留下零解释空间 - 根据媒体的不同,分区软件有时对扇区大小等有不同的看法。
有了您已知的确切分区偏移量、大小和类型,在parted中您可以简单地执行mklabel(重置分区表)并从头开始重新创建一个新分区,重新创建您想要保留的分区,更改您想要更改的分区。
请注意,这些选项都不会执行任何操作来修改分区上的文件系统或调整其大小。因此,只有当您可以自己处理这个问题,或者想要在可用空间中创建一个新的空分区时,此解决方案才有效。