概述

开发中用到虚拟机是必不可少的事情,但是很可能刚开始并没给予虚拟机足够的磁盘空间。到了后来就回出现磁盘空间不足的情况,这时候,我们不得不想办法扩充虚拟机的磁盘空间

方式一:增加磁盘数,增加挂载点
VMware Fusion 中扩充虚拟机磁盘空间

要扩充虚拟机的磁盘空间,首先得在VMware Fusion 中操作,为虚拟机增加磁盘。注意操作之前请关闭需要扩容的虚拟机

  • VMware Fusion 选定需要扩容的虚拟机,点击上方的扳手按钮,进行设置,添加。


  • vm esxi7 vmesxi7调整磁盘_vm esxi7

  • image
  • 再点击【添加设备 】按钮,点击新硬盘


  • vm esxi7 vmesxi7调整磁盘_vm esxi7_02

  • image
  • 设置好需要添加的硬盘信息,点击【应用】添加磁盘。
到此 VMware Fusion 设置完成
centos 虚拟机设置(以下命令必须用root 权限执行)
  • 打开虚拟机输入命令,查看系统磁盘使用情况统计
df -h

显示目前在Linux系统上的文件系统的磁盘使用情况统计。这个命令只能查看正在使用的磁盘,及相应挂载点






vm esxi7 vmesxi7调整磁盘_VMware_03


image


  • 输入以下命令,列出设备信息
lsblk



vm esxi7 vmesxi7调整磁盘_centos_04


image



显然 sda1、sda2、centos-root、centos-swap 都是sda 分出来的分区,而 sdb 就是我需要挂载的磁盘,它有10G的空间

  • 初始化磁盘为linux 系统文件。注意:你的linux 文件系统是什么格式。我的是 ext4
mkfs -t ext4 /dev/sdb
  • 初始化文件系统完成后,切换到根分支 新建文件夹 newdisk,命令如下
    mkdir newdisk
  • 将初始化的磁盘挂载到 newdisk下,命令如下。
    mount /dev/sdb /newdisk 如果没有任何提示,则表明成功了。(linux 系统相信,没有消息就是好消息)
  • 执行如下命令查看系统挂载情况
df -h



vm esxi7 vmesxi7调整磁盘_centos_05


image



很明显 sdb 这个磁盘已经挂载到系统了,我们可以正常使用它了。但是如果重启系统,需要重新挂载才能使用。那么最好我们设置一个自动挂载。


设置自动挂载
  • 编辑 /etc/fstab 文件,,命令如下
vim /etc/fstab
  • 在最下方添加如下一条记录,后保存文件
/dev/sdb /newdisk auto defaults,nofail,comment=cloudconfig      0  2

其中 /dev/sdb 需要自动挂载的磁盘,/newdisk 挂载的文件夹。

  • 执行自动挂载命令
mount -a

只要不报错,那就说明设置成功。下次开机,sdb 也会自动挂载到 /newdisk 文件夹下了

总结:

总体来说分为两步

  • VMware Fusion 下增加磁盘
  • Linux 虚拟机中挂载文件
方式二:增加根目录空间
  • 同样要先关闭虚拟机点击设置(小扳手图标)更改虚拟机磁盘大小后应用即可,如下图所示


  • vm esxi7 vmesxi7调整磁盘_文件系统_06

  • image



  • vm esxi7 vmesxi7调整磁盘_文件系统_07

  • image

查看磁盘空间变化
  • 打开虚拟机命令行输入命令:fdisk -l,就发现磁盘空间变大了,但没有分区,还不能使用。/dev/sda已经拥有了扩大的空间。如下所示


vm esxi7 vmesxi7调整磁盘_文件系统_08


image


  • 也可以用lsblk 命令查看,且显示的更为清晰。显示的磁盘空间大小和 VMware fusion 中设定空间大小一样。

  • vm esxi7 vmesxi7调整磁盘_文件系统_09

  • image

磁盘分区
  • 使用Linux的fdisk分区工具给磁盘/dev/sda分区,更可以根据提示输入m查看帮助信息,再输入n(表示增加分区),回车后输入p(创建主分区),回车后partition number输入4(因为上面已经有两个分区sda1、sda2和sda3),回车会提示输入分区的start值,end值。都默认即可(即当前能使用的所有空间),回车后输入W进行保存,分区划分完毕(增加了2G空间)。


  • vm esxi7 vmesxi7调整磁盘_VMware_10

  • image

