概述
开发中用到虚拟机是必不可少的事情,但是很可能刚开始并没给予虚拟机足够的磁盘空间。到了后来就回出现磁盘空间不足的情况,这时候,我们不得不想办法扩充虚拟机的磁盘空间
方式一:增加磁盘数,增加挂载点
VMware Fusion 中扩充虚拟机磁盘空间
要扩充虚拟机的磁盘空间,首先得在VMware Fusion 中操作,为虚拟机增加磁盘。注意操作之前请关闭需要扩容的虚拟机
-
VMware Fusion 选定需要扩容的虚拟机,点击上方的扳手按钮,进行设置,添加。
-
再点击【添加设备 】按钮,点击新硬盘
- 设置好需要添加的硬盘信息,点击【应用】添加磁盘。
到此 VMware Fusion 设置完成
centos 虚拟机设置(以下命令必须用root 权限执行)
- 打开虚拟机输入命令,查看系统磁盘使用情况统计
df -h
显示目前在Linux系统上的文件系统的磁盘使用情况统计。这个命令只能查看正在使用的磁盘,及相应挂载点
- 输入以下命令,列出设备信息
lsblk
显然 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
很明显 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 虚拟机中挂载文件
方式二:增加根目录空间
-
同样要先关闭虚拟机点击设置(小扳手图标)更改虚拟机磁盘大小后应用即可,如下图所示
查看磁盘空间变化
- 打开虚拟机命令行输入命令:
fdisk -l
,就发现磁盘空间变大了,但没有分区,还不能使用。/dev/sda已经拥有了扩大的空间。如下所示
- 也可以用
lsblk
命令查看,且显示的更为清晰。显示的磁盘空间大小和 VMware fusion 中设定空间大小一样。
磁盘分区
-
使用Linux的fdisk分区工具给磁盘/dev/sda分区,更可以根据提示输入m查看帮助信息,再输入n(表示增加分区),回车后输入p(创建主分区),回车后partition number输入4(因为上面已经有两个分区sda1、sda2和sda3),回车会提示输入分区的start值,end值。都默认即可(即当前能使用的所有空间),回车后输入W进行保存,分区划分完毕(增加了2G空间)。
更改新分区类型为 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系统才能进行后面的操作。
- 现在我们需要重启虚拟机,命令行里提醒,我们需要重启后才能进行下一步操作。
格式化新的分区为 ext4格式
- 输入命令
fdisk -l
查看磁盘分区情况
- 格式化新的分区为ext4格式。
mkfs.ext4 /dev/sda4
,如下图所示。
格式化后,创建PV,将物理硬盘分区初始化为物理卷
-
首先用用命令
pvdisplay
查看当前的物理卷。显然并没有sda4
然后用pvcreate指令用于将物理硬盘分区初始化为物理卷,以便被LVM使用。
-
要创建物理卷必须首先对硬盘进行分区,并且将硬盘分区的类型设置为“8e”后,才能使用pvcreat指令将分区初始化为物理卷。执行命令
pvcreate /dev/sda4
-
pvcreate /dev/sda4,创建完后,我们可以再用pvdisplay查看到新创建的物理卷。
可以看到老的物理卷是有
VG Name
的,而新的物理卷(也就是sda 4
),这里是centos
, 记住这个,后面要用到。
扩展卷组
- 要扩展VG需要知道当前
lvm
组名,也就是我们上面要记下来的VG Name
可以通过命令vgdisplay
查看。 - 通过命令
vgextend centos /dev/sda4
动态的扩展卷组,它通过向卷组中添加物理卷来增加卷组的容量。 - 再次执行命令
vgdisplay
再次查看,容量已经添加进去。
扩容空间到 root 下
- 查看需要扩容的路径,执行命令
fdisk -l
命令,就可以发现,原来lv(root对应lv)的路径是/dev/mapper/centos-root
, 那么之后的扩容路径就为/dev/centos/root
- 执行命令
lvextend -L+1.99G /dev/centos/root /dev/sda4
扩展空间到root下,扩容的空间要略小于VG的free
空间(上图 Free PE / Size 522 / <2.04),因此这里只输入了1.99G. - 然后通过df -h查看,root空间还是没变,因为我们差最后最关键的一步。
扩大未挂载文件系统
-
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
,根目录的空间已经扩容。如下所示
借鉴文章
总结:
到此 Mac VMware Fusion
中修改centos7
虚拟机的磁盘空间、扩容 就完成了。windows 等其他平台、其他 linux 虚拟机等等也类似,可能命令等有所不同,就不过多赘述了。