前段时间,我创建了一个 VMDK,它被映射到 SSD 上的原始分区。
SSD 是 128GB 的,我在 Windows(主机)中对其进行了分区,使第二个分区可供 Windows(NTFS)访问,并使用第一个分区将其映射到 VMDK。
第一个分区的大小约为 48GB。
/dev/sda
当我在使用该 VMDK 的 VM 中安装 Ubuntu Server 时,我注意到显示的大小为 128GB,但我在 Ubuntu 安装期间创建的分区与第一个分区的大小相同,因此/dev/sda1
为 48GB。
由于空间不足/dev/sda1
(有 5GB 可用),我购买了另一个 SSD,并决定停止使用原始映射。我通过虚拟媒体管理器将 VMDK 复制到新的 SSD 上,所以我现在有一个大约 44GB 的 VMDK 文件(不要太精确,这是 MiB vs GiB vs GB 的问题)。
然后我用新复制的 VMDK 替换了虚拟机的硬盘并启动了它。它按预期运行。
现在我有这个:
:~$ cat /proc/partitions
major minor #blocks name
11 0 58100 sr0
8 0 125034840 sda
8 1 46873600 sda1
8 16 488386584 sdb
8 17 181189085 sdb1
这
~$ sudo fdisk -l
Disk /dev/sda: 119.2 GiB, 128035676160 bytes, 250069680 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: 0x000271d1
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 93749247 93747200 44.7G 83 Linux
Disk /dev/sdb: 465.8 GiB, 500107862016 bytes, 976773168 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: gpt
Disk identifier: 59B4B505-C79F-11E3-8F9C-709E29CA19D2
Device Start End Sectors Size Type
/dev/sdb1 34 362378204 362378171 172.8G Linux filesystem
和这个
:/$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 7.9G 0 7.9G 0% /dev
tmpfs 1.6G 9.1M 1.6G 1% /run
/dev/sda1 44G 37G 5.1G 88% /
tmpfs 7.9G 1.1M 7.9G 1% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 7.9G 0 7.9G 0% /sys/fs/cgroup
windows-avconv 1.9T 1.8T 103G 95% /home/user/windows-avconv
windows-storage 1.9T 1.8T 103G 95% /home/user/windows-storage
windows-share 50G 101M 50G 1% /home/user/windows
cgmfs 100K 0 100K 0% /run/cgmanager/fs
/dev/sdb1 170G 91G 72G 56% /media/hdd
tmpfs 1.6G 0 1.6G 0% /run/user/1000
所有这些似乎表明我可以发出一个
sudo resize2fs /dev/sda1
然后/dev/sda1
会增长到 119.2 GiB,而我不需要使用VBoxManage modifyhd <absolute path to file> --resize <size in MB>
我的这个假设正确吗?
更新:我制作了 VMDK 的备份,并发布了
:~$ sudo resize2fs /dev/sda1
结果如下:
resize2fs 1.42.13 (17-May-2015)
The filesystem is already 11718400 (4k) blocks long. Nothing to do!
我是否需要发出
sudo growpart /dev/sda 1
之前resize2fs
可以工作吗?
答案1
您必须首先按照以下步骤调整分区大小:
sudo parted /dev/sda
以超级用户身份输入提示符“(parted)”resizepart 1
调整分区大小1
-0
将其调整到磁盘末尾。-
表示应从磁盘末尾计算,而不是从开头计算。这使 -0 成为磁盘的最后一个扇区 - 当您想使其尽可能大时,这很合适。步骤 4:quit
退出
文件系统元信息需要指示磁盘的大小,resize2fs 会更新此信息。因此,扩容后,运行resize2fs /dev/sda1
。
强烈建议在单用户模式/恢复模式下执行此操作,或者在文件系统以只读模式挂载的情况下执行此操作。您可以通过 以只读方式挂载它mount -o remount,ro /dev/sda1
。
扩展是可以对处于 RW 模式的文件系统执行此操作,但这会增加数据丢失的可能性。由于这是虚拟机,并且您可以轻松进行备份,因此使用挂载 RW 的卷执行此操作可能有意义。
附录:以 root 身份运行命令以获得预期效果。