LinuxVPS/云主机建站系统

如何在Linux主机中进行硬盘动态扩容:LVM逻辑卷扩大缩小大法

最近新上线SSD服务器,SSD成本太高,所以上线SSD硬盘不能像HDD那样直接来个几TB容量,只能是根据业务的需要来逐渐扩容硬盘,于是本篇文章的主题就这样产生了:Linux动态扩容硬盘容量,保留原有的数据不变。

传统意义上的VPS硬盘扩容使用的是挂载,即将某一个新硬盘重新划分为另一个分区,然后将该分区挂载到原来的硬盘的某一个目录下。这样的做法简单方便,如果仅仅是用于存储扩容还是可行的,但是对于多需求的存储业务就力不从心了。

而对硬盘进行动态扩容,则是保留原有的数据不变的情况下,增加或者减少硬盘的空间容量,从而达到满足我们日常建站需要。这篇文章就来介绍Linux LVM管理磁盘空间的方法,LVM是Linux环境中对磁盘分区进行管理的一种机制。

如何在Linux主机中进行硬盘动态扩容:LVM逻辑卷扩大缩小大法

Linux LVM是建立在硬盘和分区之上、文件系统之下的一个逻辑层,可提高磁盘分区管理的灵活性。对于Linux磁盘空间管理的问题,我们还可以通过清理、挂载云盘、共享等方式来解决空间不足的情况,这里有:

  1. 解决因Linux系统磁盘空间不足导致No Space Left on Device错误(含inode占用100%问题)
  2. Linux简单共享目录三种方法:NFS挂载/GlusterFS存储/samba共享

一、resize2fs命令直接扩容

命令使用示例:

  1. resize2fs -f /dev/vda1 #针对的是ext2、ext3、ext4文件系统
  2. #参数说明
  3. -d:打开调试特性;
  4. -p:打印已完成的百分比进度条;
  5. -f:强制执行调整大小操作,覆盖掉安全检查操作;
  6. -F:开始执行调整大小前,刷新文件系统设备的缓冲区。

如果你的Linux分区采用了LVM,那么你可以直接使用resize2fs命令来扩容原有的磁盘。这种情况一般见于:用df -h命令查看硬盘的容量小于用fdisk –l命令查看硬盘分区的容量,如下图:

如何在Linux主机中进行硬盘动态扩容:LVM逻辑卷扩大缩小大法

执行resize2fs命令扩容命令后,再次查看,硬盘分区的容量增加了。

如何在Linux主机中进行硬盘动态扩容:LVM逻辑卷扩大缩小大法

二、新建分区挂载给硬盘扩容

如果你的主机商在原来分配硬盘时没有全部做好分区,或者是重新划分了硬盘大小,这时你会发现用df -h命令查看硬盘的容量等于用fdisk –l命令查看硬盘分区的容量,但是小于fdisk的总空间, 如下图:

如何在Linux主机中进行硬盘动态扩容:LVM逻辑卷扩大缩小大法

这时候我们就可采用新建分区然后挂载给硬盘达到扩容的目的了。执行命令:fdisk /dev/vda(根据实际调整硬盘路径),进入fdisk分区,依次输入n(新建分区)→p(主分区)→1.2.3(分区号)→回车→p(查看分区)→w(保存)。

如何在Linux主机中进行硬盘动态扩容:LVM逻辑卷扩大缩小大法

新建的分区不是LVM格式,我们还需要再次进入到fdisk命令,然后输入:t(转换格式)→分区号1.2.3→8e(LVM)→p(查看分区)→w(保存)。如下图:

如何在Linux主机中进行硬盘动态扩容:LVM逻辑卷扩大缩小大法

