[转]调整 VirtualBox 虚拟机的磁盘大小
本文转自:https://cnzhx.net/blog/resizing-lvm-centos-virtualbox-guest/
使用 VM VirtualBox 创建了一个 CentOS 虚拟机,划分了 3GB 的磁盘空间,使用了动态分配存储的方式,文件系统为 LVM。折腾了一段时间之后,却发现磁盘容量不够了。读了一些资料之后,终于给 VirtualBox 的虚拟机增加了磁盘容量,并让 CentOS 的 LVM 将其利用上。
下面特地新建了一个磁盘大小为 3GB 的虚拟机,然后将其调整为 5GB,并记录了操作步骤。
先看看虚拟机中虚拟磁盘的的分区表:
# fdisk -l /dev/sda Disk /dev/sda: 3221 MB, 3221225472 bytes
255 heads, 63 sectors/track, 391 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00052338 Device Boot Start End Blocks Id System
/dev/sda1 * 1 64 512000 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 64 392 2632704 8e Linux LVM
Partition 2 does not end on cylinder boundary.
可以看到,磁盘总大小为 3221MB。
1. VirtualBox 的磁盘管理¶
下面使用 VirtualBox 的命令行将该虚拟机的磁盘分配从 3GB 调整为 5GB。
VirtualBox 的说明文档中明确给出了调整虚拟机磁盘大小的方法。
VBoxManage modifyhd <uuid>|<filename>
[--type normal|writethrough|immutable|shareable|
readonly|multiattach]
[--autoreset on|off]
[--compact]
[--resize <megabytes>|--resizebyte <bytes>]
modifyhd 指令就是用来调整磁盘大小的。对象可以是虚拟机的 uuid,也可以直接指定要调整大小的虚拟机磁盘文件名(全路径)。需要注意的是,如果安装 VirtualBox 的时候没有将其路径添加到系统路径之中,运行命令行的时候需要指定路径,如,
C:\>D:\Apps\Oracle\VirtualBox\VBoxManage.exe modifyhd "D:\CentOS2.vdi" --resize 5120
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
上述指令将 D 盘根目录下的 CentOS2.vdi 这个虚拟机磁盘调整为(参数 –resize)5120,单位是 MB。
Linux 下的指令为,
$ VBoxManage modifyhd "/path/to/CentOS2.vdi" --resize 5120
如果想查看对应的 uuid,可以使用指令:
C:\>D:\Apps\Oracle\VirtualBox\VBoxManage.exe list hdds
UUID: 7a0b7b7a-298d-4fcf-b9d0-09ae2737441d
Parent UUID: base
Format: VDI
Location: D:\CentOS2.vdi
State: created
Type: normal
Usage: CentOSi (UUID: 34a666fa-24c9-4510-9cca-50e2a04c8e98)
调整虚拟磁盘大小的时候,虚拟机必须关闭!
以上指令在 64bit Windows 7 + VirtualBox 4.2.16 下测试过。另于20161219在 openSUSE Tumbleweed + VirtualBox 5.1.10 下测试过。不过要注意的是,如果该虚拟机有快照(snapshot),则只有在删除快照后才能在虚拟机客户系统里看到更改后的磁盘容量。
2. CentOS 的 LVM 管理¶
重新启动该虚拟机。再来看看磁盘情况:
# fdisk -l /dev/sda Disk /dev/sda: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00052338 Device Boot Start End Blocks Id System
/dev/sda1 * 1 64 512000 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 64 392 2632704 8e Linux LVM
Partition 2 does not end on cylinder boundary.
现在,磁盘大小为 5368MB。磁盘占用情况为:
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
1.7G 1.5G 83M 95% /
tmpfs 250M 0 250M 0% /dev/shm
/dev/sda1 485M 117M 343M 26% /boot
试试看用 dd 命令创建一个大小为 1GB 的块文件:
# dd if=/dev/zero of=1.0G.img bs=1M count=1000
dd: writing `1.0G.img': No space left on device
1+0 records in
0+0 records out
8192 bytes (8.2 kB) copied, 0.00300509 s, 2.7 MB/s
提示说磁盘空间不足(No space left on device)。虽然我们给了虚拟机足够的空间,但是虚拟机里的系统(这里是 CentOS)并没有将这一部分空间利用上。可以看到,虚拟机里的磁盘空间只有 1.7G,原始分配的 3G 没有用完。这同时也说明,即使创建虚拟机的时候使用动态分配磁盘大小,虚拟机里的系统也并不会自动修改自己的磁盘。如果是正常使用,即使虚拟机的虚拟磁盘足够大,还是可能会在虚拟机中遇到磁盘空间不足的警告。
下面调整虚拟机操作系统的文件系统,使之将所有空间利用上。
A. 将空余磁盘创建为 SDA3¶
重新启动虚拟机,登入 CentOS,使用 fdisk 将虚拟磁盘的空闲空间创建为一个新的分区。注意要使用代表 Linux LVM 的分区号 8e 来作为 ID。
# fdisk /dev/sda
n {new partition}
p {primary partition}
3 {partition number} t {change partition id}
3 {partition number}
8e {Linux LVM partition}
w
上述命令执行后,可以使用
fdisk -l /dev/sda
来查看 sda3 是否成功创建并标记为 LVM,如果没有,则需要重新启动。可惜我忘记保存结果记录了。
reboot
B. 调整 LVM 大小¶
先看看当前 Volume Group:
# vgdisplay
--- Volume group ---
VG Name VolGroup
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size 2.51 GiB
PE Size 4.00 MiB
Total PE 642
Alloc PE / Size 642 / 2.51 GiB
Free PE / Size 0 / 0
VG UUID m42pDq-K830-cfly-cKR2-1AQF-IsyX-3X2ADy
名称为 VolGroup,可调整大小(resizable),当前大小为 2.51GB。活动的 LVM 卷有,
# lvscan
ACTIVE '/dev/VolGroup/lv_root' [1.67 GiB] inherit
ACTIVE '/dev/VolGroup/lv_swap' [856.00 MiB] inherit
先将分配过来的新磁盘空间创建为一个新的物理卷,
pvcreate /dev/sda3
然后使用新的物理卷来扩展 LVM 的 VolGroup,
# vgextend VolGroup /dev/sda3
No physical volume label read from /dev/sda3
Writing physical volume data to disk "/dev/sda3"
Physical volume "/dev/sda3" successfully created
Volume group "VolGroup" successfully extended
然后扩展 LVM 的逻辑卷 VolGroup-lv_root,
# lvextend /dev/VolGroup/lv_root /dev/sda3
Extending logical volume lv_root to 3.66 GiB
Logical volume lv_root successfully resized
最后,调整逻辑卷文件系统的大小,
resize2fs /dev/VolGroup/lv_root
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/VolGroup/lv_root is mounted on /; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/VolGroup/lv_root to 959488 (4k) blocks.
The filesystem on /dev/VolGroup/lv_root is now 959488 blocks long.
完成。看看效果:
# lvscan
ACTIVE '/dev/VolGroup/lv_root' [3.66 GiB] inherit
ACTIVE '/dev/VolGroup/lv_swap' [856.00 MiB] inherit
另外,几个有用的 LVM 指令(lvm2):
- lvmdiskscan
- vgdisplay
- pvdisplay
- lvdispay
- vgcreate
- pvcreate
- lvscan
- pvscan
- vgscan
我这里用的是 CentOS 系统。如果是 Windows 就更简单了,可通过 Windows 的磁盘管理来重新调整分区大小以占用所有可用磁盘空间。©
本文发表于水景一页。永久链接:<https://cnzhx.net/blog/resizing-lvm-centos-virtualbox-guest/>。转载请保留此信息及相应链接。
[转]调整 VirtualBox 虚拟机的磁盘大小的更多相关文章
- 增加VirtualBox虚拟机的磁盘空间大小(Host:Win7 VirtualBox5.0.16 VM:Win10)
1 前言 网上关于增加VirtualBox虚拟机的磁盘空间大小的文章非常非常多,这里我之所以再写一篇,是因为在参照这些文章做的时候,由于VirtualBox的版本更新以及其他一些环境问题,碰到到一些问 ...
- 怎样调整XenServer下面Linux虚拟机的磁盘大小
登录到XenServer. 修改虚拟机磁盘大小修改storage 磁盘大小 启动虚拟机 修改分区大小Hex code (type L to list codes): 8eChanged system ...
- 如何扩大VMware中的ubuntu虚拟机的磁盘大小
我是在VMware中安装的ubuntu. 最近虚拟机磁盘空间不够,需要扩展,在虚拟机中设置了扩展20G,然后在ubuntu中发现扩展的20G并不能用.... 正确的扩展方法是: 1.先在虚拟机中的se ...
- 调整JVM虚拟机的内存大小
jvm默认只有64M; public static void main(String[] args){ byte b[] = new byte[1024*1024*65];//此时会报内存溢出: } ...
- Vmvare扩展虚拟机磁盘大小
Vmvare设置好虚拟机的磁盘大小之后,发现磁盘空间不够了,这个时候怎么扩展磁盘的大小呢? 首先,在确保虚拟机关闭的情况下,右键设置,选择硬盘,扩展,这样就可以增加磁盘的大小. 但是由于未进行分区和磁 ...
- 虚拟机ubuntu磁盘扩容
1.虚拟机把磁盘大小进行改动 2.sudo apt-get install gparted 3.打开安装好的应用 4.进行分区改动 5.理论删除sda2和sda5重整后边即可,但此时sda2和sda5 ...
- 扩大VirtualBox虚拟机磁盘的方法
之前在VirtualBox里安装了一个XP系统,当时只分配了10G磁盘空间,随着使用,空间不足了. 在虚拟机管理器里不能直接调整磁盘的大小,这里要用到VirtualBox安装目录下的VBoxManag ...
- virtualbox ubuntu 磁盘大小扩容
前言 虚拟机软件: virtuabox 虚拟机运行的系统: Ubuntu 18.04.3 desktop 如果需要扩容的虚拟机在运行中,请将需要扩容的虚拟机进行关机 方法 先设置虚拟机的虚拟硬盘的大小 ...
- 调整ESX的VMFS磁盘格式的块大小,让单个虚拟磁盘支持更大容量
调整ESX的VMFS磁盘格式的块大小,让单个虚拟磁盘支持更大容量 前因:客户搭建了VMware ESX企业版的测试平台:有一天接到一个需求,是测试数据库的,需要一个300G的磁盘. 解决过程: 1.按 ...
随机推荐
- Linux下使用openVPN连接到某个内网
推荐一个网站(比较全的介绍关于openvpn的客户端与服务端的配置) 点击我 此处我介绍我配置openvpn客户端连接的坑 我的机器为kali linux apt-get install openvp ...
- 【笔记】css基于box的一行时垂直方向居中,多行平均居中,多出部分还省略号代替
题目很长,其实他就是这样的: 看标题,一行的时候是这样的,在行中间 标题文字多的时候是这样的,变成2行,超出部分用省略号: 但是为了更好的兼容性,没有使用flex,使用的是box布局. 核心代码就是这 ...
- WPF的AutoCompleteBox控件
AutoCompleteBox怎么用,网上都能查得到,本文就不再赘述. 最近在用的时候,发现一个小BUG,当匹配数据的个数超过了Drop页面能够显式的数据个数时,如果此时一直按键盘上“向下的箭头”,你 ...
- Kerberos协议
Kerberos协议主要用于计算机网络的身份鉴别 (authentication),其特点是用户只需输入一次身份验证信息就可以凭借此验证获得票据(ticket-granting-ticket)访问多个 ...
- UnityTips:使用反射调用内部方法拓展编辑器
大家都知道Unity是一个C/C++的游戏引擎,C#只是Unity提供的脚本层.因此大部分功能都是通过C#来调用底层的C++代码的.而一些朋友可能不知道的是,其实Unity的C#代码中也有很多方法是我 ...
- Docker应用:Hello World
前言: 最近学习了Docker相关技术点,国内关于Docker的资料大多是基于Linux系统的,但是我对Linux又不熟(实际上没用过,掩面哭笑.Jpg). 好在在Win10下也是支持Docker的, ...
- Akka-CQRS(1)- Write-side, Persisting event sources:CQRS存写端操作方式
上篇我们提到CQRS是一种读写分离式高并发.大流量数据录入体系,其中存写部分是通过event-sourcing+akka-persistence实现的.也可以这样理解:event-sourcing(事 ...
- 字符编码那点事:快速理解ASCII、Unicode、GBK和UTF-8
原作者:阮一峰(ruanyifeng.com),现重新整理发布,感谢原作者的无私分享. 1.引言 今天中午,我突然想搞清楚 Unicode 和 UTF-8 之间的关系,就开始查资料. 这个问题比我想象 ...
- VMware虚拟机磁盘操作占用过高问题
使用虚拟机运行Linux图形桌面时,经常因为一个网页或者编译某个程序就导致虚拟机卡死,甚至影响主机使用.明明主机内存有8G,分配给虚拟机的内存也不少,为什么就这么卡顿.打开主机上的任务管理器查看发现磁 ...
- 在Ubuntu 18.04中安装pyenv(Python多版本管理工具)
最近正在重头梳理Python的基础知识,为了更好地使用Python进行开发,防止发生版本混乱(不同的第三方库有可能因为Python版本不兼容而报错),所以需要使用pyenv进行版本管理. *** 通常 ...