继续使用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的缓冲区...因为你的磁盘已经在没有它的情况下进行了设置,所以一切应该没问题。