利用上面的方法,我们将多出来的3GB硬盘新建了一个sda3的分区,并设置为LVM格式。重启VPS主机生效,或者执行命令(该命令在CentOS 6可能会不支持):partprobe。(如果提示该命令不存在,先执行安装:yum y install parted

如何在Linux主机中进行硬盘动态扩容:LVM逻辑卷扩大缩小大法

使用以下命令将整个分区创建为LV逻辑卷:(关于PV、VG、LV的详细介绍请参考第三部分内容)

  1. pvcreate /dev/vda3 //创建物理卷
  2. vgcreate qyfoutt /dev/vda3 //创建逻辑卷组
  3. vgchange -ay qyfoutt //激活逻辑卷组
  4. vgdisplay qyfoutt | grep “Total PE” //查看该卷组所有的PE
  5. lvcreate -l 17919 -n qimm qyfoutt //创建逻辑卷
  6. mkfs.ext4 /dev/qyfoutt/qimm //格式化逻辑卷

这里我创建一个名为qyfoutt的逻辑卷组,共70GB可供分配。然后创建了一个名为qimm的逻辑卷,将70GB都赋予给它。开机自动挂载,新增加的/dev/qyfoutt/qimm 分区挂载到某一个目录下了。格式如下:

  1. vim /etc/fstab
  2. /dev/sdb1(磁盘分区) /data1(挂载目录-需要提前创建好) ext4(文件格式,也可写ext3)defaults 0 0
  3. /dev/qyfoutt/qimm /ttfou ext4 defaults 0 0

挂载所有目录:mount -a(注意是英文的-)挂载成功。

如何在Linux主机中进行硬盘动态扩容:LVM逻辑卷扩大缩小大法

三、新增硬盘直接扩容到原硬盘上

如果你购买了第二块硬盘,这时候不需要挂载了,直接将新硬盘的空间容量增加到原硬盘上。如下图,已有了一个256GB的硬盘(已划成3个分区,其中sda3为lvm格式)。按照上面新建分区的方法,将整个硬盘划分为一个分区:sdb1。

如何在Linux主机中进行硬盘动态扩容:LVM逻辑卷扩大缩小大法

3.1  新建PV物理卷

基本命令:

  1. pvcreate /dev/sda3 #新建PV
  2. #有两个以上的分区还可以一起新建PV
  3. pvcreate /dev/sda3 /dev/sdb1
  4. -f:强制创建物理卷,不需要用户确认;
  5. -u:指定设备的UUID;
  6. -y:所有的问题都回答“yes”;
  7. -Z:是否利用前4个扇区。
  8. pvs #查看pv基本信息
  9. pvdisplay #查看pv详细信息

如下图给sdb1创建了PV物理卷。

如何在Linux主机中进行硬盘动态扩容:LVM逻辑卷扩大缩小大法

3.2  扩容VG卷组

按照上面的方法,我们已经创建了PV、VG和LV,并且将LV挂载到了某一个目录。现在把将建的PV加入到原来的VG中。基本命令示例:

  1. vgcreate wzfou /dev/sda3 /dev/sdb1 #将两个PV卷加入到卷组wzfou
  2. -l:卷组上允许创建的最大逻辑卷数;
  3. -p:卷组中允许添加的最大物理卷数;
  4. -s:卷组上的物理卷的PE大小。
  5. vgs或者vgdisplay来查看创建的卷组
  6. vgextend qyfoutt /dev/sdb1 #扩容VG组

如下图我把sdb1和sda3加入了同一个VG组中。

如何在Linux主机中进行硬盘动态扩容:LVM逻辑卷扩大缩小大法

s可以指定PE大小,例如我们在某些云主机中就要求PE为128MB,这里我们就可以通过此命令来指定PE大小了。后期如果还有新的PV的话,可以继续往VG里加:

如何在Linux主机中进行硬盘动态扩容:LVM逻辑卷扩大缩小大法

3.3  扩容LV逻辑卷

上面我们已经扩容了VG卷容量,现在我们只需要将原来的LV扩容到所有的VG卷容量即可,命令如下:

  1. vgdisplay qyfoutt | grep “Total PE” #查看所有PE
  2. lvresize -l 1279 /dev/qyfoutt/qimm #将VG组所有空间都给LV,1279是最后一个PE
  3. resize2fs /dev/qyfoutt/qimm #重设LV大小

示例:VG组有5GB容量,VG下的LV只有3GB。

如何在Linux主机中进行硬盘动态扩容:LVM逻辑卷扩大缩小大法

现在将VG组剩余的2GB空间全部给LV,完成LV的扩容。

如何在Linux主机中进行硬盘动态扩容:LVM逻辑卷扩大缩小大法

四、总结

如果要给硬盘扩容,建议使用LVM的方式来管理硬盘扩容,后期想要再增加硬盘对于LVM来说是一个件非常简单的事情。扩容的基本顺序是:增加PV→VG组扩容→LV扩容

增加PV有两种方式:一种是新增硬盘再做分区,另一种是在原有的硬盘上新建分区。无论用哪种方式给硬盘扩容,首先要创建物理卷PV,之后创建卷组VG,最后才创建逻辑卷LV。

 

(END)

 

文章出自:挖站否 https://wzfou.com/linux-lvm/,版权所有。