关闭虚拟机,添加一个要扩容的磁盘

磁盘类型跟原有磁盘类型保持一致

本篇介绍如何扩容“/”目录

  1. 查看文件系统

[root@localhost ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                  12G     0   12G    0% /dev
tmpfs                     12G     0   12G    0% /dev/shm
tmpfs                     12G   12M   12G    1% /run
tmpfs                     12G     0   12G    0% /sys/fs/cgroup
/dev/mapper/centos-root   44G   44G   81M  100% /               ######后面需要使用
/dev/sda1               1014M  151M  864M   15% /boot
tmpfs                    2.4G     0  2.4G    0% /run/user/0

  1. 查看分区,使用命令** fdisk -l **可以看到新加入的磁盘在 /dev/sdb 进行展示;
[root@localhost /]# fdisk -l

磁盘 /dev/sda:268.4 GB, 268435456000 字节,524288000 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x00098152

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200   104857599    51379200   8e  Linux LVM

磁盘 /dev/sdb:322.1 GB, 322122547200 字节,629145600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xce68971a

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048   629145599   314571776   83  Linux

磁盘 /dev/mapper/centos-root:321.0 GB, 321048805376 字节,627048448 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/mapper/centos-swap:5368 MB, 5368709120 字节,10485760 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

  1. 输入“p” 回车 ,#查看已分区数量;
  2. 输入“n”回车, #新增一个分区;
  3. 输入“p”回车,#使用默认分区号;
  4. 在起始扇区处回车(使用默认值);
  5. 在弹出last后回车
  6. 接着在输入“p”查看当前分区信息;
  7. 输入“w”写入磁盘信息并保存;
  8. 重启虚机格式化新建分区;

[root@localhost ~]# init 6  重启虚拟机

  1. vgdisplay
[root@localhost /]# vgdisplay
  --- Volume group ---
  VG Name               centos
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  7
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               348.99 GiB
  PE Size               4.00 MiB
  Total PE              89342
  Alloc PE / Size       77824 / 304.00 GiB
  Free  PE / Size       11518 / 44.99 GiB
  VG UUID               Sgtg4e-RfAY-ibF8-diCD-Lgqt-NPy1-f3K1sQ

  1. 初始化建立的分区;
pvcreate /dev/sdb1
  1. 把分区加入虚拟卷;
[root@localhost ~]# vgextend centos /dev/sdb1
Volume group "centos" successfully extended #命令执行结果,卷组“centos”成功扩展

  1. 再 lvextend -L +19G /dev/mapper/centos-root扩展卷组容量,磁盘 /dev/mapper/centos-root使用fdisk -l查询的结果;
[root@localhost ~]# lvextend -L +19G /dev/mapper/centos-root
  Insufficient free space: 5120 extents needed, but only 5119 available

  1. xfs_growfs /dev/mapper/centos-root 扩展磁盘空间;
[root@localhost ~]# xfs_growfs /dev/mapper/centos-root 

  1. 接下来就是挂载,df -h查看未挂载前磁盘情况
  2. 这边无法直接进行挂载,因为磁盘系统格式非ext4;
  3. 使用命令mkfs.ext4 /dev/sdb1 对硬盘进行格式化,格式为ext4

[root@localhost ~]# mkfs.ext4 /dev/sdb1

  1. mount对磁盘进行挂载

[root@localhost ~]# mount /dev/sdb1 /

pvs命令


pvs命令输出可以看出,系统中存在三个物理卷(PV):

/dev/sda2: 属于名为centos的卷组(VG),大小为49GB,没有空闲空间。

/dev/sdb1: 不属于任何卷组,大小为300GB,全部空闲。

[unknown]: 属于名为centos的卷组,大小为300GB,全部空闲。这个物理卷的设备路径显示为[unknown],表明系统无法识别或找到与之关联的实际设备。

结合你之前执行vgextend centos /dev/sdb1命令时遇到的错误,可以推测:

卷组centos原本包含两个物理卷:/dev/sda2和另一个UUID为h9gDN6-wvlC-CQMY-wwte-r5XH-3Lh8-QTPkYg的设备。

但是现在系统无法找到UUID为h9gDN6-wvlC-CQMY-wwte-r5XH-3Lh8-QTPkYg的设备,因此在pvs命令的输出中将其显示为[unknown]。

为了解决这个问题,你可以尝试以下步骤:

1、使用pvscan命令扫描系统中的所有物理卷。这个命令会强制LVM重新扫描设备,有时可以发现之前无法识别的设备。

2、如果pvscan命令没有找到丢失的设备,可以尝试使用vgreduce --removemissing centos命令从卷组centos中移除丢失的物理卷。这个命令会将卷组的元数据更新为不再包含丢失的物理卷。

3、使用vgextend centos /dev/sdb1命令将/dev/sdb1加入到卷组centos中。

4、使用pvs命令再次检查物理卷的状态,确认/dev/sdb1已经成功加入到卷组centos。

再出使用pvs命令

现在运行pvs命令的输出来看,问题已经解决。让我们来分析一下:

PV         VG     Fmt  Attr PSize    PFree   
/dev/sda2  centos lvm2 a--   <49.00g       0 
/dev/sdb1  centos lvm2 a--  <300.00g <300.00g
/dev/sda2物理卷属于卷组centos,大小为49GB,没有空闲空间。

/dev/sdb1物理卷现在也属于卷组centos,大小为300GB,全部空闲。

这表明你成功地将/dev/sdb1物理卷添加到了centos卷组中。卷组centos现在总共有大约349GB的空间,其中300GB是空闲的。

你可以使用这个新添加的空间来创建新的逻辑卷(LV),或者扩展现有的逻辑卷。例如,如果你想创建一个名为data的新逻辑卷,大小为100GB,可以使用以下命令:

lvcreate -L 100G -n data centos
这个命令会在centos卷组中创建一个名为data,大小为100GB的新逻辑卷。

如果你想扩展一个现有的逻辑卷,例如将名为root的逻辑卷扩展到100GB,可以使用以下命令:

lvextend -L 100G /dev/mapper/centos-root 
这个命令会将/dev/mapper/centos-root 逻辑卷的大小扩展到100GB。

扩展逻辑卷后,你还需要使用相应的文件系统工具(如resize2fs或xfs_growfs)来扩展逻辑卷上的文件系统,以便实际使用新增加的空间。

例如,如果/dev/mapper/centos-root 上使用的是ext4文件系统,你可以使用以下命令来扩展文件系统:

resize2fs /dev/centos/root

fsck命令

可以尝试以下步骤来修复文件系统:

首先,运行fsck(文件系统一致性检查)来检查和修复文件系统的错误:

fsck -y /dev/mapper/centos-root

-y选项表示自动修复错误。根据文件系统的大小和错误数量,这个过程可能需要一些时间。

如果fsck成功修复了错误,再次尝试使用resize2fs扩展文件系统:

resize2fs /dev/mapper/centos-root

如果fsck无法修复错误,或者resize2fs在修复后仍然失败,你可能需要考虑从备份中恢复文件系统。如果你没有最近的备份,你可以尝试使用一些高级的数据恢复工具,如testdisk或photorec来恢复尽可能多的数据。

如果数据恢复不可行,你可能需要重新格式化逻辑卷并重新安装系统。在这种情况下,你将丢失所有未备份的数据。

执行fsck -y /dev/mapper/centos-root查看文件系统类型

[root@localhost ~]# fsck -y /dev/mapper/centos-root
fsck,来自 util-linux 2.23.2
/sbin/fsck.xfs: XFS file system.

xfs_growfs 命令

从fsck的输出来看,你的根文件系统似乎是XFS文件系统,而不是我之前假设的ext4。对于XFS文件系统,fsck命令实际上并不执行任何修复操作,它只是检查文件系统是否是XFS。

对于XFS文件系统,你应该使用xfs_repair工具来尝试修复文件系统:

xfs_repair /dev/mapper/centos-root
如果xfs_repair成功修复了文件系统,你可以再次尝试使用xfs_growfs来扩展文件系统:

xfs_growfs /dev/mapper/centos-root
请注意,与ext4不同,XFS文件系统不需要卸载就可以扩展,所以你可以在挂载状态下使用xfs_growfs。

如果xfs_repair无法修复文件系统,情况可能会比较复杂。XFS是一个日志文件系统,它使用日志来保证元数据操作的一致性。如果日志损坏,文件系统可能会进入一种不一致的状态。

在这种情况下,你可能需要使用xfs_repair的-L选项来重建文件系统的日志:

xfs_repair -L /dev/mapper/centos-root

结束

最后使用df -h 查看操作结果

[root@localhost /]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                  12G     0   12G    0% /dev
tmpfs                     12G     0   12G    0% /dev/shm
tmpfs                     12G   12M   12G    1% /run
tmpfs                     12G     0   12G    0% /sys/fs/cgroup
/dev/mapper/centos-root  299G   44G  256G   15% /
/dev/sda1               1014M  151M  864M   15% /boot
tmpfs                    2.4G     0  2.4G    0% /run/user/0

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