Windows下虚拟机Linux(CentOS8)扩容设置 - 磁盘扩容中的坑和解决方法
摘要:【原创】转载请注明作者Johnthegreat和本文链接
由于虚拟机空间不足,为了避免重装虚拟机,做了一次无损扩容。
过程中的报错如下:
[root@localhost ~]# pvcreate PV /dev/sda3
Device PV not found.
Device /dev/sda3 not found.
[root@localhost ~]# resize2fs /dev/cl/root
resize2fs 1.44.6 (5-Mar-2019)
resize2fs: Bad magic number in super-block while trying to open /dev/cl/root
Couldn't find valid filesystem superblock.
为了详细记录,这里将整个过程详述如下:
一、问题和需求
1. 碰到的问题:虚拟机之前设置的空间太小,安装软件过多导致无法使用;
2. 需求:需要增加虚拟机根目录的容量,事实上,这样的需求和解决问题的方法应该也适用于物理硬盘,注意谨慎操作。
3. 系统和软件情况:
1)虚拟机管理器:VirtualBox 6.1
2)虚拟机:Redhat的社区版CentOS 8
3)操作系统:Windows 10
4)CentOS操作用户身份:root,如果你的不是root身份,注意sudo
二、操作步骤概览
1. 首先在VirtualBox层增加虚拟机的容量,我这里展示的是增加2G,也就是虚拟机从原来整体8G,增加为10G;
2. 然后启动CentOS,使用LVM(Logic Volume Manager),即逻辑卷管理进行挂载和扩展。坑都在这里。
3. 操作成功前后的对比图,可以看到root下的容量从原来的6.2G增加到8G:
操作前:

操作后:

三、具体操作命令/截图
退出虚拟机,然后开始一步一步如下操作:
1. 首先找到你的CentOS系统所在位置,如果是默认的话,应该在用户目录的C:\Users\(用户,这里替换成你自己的)\VirtualBox VMs\CentOS8这个文件夹下,如下:

发现虚拟机磁盘文件是vdi格式的,所以在当前地址栏敲入cmd,进入windows下的cmd命令行,并且在当前目录下,然后敲入如下命令:
VBoxManage modifyhd centos.vdi --resize 10000
这里注意红色字代表10G,我是从原来8G扩展到10G,这里的单位是Mb。
2. 打开VirtualBox,启动虚拟机,如果VirtualBox检测到硬盘容量变化,要求你确认,那就确认一下;
3. 启动后,进入命令行,然后查看设备信息,使用命令lsblk(list block),即列出设备信息:
会发现,已经有sda1和sda2,这个时候,想当然认为增加的空间是sda3,使用pvcreate(physical volume create)创建物理卷:

这里出现文章开头的错误信息。
我们仔细观察上面的设备信息,会发现新增加的容量并没有在列表中出现,尽管sda有10G,但是sda1和sda2加起来只有8G,所以另外2G应该是没有发现,我们需要先对磁盘进行操作。fdisk是Linux下的一个创建和维护分区表的命令,接下来我们使用它。
4. 敲入fdisk /dev/sda命令,我们可以进入到fdisk的交互界面,注意确认自己操作正确前,不要按下w,有疑问按下q先退出搞清楚再重新进入继续操作:

5. 在交互界面,输入n(创建新的分区),然后回车,接下去,都可以直接4次回车,分别都是表示使用默认设置,注意这里默认的分区数字是3,即sda3。

6. 上面创建好后,我们在交互界面继续输入p(打印准备好的分区表),确认无误后,输入w(写入分区);

7. 至此,我们已经创建好了分区表,也可以看到sda3了,所以重新从上面出错的地方继续执行,即可创建成功:
pvcreate PV /dev/sda3

8. 扩展到卷组,我们vgdisplay命令查看一下自己所在的卷组:

看到VG Name是cl,所以进一步扩展到卷组:
vgextend cl /dev/sda3

9. 扩展到逻辑分区,使用lvextend(logical volume extend逻辑卷扩展)
lvextend /dev/cl/root /dev/sda3

10. 我们df -h查看一下文件系统的磁盘空间占用情况:

这里我们发现磁盘没有按照预期的扩容,因为我们没有刷新逻辑分区的容量。
11. 于是,刷新逻辑分区的容量,按照惯例使用resize2fs(调整ext2\\ext3\\ext4文件系统的大小,它可以放大或者缩小没有挂载的文件系统的大小),如下命令:
resize2fs /dev/cl/root
发现找不到可用的超级系统块,这是什么鬼?
我们使用df -Th查看,发现文件系统是xfs,原来,CentOS7开始,预设的文件系统就由原本的EXT4变成XFS文件系统了,所以resize2fs命令设置无效。

12. 由于是xfs增量文件系统,所以我们使用xfs_growfs命令,注意上面的Mounted on是挂载点,这里我们的挂载点就是根目录:
xfs_growfs /

13. 大功告成!我们使用df命令查看一下最终结果:
df -h