更改新分区类型为 Linux LVM 类型。
  • 可以看到/dev/sda4的Id号为83,我们要将其改成8e(LVM卷文件系统的Id),具体方法同上跟上一步中的磁盘分区大同小异,输入fdisk /dev/sda,选择t(change a partition's system id 改变一个分区的系统ID)回车,然后选择分区4回车,然后输入L回车。然后输入8e回车,然后输入w,保存修改的分区信息。最后输入fdisk -l ,查看ID是否修改成功。修改成功后必须重新启动linux系统才能进行后面的操作。


  • vm esxi7 vmesxi7调整磁盘_centos_11

  • image
  • 现在我们需要重启虚拟机,命令行里提醒,我们需要重启后才能进行下一步操作。

格式化新的分区为 ext4格式
  • 输入命令 fdisk -l 查看磁盘分区情况


  • vm esxi7 vmesxi7调整磁盘_centos_12

  • image
  • 格式化新的分区为ext4格式。mkfs.ext4 /dev/sda4,如下图所示。


  • vm esxi7 vmesxi7调整磁盘_文件系统_13

  • image

格式化后,创建PV,将物理硬盘分区初始化为物理卷
  • 首先用用命令pvdisplay查看当前的物理卷。显然并没有sda4

  • vm esxi7 vmesxi7调整磁盘_文件系统_14

  • image
  • 然后用pvcreate指令用于将物理硬盘分区初始化为物理卷,以便被LVM使用。
  • 要创建物理卷必须首先对硬盘进行分区,并且将硬盘分区的类型设置为“8e”后,才能使用pvcreat指令将分区初始化为物理卷。执行命令pvcreate /dev/sda4

  • vm esxi7 vmesxi7调整磁盘_vm esxi7_15

  • image
  • pvcreate /dev/sda4,创建完后,我们可以再用pvdisplay查看到新创建的物理卷。


  • vm esxi7 vmesxi7调整磁盘_vm esxi7_16

  • image
  • 可以看到老的物理卷是有VG Name 的,而新的物理卷(也就是sda 4),这里是 centos, 记住这个,后面要用到。

扩展卷组
  • 要扩展VG需要知道当前lvm组名,也就是我们上面要记下来的 VG Name可以通过命令vgdisplay查看。
  • 通过命令 vgextend centos /dev/sda4动态的扩展卷组,它通过向卷组中添加物理卷来增加卷组的容量。
  • 再次执行命令 vgdisplay再次查看,容量已经添加进去。


  • vm esxi7 vmesxi7调整磁盘_文件系统_17

  • image

扩容空间到 root 下
  • 查看需要扩容的路径,执行命令fdisk -l命令,就可以发现,原来lv(root对应lv)的路径是 /dev/mapper/centos-root, 那么之后的扩容路径就为/dev/centos/root



  • vm esxi7 vmesxi7调整磁盘_vm esxi7_18


  • image


  • 执行命令 lvextend -L+1.99G /dev/centos/root /dev/sda4扩展空间到root下,扩容的空间要略小于VG的free空间(上图 Free PE / Size 522 / <2.04),因此这里只输入了1.99G.
  • 然后通过df -h查看,root空间还是没变,因为我们差最后最关键的一步。



vm esxi7 vmesxi7调整磁盘_centos_19


image


扩大未挂载文件系统
  • resize2fs命令,用于扩大或者缩小未挂载的ext2,ext3或者是ext4文件系统。具体命令为:resize2fs -p /dev/mapper/centos-root 1.99G。这个路径,就是前面 root 对应 lv 的路径。
  • 发现报错如下
resize2fs: Bad magic number in super-block 当尝试打开 /dev/mapper/centos-root 时
找不到有效的文件系统超级块
  • 可能我们的系统是xfs 文件系统,执行命令cat /etc/fstab |grep centos-root确认下是不是 xfs 文件系统。结果如下
/dev/mapper/centos-root /                       xfs     defaults        0 0
  • xfs 文件系统应该用如下命令扩容
xfs_growfs /dev/mapper/centos-root
  • 结果如下
meta-data=/dev/mapper/centos-root isize=512    agcount=7, agsize=1113856 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=7588864, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 7588864 to 8111104
  • 执行命令df -h,根目录的空间已经扩容。如下所示


  • vm esxi7 vmesxi7调整磁盘_VMware_20

  • image

总结:

到此 Mac VMware Fusion 中修改centos7虚拟机的磁盘空间、扩容 就完成了。windows 等其他平台、其他 linux 虚拟机等等也类似,可能命令等有所不同,就不过多赘述了。