VirtualBox虚拟机增加CentOS根目录容量 LVM扩容

时间:2022-02-07 20:31:38

对于目前的网络开发者来说,比较好的搭档就是Win7+VirtualBox+CentOS的组合,既可以发挥Linux强大的网络服务功能,也可以有效的隔离各项服务拖慢系统,影响系统的运行,对于新手来说可以减少配置错误带来的损失,最主要的是方便移植,不同每次重装系统,都要痛苦的安装配置一大堆东西。

但如果当我们在虚拟机中安装和使用的时候,发现系统存储不够用,怎么办,使用VirtualBox 4 版本以上的可以方便、快速的扩容。

VirtualBox 中虚拟硬盘有几种形式,VMDK、VDI、VHD、HDD等。

  • VMDK:是VMware开发并使用的,同时也被SUN的xVM、QEMU、SUSE Studio、.NET DiscUtils支持,所以兼容性会好些。
  • VDI:是Virtual Box 自己的处理格式,而且Virtual Box支持Windows和Linux,所以对于使用VirtualBox的用户比较好。
  • VHD:是Windows专有的处理格式,HDD是Apple专有的处理格式,所以不会支持跨平台,一般不会考虑。

我们这里以如何给VMDK和VDI扩容为例,至于其它格式自己百度谷歌转换吧。

这里我们用到两个东西:(1)VBoxManage工具命令——在Vitualbox安装目录下,可以指定完整路径;(2)centos.vdi或cenos.vmdk——你系统的磁盘文件文件,一般位于用户的VirtualBox VMs文件夹下。

1 扩容磁盘文件

1.1 VDI

VDI扩容最简单,一条命令:

VBoxManage modifyhd centos.vdi --resize 16000

1.2 VMDK

如果是VMDK就要先转换成VDI,然后再扩容:

VBoxManage clonehd "centos.vmdk" "centos.vdi" --format vdi     // vmdk是转换前的文件,vdi是转换之后的文件
VBoxManage modifyhd "centos.vdi" --resize 16000   // 这里的单位是M

一阵0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%过后,通过VBoxManage list hdds就可以看到我们克隆的文件了。

如果想再转回为VMDK,用这个命令就可以了:

VBoxManage clonehd "centos.vdi" "resized.vmdk" --format vmdk

不过,直接使用vdi格式的也可以了。

2 指定新磁盘文件

接下来,打开虚拟机,选择系统 > 右击 > 设置 > 存储 > 控制器SATA > 右边的添加虚拟硬盘 > 选择转换后的文件 就行了。

VirtualBox虚拟机增加CentOS根目录容量 LVM扩容

在虚拟机打开系统,通过df -h查看发现,根目录还是原样,下面我们通过LVM来扩展分区。

3 LVM扩展

LVM(Logic Volume Manager)逻辑卷管理,像RedHat系的默认分区管理方式,是建立在硬盘分区之上,文件系统之下的逻辑层,用来解决在最初分区时未正确的评估和和分配分区容量,而造成系统分区不够用。接下来扩展分区就是几行代码的事了。

sudo fdisk -l

查看当前系统分区情况。可以看到我们已经创建的分区,sda1、sda2的什么,也可以ls /dev/来查看。

如果有第二块硬盘会看到sdb,我这里是只有一块,且已经分了sda1和sda2。

下面创建将扩展的空间,创建新分区。

VirtualBox虚拟机增加CentOS根目录容量 LVM扩容

sudo mkfs.ext4 /dev/sda4  // 将分区格式化为ext4格式

下面开始LVM操作,查看卷组名,我这里是VolGroup,记着下面要用

sudo vgdisplay

VirtualBox虚拟机增加CentOS根目录容量 LVM扩容VirtualBox虚拟机增加CentOS根目录容量 LVM扩容

sudo pvcreate /dev/sda4                // 创建新物理卷
sudo vgextend VolGroup /dev/sda4  // 扩展到卷组

VirtualBox虚拟机增加CentOS根目录容量 LVM扩容

VirtualBox虚拟机增加CentOS根目录容量 LVM扩容

查看根分区:

VirtualBox虚拟机增加CentOS根目录容量 LVM扩容

其中,/dev/VolGroup/lv_root就是根分区,也是我们要扩展的分区。

扩展到容量逻辑分区,命令:

sudo lvextend /dev/VolGroup/lv_root /dev/sda4

如果出现如下错误:

VirtualBox虚拟机增加CentOS根目录容量 LVM扩容VirtualBox虚拟机增加CentOS根目录容量 LVM扩容

sudo vgreduce --removemissing VolGroup   // 即可解决

最后

sudo resize2fs /dev/VolGroup/lv_root     // 刷新逻辑分区容量
sudo df -h  // 会发现根分区,现在容量翻倍了。。。
sudo reboot // 重启系统,一切OK,我的虚拟机又复活了。。。

补充:LVM的基本知识

LVM中有PV、VG、LV分别表示物理卷、卷组、逻辑卷。

操作流程就是,先是通过pvcreate将整个分区和硬盘创建为物理卷,对家vgcreate创建卷组volgroup,并把pvcreate的物理卷加入。然后通过lvcreate在卷组volgroup中创建我们需要的比如20G大小的逻辑卷。然后利用mkfs格式化为相应该的格式,比如ext4。最后通过mount挂载,形成我们可以访问的文件系统。

如果要扩容,通过这种方式来增加容量。

lvextend -L +xxG /dev/VolGroup/zzz

如果要压缩,则卸载掉逻辑卷,在e2fsck检测剩余的容量,然后,

resizef2fs /dev/VolGroup/zzz xxM        // 减少xxM
lvreduce -L xxM                         // 将逻辑卷减少xxM