好了,以上就是扩展磁盘容量的所有内容,如果你有疑问,或者有更好的解决方案,欢迎留言交流,谢谢!
Windows下虚拟机Linux(CentOS8)扩容设置 - 磁盘扩容中的坑和解决方法的更多相关文章
- Windows下运行python脚本报错“ImportError: No Module named ...”的解决方法
之前遇到一个问题,在Pycharm或IPython之类的IDE上运行脚本正常,但是直接运行或cmd命令行运行的时候报了模块未能找到的错误--ImportError: No Module named . ...
- 在windows下使用linux的开发环境
windows下做开发确实有些不方便,比如python.ruby什么的都要自己装,不过这还是小事情.有一次想安装node-sass,windows下报错缺少MSBuild什么的,可能需要装一个vs解决 ...
- Xming + PuTTY 在Windows下远程Linux主机
Xming + PuTTY 在Windows下远程Linux主机 一.原理 Linux/Unix的X Window具有网络透明性.X Window系统里有一个统一的Server来负责各个程序与 ...
- Windows下虚拟机安装Mac OS X —– VM12安装Mac OS X 10.11
____________________________________________________________________________________________________ ...
- Windows下的Linux子系统安装,WSL 2下配置docker
Windows下的Linux子系统安装,WSL 2下配置docker 前提条件: 安装WSL 2需要Windows 10版本是Build 18917或更高,首先先确认系统版本已升级. 在“启用或关闭W ...
- 在Windows下配置Linux远程开发环境
在Windows下配置Linux远程开发环境 欢迎光临我的个人博客 https://source.chens.life/Configure-Linux-remote-development-envir ...
- # 如何在Windows下运行Linux程序
如何在Windows下运行Linux程序 一.搭建 Linux 环境 1.1 安装 VMware Workstation https://www.aliyundrive.com/s/TvuMyFdTs ...
- Ubuntu上安装和使用SSH,Xming+PuTTY在Windows下远程Linux主机使用图形界面的程序
自:http://blog.csdn.net/neofung/article/details/6574002 Ubuntu上安装和使用SSH 网上有很多介绍在Ubuntu下开启SSH服务的文章,但大 ...
- 在Windows下食用Linux工作环境(WSL+cmder)
在Windows下食用Linux工作环境(WSL+cmder) 为什么要这么瞎搞呢?因为最近换了个硬盘,搞了个双系统,然后习惯性地按下 Ctrl+Alt+T 发现什么都没有召唤出来,然后忽然想起换了系 ...
随机推荐
- 2018-07-01 jq效果
jq效果的实现方法: 1.基本 show(time) -> 显示:相当于display:block hide(time) -> 隐藏:相当于display:none toggle(time ...
- 【数论基础】素数判定和Miller Rabin算法
判断正整数p是否是素数 方法一 朴素的判定
- Redis的几种集群方式分析
一 单机版 分析: 无论多少用户,都访问这一台服务器 .服务器一旦挂了,所有用户都无法访问.风险很大,一般不会有人使用. 二 主从模式(master/slaver) 分析: 主从模式中, 无论多少用户 ...
- Docker 集成 Jenkins Gitlab 实现 CI/CD
首先介绍下环境部分,文章中共涉及到三台服务器,分别用 Gitlab,Jenkins,Deploy 三个名称代替,部署在内网环境,同时因为政策原因,服务器无法直接连通外网.下载 Jenkins 插件时需 ...
- 手把手教你用Python网络爬虫获取网易云音乐歌曲
前天给大家分享了用Python网络爬虫爬取了网易云歌词,在文尾说要爬取网易云歌曲,今天小编带大家一起来利用Python爬取网易云音乐,分分钟将网站上的音乐down到本地. 跟着小编运行过代码的筒子们将 ...
- Java Web项目部署到阿里云服务器(ECS)
本篇随笔只是记录博主第一次将自己的Java项目部署到阿里云服务器的大致过程,具体细节还请参考别的博文. 一.项目介绍 我做的项目是利用maven项目构建工具进行搭建基于SSM框架的代码共享管理系统,主 ...
- RBAC权限分配
RABC:基于角色的权限访问控制(Role-Based Access Control) 一般在登录系统认证通过后,会先确定的该用户的操作权限,判断用户的后续操作是否合法! RABC至少需要三张表:用户 ...
- [Asp.Net Core] Blazor WebAssembly - 工程向 - 如何在欢迎页面里, 预先加载wasm所需的文件
前言, Blazor Assembly 需要最少 1.9M 的下载量. ( Blazor WebAssembly 船新项目下载量测试 , 仅供参考. ) 随着程序越来越复杂, 引用的东西越来越多, ...
- 决策树purity/基尼系数/信息增益 Decision Trees
目录 决策树简单描述 衡量purity的三种方法 Gini Coefficient Entropy熵 决策树简单描述 决策树的样子大概是这个样子的: 选择一个特征作为根节点,把这个特征划分成两个孩子节 ...
- ORCLE 列转行
字符串转多列 实际上就是拆分字符串的问题,可以使用 substr.instr.regexp_substr函数方式 字符串转多行 使用union all函数等方式 wm_concat函数 wm_conc ...

