• Linux


    摘要:【原创】转载请注明作者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:

    操作前:

    image

    操作后:

    20200606225004

     

    三、具体操作命令/截图

    退出虚拟机,然后开始一步一步如下操作:

    1. 首先找到你的CentOS系统所在位置,如果是默认的话,应该在用户目录的C:Users(用户,这里替换成你自己的)VirtualBox VMsCentOS8这个文件夹下,如下:

    20200606225317

    发现虚拟机磁盘文件是vdi格式的,所以在当前地址栏敲入cmd,进入windows下的cmd命令行,并且在当前目录下,然后敲入如下命令:

    VBoxManage modifyhd centos.vdi --resize 10000

    
    
    这里注意红色字代表10G,我是从原来8G扩展到10G,这里的单位是Mb。
    
    
    2. 打开VirtualBox,启动虚拟机,如果VirtualBox检测到硬盘容量变化,要求你确认,那就确认一下;
    
    
    3. 启动后,进入命令行,然后查看设备信息,使用命令lsblk(list block),即列出设备信息:
    image

    会发现,已经有sda1和sda2,这个时候,想当然认为增加的空间是sda3,使用pvcreate(physical volume create)创建物理卷:

    image

    这里出现文章开头的错误信息。

    我们仔细观察上面的设备信息,会发现新增加的容量并没有在列表中出现,尽管sda有10G,但是sda1和sda2加起来只有8G,所以另外2G应该是没有发现,我们需要先对磁盘进行操作。fdisk是Linux下的一个创建和维护分区表的命令,接下来我们使用它。

    4. 敲入fdisk /dev/sda命令,我们可以进入到fdisk的交互界面,注意确认自己操作正确前,不要按下w,有疑问按下q先退出搞清楚再重新进入继续操作:

    image

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

    image

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

    image

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

    pvcreate PV /dev/sda3

    image

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

    image

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

    vgextend cl /dev/sda3

    image

    9. 扩展到逻辑分区,使用lvextend(logical volume extend逻辑卷扩展)

    lvextend /dev/cl/root /dev/sda3

    image

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

    image

    这里我们发现磁盘没有按照预期的扩容,因为我们没有刷新逻辑分区的容量。

    11. 于是,刷新逻辑分区的容量,按照惯例使用resize2fs(调整ext2\ext3\ext4文件系统的大小,它可以放大或者缩小没有挂载的文件系统的大小),如下命令:

    resize2fs /dev/cl/root
    image

    发现找不到可用的超级系统块,这是什么鬼?

    我们使用df -Th查看,发现文件系统是xfs,原来,CentOS7开始,预设的文件系统就由原本的EXT4变成XFS文件系统了,所以resize2fs命令设置无效。

    image

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

    xfs_growfs /

    image

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

    df -h

    image

    好了,以上就是扩展磁盘容量的所有内容,如果你有疑问,或者有更好的解决方案,欢迎留言交流,谢谢!

  • 相关阅读:
    Debian下通过SSHFS/SHFS挂载远程文件
    Linux下如何查看CPU信息, 包括位数和多核信息
    Nexus One USB in Ubuntu 9.10
    育儿书籍阅读顺序的建议
    Android 2.1 中 JNI 层 camera 的应用
    Android开发工具使用之adb
    改变父母的十本书
    在Ubuntu下使用adb
    改变父母的十本书之《童年的秘密》
    Ubuntu Lucid(10.04)上安装Google Android SDK环境
  • 原文地址:https://www.cnblogs.com/johnthegreat/p/13060121.html
Copyright © 2020-2023  润新知