调整大小的 VirtualBox VM 磁盘,但分区时无法使用所有新的可用空间

Ale*_*sio 6 filesystem partitioning virtualbox disk 14.04

昨天我将 VM 虚拟磁盘的大小从大约 15 GB 调整到大约 26 GB。

如果我运行 fdisk,我可以检查磁盘是否已调整大小:

Disk /dev/sda: 26.2 GB, 26214400000 bytes
255 testine, 63 settori/tracce, 3187 cilindri, totale 51200000 settori
Unità = settori di 1 * 512 = 512 byte
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Identificativo disco: 0x0005c952
Run Code Online (Sandbox Code Playgroud)

它不再是 15 GB,而是 26,6 GB。

所以我跑了

fdisk /dev/sda
Run Code Online (Sandbox Code Playgroud)

对其进行分区。

Comando (m per richiamare la guida): n
Partition type:
p   primary (1 primary, 1 extended, 2 free)
l   logical (numbered from 5)
    Select (default p): p
    Numero della partizione (1-4, predefinito 3): 3
    Primo settore (499712-51199999, predefinito 499712): 
    Utilizzo del valore predefinito 499712
    Last settore, +settori or +size{K,M,G} (499712-501757, predefinito 501757): 
    w
Run Code Online (Sandbox Code Playgroud)

我已经可以看到扇区间隔太短了。

我离开 ID 为 83 的分区(Linux 分区),然后运行:

partprobe -s
/dev/sda: msdos partitions 1 3 2 <5>
/dev/mapper/ubuntu--vg-swap_1: loop partitions 1
/dev/mapper/ubuntu--vg-root: loop partitions 1
Run Code Online (Sandbox Code Playgroud)

但可以肯定的是我跑了

partprobe
Run Code Online (Sandbox Code Playgroud)

也。

好的,我的分区是/dev/sda3。

然后我跑了:

mkfs.ext4 /dev/sda3
Run Code Online (Sandbox Code Playgroud)

输出:

mke2fs 1.42.9 (4-Feb-2014)

Filesystem troppo piccolo per un journal
Etichetta del filesystem=
OS type: Linux
Dimensione blocco=1024 (log=0)
Dimensione frammento=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
128 inodes, 1020 blocks
51 blocks (5.00%) reserved for the super user
Primo blocco dati=1
Maximum filesystem blocks=1048576
1 block group
8192 blocchi per gruppo, 8192 frammenti per gruppo
128 inode per gruppo

Allocating group tables: fatto                           
Scrittura delle tavole degli inode: fatto                           
Scrittura delle informazioni dei superblocchi e dell'accounting del      filesystem: fatto
Run Code Online (Sandbox Code Playgroud)

然后我安装它:

mount -t ext4 /dev/sda3 /priiiii
Run Code Online (Sandbox Code Playgroud)

我看到我的分区很小!!

df -h

File system                  Dim. Usati Dispon. Uso% Montato su
/dev/mapper/ubuntu--vg-root   15G  3,5G     11G  26% /
none                         4,0K     0    4,0K   0% /sys/fs/cgroup
udev                         492M  4,0K    492M   1% /dev
tmpfs                        101M  904K    100M   1% /run
none                         5,0M     0    5,0M   0% /run/lock
none                         501M   80K    501M   1% /run/shm
none                         100M   32K    100M   1% /run/user
/dev/sda1                    236M   36M    189M  16% /boot
**/dev/sda3                    999K   17K    911K   2% /priiiii**
Run Code Online (Sandbox Code Playgroud)

为什么分区不能使用调整大小的磁盘的所有未分配空间?

fdisk 输出:

Dispositivo Boot      Start         End      Blocks    Id      System
/dev/sda1   *        2048      499711      248832   83     Linux
/dev/sda2          501758    33552383    16525313    5  Esteso
/dev/sda3          499712      501757        1023   83      Linux
/dev/sda5          501760    33552383    16525312   8e  Linux LVM
Run Code Online (Sandbox Code Playgroud)

谢谢

sib*_*baz 0

如果您在虚拟机中完成所有这些工作,那么您就不必要地为自己做工作。让我分三部分来回答这个问题。
首先,按照您所采取的方法,您的分区表出现了一些非常奇怪的情况。根据我的经验,当您“增长”物理磁盘(通常通过从一个小的实际磁盘到较大的磁盘进行块复制)时,分区表需要重新创建,因为即使使用相同的磁盘参数,您也会遇到对齐问题。也就是说,我不明白为什么 fdisk 无法重新创建新的分区表,如果磁盘实际上已经增长(就像在真实磁盘中发生的那样)。
其次,LVM 的创建是为了在物理驱动器和分区及其上包含的卷之间进行抽象。因此,在使用虚拟机时,没有物理空间的问题(通常在升级真实磁盘时,您确实会删除旧磁盘),您可以创建一个新的11Gb虚拟磁盘,并将其加入到您的卷中,而无需经历弄乱旧 vmfs 文件的痛苦。

如果你专注于你正在采取的方法,那么显然有些地方出了问题。正如 @daniel 建议的那样,尝试重新启动,但就我个人而言,我会考虑创建一个新映像,其中包含一组新的分区和卷,并复制所有内容。您花在复制上的时间将省去试图弄清楚如何使分区表混乱的问题。