记录一次华为云服务器给根目录扩容

基础知识:

PV(物理卷、硬盘、物理磁盘)新的物理硬盘需要转化成lvm可被识别的状态,将磁盘的system id转化成8e(lvm可识别码),再通过pvcreate转化成pv,这样才能Udine磁盘加以利用。
VG(磁盘组、卷组)由PV组成。一个卷组由多个物理硬盘组成,即1VG=n*PV。然后VG又会被看成一个整体被分为lv1、lv2......
PP(物理分区)把物理卷划分为连续大小相等存储单位、一个卷组中的物理分区大小相等
LP(逻辑分区)映射物理分区的逻辑单位,一个逻辑分区可以对应一个或者多个物理分区
LV(逻辑卷)是指卷中由多个逻辑分区组成的集合。逻辑卷中的逻辑分区是连续的,但是对应的物理分区是不连续的,可以在一个磁盘也可以在不同的磁盘
fs(文件系统)是指在AIX系统中面向用户的存储空间,一个逻辑卷(LV)只能创建一个文件系统(fs),也就是说一个fs对应一个LV,如果删除逻辑卷LV,那么文件系统也将被全部删除。

存储结构:

逻辑卷lv 不能被直接访问,是生设备(裸设备),逻辑卷上建文件系统,文件系统可以被用户访问,是熟设备。文件系统里建目录,目录下建文件。

物理卷,卷组,物理分区,逻辑卷,逻辑分区,逻辑卷是面向操作系统的概念
文件系统,目录,文件是面向用户的概念

<下面模拟真实环境操作>

现状:
磁盘有2块 sda(30G) 、sdb(20G), 现只有sda被使用,因为root分区马上就满了所以准备对磁盘sda扩容,将sdb合并到sda中

原理:
使用lvm对磁盘扩容
通过转置sdb的pe到sda中达到对sda扩容的目的。

方案一,给文件系统扩容

进入服务器,lsblk来观察磁盘信息,如下图,你可以看到有两块硬盘,sda30G、sdb20G。

你也可以用fdisk -l来查看分区信息.30G的硬盘已经分给了sda1、sda2,sda1区的类型是83,sda2的类型是8e。而新添加的磁盘sdb磁盘下面没有任何分区的信息,说明还没有分区。

下面给第二块硬盘sdb分区,直接输入fdisk /dev/sdb,然后进行具体的分区操作

输入n选择创建一个分区

连续输入三次回车,都是用默认值,来创建一个主分区

现在df -h一定回看到sdb下面有一个分区sdb1,并且已经将所有的空间全部分给sdb1。这里直接输入t修改创建的分区格式,显示已有一个分区被选择

输入8e就可以把分区格式修改为Linux LVM格式

最后输入w保存推出就完成了分区的过程

fdisk -l再来看一下磁盘的信息,就可以看到硬盘sdb下面多了一个分区sdb1,并且分区格式是8e Linux LVM

检查一下LVM安装了没有,没有的话必须要安装。

yum -y install lvm2

下面开始使用LVM来进行动态卷的管理,使用pvcreate来创建物理卷,创建后使用pvdisplay来查看创建的物理卷信息

下面将刚创建的pv(物理卷)添加到vg(卷组),可以通过vgdisplay查看组信息。

逻辑卷扩容


【注】如果这一步误操作给另一个逻辑卷扩容了 lvextend -l 5120 /dev/mapper/centos-home 怎么办?
直接给这个逻辑卷动态缩小容量 lvresize -l -5120 /dev/mapper/centos-home,(或者lvresize -L -50G /dev/mapper/centos-home)用pvdisplay再次查看一下 此时会发现PV Free size又回来了...如果/home还是很大 可以继续缩...然后重新给centos-root逻辑卷扩容 lvextend -l +5120 /dev/mapper/centos-root

lvresize -l 是指定PE数大小
lvresize -L 可以是可以带单位的

通过lvdisplay查看逻辑卷信息

接下来扩容文件系统呢

【注】如果文件系统是xfs格式,用xfs_growfs;如果是ext4格式,用resize2fs
然后用df -hT查看文件系统容量大小,发现根目录扩容成功的呀!从之前的27G涨到了47G

至此扩容完成了哦。。。。

下面来说一下之前为什么不采用挂载的方式完成扩容。

试想,扩容前的服务器还跑着服务呢,fdfs产生的图片数据以及别的数据都存在某个路径,这个是不变的除非修改服务的配置文件。

方案二 挂载的方式

从第12步骤开始,倘若第12步是用vgcreate重新创建一个新的卷组VolumeGroup01,再将这个卷组通过lvcreate来创建逻辑卷lv1、lv2.....最后通过格式化这个逻辑卷lv1去挂载到根下某级目录(命令在下面), 严格上说这不是给根目录扩容,而且你fdfs产生的数据呢?仍然存在原始的路径,这样的话新挂载的磁盘路径是没有意义的,服务配置文件已经把新产生的数据存在路径写死了。只要服务在跑,新产生的数据必然会与以前一样产生在之前的路径,而与你挂载磁盘的路径不同。所以这种方法是不可行的,只能是直接将根目录扩容。想一想,我服务产生的新数据与你挂载的磁盘有什么关系呢?你容量再大也不是我的呀。。。挂载只是磁盘分区挂载,并不能达到扩容的目的!!! 还有,我直接挂载到服务产生数据的路径去不就好了吗?服务在跑是挂不上去滴!即使停掉服务,当你进入到那个路径时候,首先出现的不是fdfs数据而是lost+found这个目录,所有的东西都在这个路面,没错路径又变动了,所以这种方案是绝对行不通的!

创建新的卷组

vgcreate VolumeGroup01 /dev/sdb1
vgdisplay

创建逻辑卷lv1

lvcreate -l 100%FREE -n lv1 VolumeGroup01
lvdisplay

然后fdisk -l看分区信息,会发现lv1已经被显示出来了,然后格式化lv1后挂载使用

mkfs.ext4 /dev/VolumeGroup01/lv1
mount /dev/VolumeGroup01/lv1 /homjun

【注】关于扩容的操作与物理机一样,命令也一样...

相关博客:

  • 这个小伙伴是本文第二种方案,选择挂载的方式

https://www.cnblogs.com/Rocky_/p/9430007.html

  • 这好像是妹纸写的

https://blog.csdn.net/ty555ty/article/details/80955091?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control

  • 删除逻辑卷、卷组、物理卷看这里

https://www.cnblogs.com/lqynkdcwy/p/9510768.html

  • 还有一篇阿里云服务器扩容的 感觉不太一样

https://blog.51cto.com/dreamlinux/1896100

原文地址:https://www.cnblogs.com/homjun/p/14266004.html