将可用的未分区空间添加到 Ubuntu 主分区

将可用的未分区空间添加到 Ubuntu 主分区

继续使用VBoxManage modifiedhd --resize,实际大小没有变化

我已经调整了.vmdk 文件的大小,为虚拟机提供了更多空间。

使用 fdisk (命令 p) 我得到以下内容

Device     Boot   Start      End  Sectors  Size Id Type
/dev/sda1  *       2048   999423   997376  487M 83 Linux
/dev/sda2       1001470 83884031 82882562 39.5G  5 Extended
/dev/sda5       1001472 83884031 82882560 39.5G 8e Linux LVM

(两个分区以这种方式共享其扇区是否正常?)

同时,我添加的空间尚未分区,使用 fdisk(命令 F)可以看到:

Unpartitioned space /dev/sda: 69.8 GiB, 74911318016 bytes, 146311168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes

   Start       End   Sectors  Size
83884032 230195199 146311168 69.8G

如何将此空间添加到现有分区?我应该将其添加到 sda2 还是 sda5?

我应该补充一点,我无法访问,GParted因为我只有基于命令行的界面,没有 GUI。

答案1

分区不应重叠……但实际上这里有一个“扩展分区“。使用扩展分区,您可以创建一个“父母“分区,然后包含其他分区,允许您拥有超过 4 个分区支持的膜生物反应器


为了利用额外的空间,您需要小心地删除并重新创建分区......

我的示例使用了一个我已经分区并在其上放置文件系统的 100MB 文件。

$ fdisk disk.dd <<<"p"

Welcome to fdisk (util-linux 2.27.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): Disk disk.dd: 100 MiB, 104857600 bytes, 204800 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: 0xcff1f22d

Device     Boot Start    End Sectors Size Id Type
disk.dd1         2048  43007   40960  20M 83 Linux
disk.dd2        43008 204799  161792  79M  5 Extended
disk.dd5        45056 204799  159744  78M 83 Linux

然后我扩展该文件(这与您所做的效果非常相似):

$ truncate -s 200M disk.dd

现在,我们必须删除扩展分区包含的所有分区,然后删除扩展分区本身:

$ fdisk disk.dd

Welcome to fdisk (util-linux 2.27.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Command (m for help): d
Partition number (1,2,5, default 5): 5

Partition 5 has been deleted.

Command (m for help): d
Partition number (1,2, default 2): 2

Partition 2 has been deleted.

Command (m for help): p
Disk disk.dd: 200 MiB, 209715200 bytes, 409600 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: 0xcff1f22d

Device     Boot Start   End Sectors Size Id Type
disk.dd1         2048 43007   40960  20M 83 Linux

然后,我们必须重新创建分区,确保开始扇区与原件相符确切地(这使用了我的数字,而不是你的)。然后写下更改。

这里我使用默认值(只需按下回车键就可以让分区尽早开始,并使其尽可能大)...如果您想为其他分区保留一些空间,您可以给出值。

Command (m for help): n
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): e
Partition number (2-4, default 2):
First sector (43008-409599, default 43008): 43008
Last sector, +sectors or +size{K,M,G,T,P} (43008-409599, default 409599):

Created a new partition 2 of type 'Extended' and of size 179 MiB.

Command (m for help): n
All space for primary partitions is in use.
Adding logical partition 5
First sector (45056-409599, default 45056):
Last sector, +sectors or +size{K,M,G,T,P} (45056-409599, default 409599):

Created a new partition 5 of type 'Linux' and of size 178 MiB.

Command (m for help): p
Disk disk.dd: 200 MiB, 209715200 bytes, 409600 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: 0xcff1f22d

Device     Boot Start    End Sectors  Size Id Type
disk.dd1         2048  43007   40960   20M 83 Linux
disk.dd2        43008 409599  366592  179M  5 Extended
disk.dd5        45056 409599  364544  178M 83 Linux

Command (m for help): w
The partition table has been altered.
Synching disks.

不要忘记维护分区的类型。在示例中,默认 ( 83) 即可,但您需要使用t将类型重新设置为8e

现在,您可能需要运行partprobe,并输入您的设备(例如:/dev/sda)。这将使系统重新加载分区表。使用 来lsblk检查分区大小是否正确。

最后,调整文件系统的大小。这可以在文件系统在线(挂载)时完成。如果文件系统未挂载,则系统可能会提示您执行完整的“检查并修复“ 第一的:

$ e2fsck -f /dev/loop1
e2fsck 1.42.13 (17-May-2015)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/loop1: 12/20000 files (0.0% non-contiguous), 8180/79872 blocks
$ resize2fs /dev/loop1
resize2fs 1.42.13 (17-May-2015)
Resizing the filesystem on /dev/loop1 to 182272 (1k) blocks.
The filesystem on /dev/loop1 is now 182272 (1k) blocks long.

现在,一旦文件系统重新挂载,您应该会看到所需的额外空间:

$ mount /dev/loop1 ./mnt
$ df -h mnt
Filesystem      Size  Used Avail Use% Mounted on
/dev/loop1      169M  1.6M  155M   1% /home/attie/box/so/mnt
$ cat mnt/test
hello world

您(在评论中)指出,您无法将分区 5 的起始位置放置在应在的位置 -fdisk给出了一个不兼容的范围。

要解决这个问题,您需要按正常方式创建分区 5...但使用错误的默认起始值​​,该值比您想要的值大几个扇区。创建分区后,您可以进入专家模式 ( x) 并更手动地放置起始值。然后返回正常模式 ( r) 并重新打印表格...如果数字看起来不错,则将其写入 ( w)。

在下面的示例中,我创建了分区,并使用了fdisk提供的默认值(45056)...然后我使用专家模式来设置“正确的“值(43010),否则将超出范围。

Command (m for help): p
Disk disk.dd: 200 MiB, 209715200 bytes, 409600 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: 0xa11ae080

Device     Boot Start    End Sectors  Size Id Type
disk.dd1         2048  43007   40960   20M 83 Linux
disk.dd2        43008 409599  366592  179M  5 Extended
disk.dd5        45056 409599  364544  178M 83 Linux

Command (m for help): x

Expert command (m for help): b
Partition number (1,2,5, default 5): 5
New beginning of data (43009-409599, default 45056): 43010

Expert command (m for help): r

Command (m for help): p

Disk disk.dd: 200 MiB, 209715200 bytes, 409600 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: 0xa11ae080

Device     Boot Start    End Sectors  Size Id Type
disk.dd1         2048  43007   40960   20M 83 Linux
disk.dd2        43008 409599  366592  179M  5 Extended
disk.dd5        43010 409599  366590  179M 83 Linux

我对源代码进行了一些搜索fdisk,但不清楚为什么要添加这个~1MB的缓冲区...因为你的磁盘已经在没有它的情况下进行了设置,所以一切应该没问题。

相关内容