如果要删除,则用命令

lvremove vgremove pvremove

也是要先umount ,同时要修改/etc/fstab中的挂载信息,否则启动不起来。

参考资料:

  1. virtualBox虚拟机linux(CentOS)扩容(增加原先设置的大小 扩容至根目录)

VirtualBox虚拟机增加CentOS根目录容量 LVM扩容的更多相关文章

  1. VirtualBox如何增加CentOS根目录容量

    1.扩充磁盘容量 单位为M,40000为40G VBoxManage modifyhd centos.vdi --resize 40000 2.指定新的磁盘文件 系统 > 右击 > 设置  ...

  2. VirtualBox虚拟机安装CentOS 7

    新建虚拟机 因为比较简单,所以对于VirtualBox就不做过多介绍了,直接下载安装即可,安装好之后打开Oracle VM VirtualBox管理器,点击新建,选择Red Hat(根据windows ...

  3. Virtualbox虚拟机安装CentOS 6.5图文详细教程

    http://blog.csdn.net/risingsun001/article/details/37934975

  4. [转]调整 VirtualBox 虚拟机的磁盘大小

    本文转自:https://cnzhx.net/blog/resizing-lvm-centos-virtualbox-guest/ 发表于 2013-08-20 作者 H Zeng 更新于 2016- ...

  5. virtualBox linux操作系统centos 挂载光盘

    virtualBox虚拟机linux centos 挂载光盘 第一步: 放入光盘 第二步: 挂载光驱 (/dev/cdrom) 1) 创建挂载点 mkdir /mnt/media 2) 挂载 moun ...

  6. VirtualBox如何扩展虚拟机Ubuntu的硬盘容量?

    一.问题描述 刚刚在VirtualBox中使用Ubuntu虚拟机中,出现了虚拟硬盘不够用的情况.  乖乖,查了一下磁盘空间,如下所示: df -H 原来是上午安装Ubuntu虚拟机的时候,选择了动态分 ...

  7. 虚拟机LVM扩容

    1.先在Vmware上,把虚拟机硬盘做扩展 2.现在打开虚拟机发现系统的磁盘空间已经扩了,但是硬盘分区可用空间没变,还是原来的30G [root@localhost ~]# fdisk -l Disk ...

  8. 逻辑卷管理LVM 扩容LV容量实例(一)

    实验环境: 一台Linux 服务器添加两块硬盘,一块硬盘容量30G,另一块硬盘容量50G,采用VMware Workstation虚拟机进行模拟实验. 30G硬盘先分成一个分区,分区大小为25G,再创 ...

  9. 增加VirtualBox虚拟机的磁盘空间大小(Host:Win7 VirtualBox5.0.16 VM:Win10)

    1 前言 网上关于增加VirtualBox虚拟机的磁盘空间大小的文章非常非常多,这里我之所以再写一篇,是因为在参照这些文章做的时候,由于VirtualBox的版本更新以及其他一些环境问题,碰到到一些问 ...

随机推荐

  1. Struts2 源码分析——调结者(Dispatcher)之执行action

    章节简言 上一章笔者写关于Dispatcher类如何处理接受来的request请求.当然读者们也知道他并非正真的执行action操作.他只是在执行action操作之前的准备工作.那么谁才是正真的执行a ...

  2. 开源代码Window下搭建rtmp流媒体服务器

    合肥程序员群:49313181. 合肥实名程序员群:128131462 (不愿透露姓名和信息者勿加入) Q Q:408365330 E-Mail:egojit@qq.com 综合:有这样需求,将摄像头 ...

  3. VC++深入详解-第一章学习心得(二)

    前面介绍到了注册窗口,接下来进行窗口的创建,利用CreateWindow函数,结构如下 CreateWindowExW( DWORD dwExStyle, LPCWSTR lpClassName, / ...

  4. 结构性产品 Structured Product

    定义 结构性产品是固定收益产品(Fixed Income Instruments)的一个特殊种类.它将固定收益产品(通常是定息债券)与金融衍生交易(如远期.期权.掉期等)合二为一,增强产品收益或将投资 ...

  5. CSAcademy Beta Round #5 Force Graph

    题目链接:https://csacademy.com/contest/arhiva/#task/force_graph/ 大意是有若干个节点,每个节点对应一个二维坐标,节点之间相互有斥力存在.同时有些 ...

  6. java垃圾回收机制,以及常用的回收算法

    记得之前去平安面试的时候,面试官问到了垃圾回收,我当时也就是说说了垃圾回收的原理,但是具体有哪些实现策略,我当时是懵的. 概念: Java的垃圾回收机制是Java虚拟机提供的能力,用于在空闲时间以不定 ...

  7. 机器学习与Tensorflow(5)——循环神经网络、长短时记忆网络

    1.循环神经网络的标准模型 前馈神经网络能够用来建立数据之间的映射关系,但是不能用来分析过去信号的时间依赖关系,而且要求输入样本的长度固定 循环神经网络是一种在前馈神经网络中增加了分亏链接的神经网络, ...

  8. Android: SlidingDrawer(滑动式抽屉)

    Android控件之SlidingDrawer(滑动式抽屉)详解与实例 一.简介  SlidingDrawer隐藏屏外的内容,并允许用户通过handle以显示隐藏内容.它可以垂直或水平滑动,它有俩个V ...

  9. 查看Andorid应用是32位还是64位

    adb shell cat /proc/进程pid/maps 查看linker位数即可

  10. Linux crontab使用方法

    crontab命令主要用于设置命令行或者脚本周期性的执行.该命令从标准输入设备读取指令,并将其存放于文件中,以供之后读取和执行.本文主要讲述crontb命令的基本语法和配置方法. 1.crontab命 ...