Linux LVM磁盘空间扩容的新方法

原文地址:http://blog.51cto.com/marcohwt/1699552

导读

传统LVM扩容方法需要增加PV磁盘,扩容多次后,服务器的磁盘数量会越来越多,容易增加日后维护存储和磁盘布局的难度。当服务器是虚拟机,或者使用SAN/NAS存储的物理机时,由于分配给服务器磁盘空间可以直接扩容,只需增加原本正在使用中的PV磁盘空间即可完成扩容,这样分配给服务器的磁盘数量较少,磁盘布局结构较简单。

 

LVM扩容方法介绍

  传统的LVM扩容方法,是通过添加新的磁盘或者磁盘分区来建立新的PV,再将PV加入到VG中,从而扩大VG空间,再对相关的LV进行扩容,最后增加文件系统空间完成整个扩容工作。这种方法比较适合使用本地存储的物理机,因为磁盘空间都是固定的,只能通过增加硬盘来增加磁盘空间,这种方法可以在线完成,无需停机重启。但扩容多次后,VG中会存在多个PV,磁盘逻辑结构变得复杂,容易增加日后维护存储和磁盘分区布局的难度。

  当服务器是虚拟机,或者使用SAN/NAS存储的物理机时,由于分配给服务器的磁盘空间可以直接扩容,只需增加原本正在使用中的磁盘空间即可,无需再添加额外磁盘作为PV,这样分配给服务器的磁盘数量较少,磁盘布局结构较简单。

  本文将介绍如何通过使用GParted分区软件扩大PV空间的方式来扩容整个VG,从而最终扩大文件系统的使用空间。

  

扩容PV步骤 

  我们以运行在ESXi虚拟机上的Centos/RHEL 7版本Linux为例,该虚拟机安装了两块硬盘,大小分别为10GB和5GB,作为PV,建立了一个VG。

  1. 查看系统的磁盘分区结构布局:

     

  wKioL1YLfVPTY9skAAOcK511YJk228.jpg  

 

进入parted分区管理界面,键入print all查看机器的分区情况,可以看到该机器有两块硬盘/dev/sda和/dev/sdb,其中sda有两个分区,分区sda1为boot启动分区,分区sda2为LVM PV分区,lvm的VG(centos)由两个LV(root和swap)组成。另外,parted无法识别/dev/sdb,显示错误“unrecognised disk label”。

  分别键入pvs、lvs和vgs命令查看LVM的具体情况:

wKioL1YLfruRyevSAAIz7IvNYsQ437.jpg

 

 

  可以看到,sda2和sdb均为LVM VG中的PV,sda2位sda磁盘中的第二个分区,而对于使用sdb整块硬盘建立的PV,parted是无法识别的,因为该磁盘为没有建立文件系统的裸设备。LVM中有一个VG(centos),VG的大小为14.5G,该VG由两个LV,root和swap组成。

 

2. 增大虚拟机的两块硬盘大小。

使用Vsphere Client连接Vcenter,右键点击该虚拟机选择“编辑设置”,在“硬件”选项卡中,分别将硬盘1和硬盘2的大小各增加5GB:

 

wKiom1YLf66w16_vAAJ1GYypXHk027.jpg

 

wKioL1YLf9-g5IIwAAJusLn2JhU974.jpg

  

可以键入以下命令系统能够马上识别新增空间:

echo '1' > /sys/class/scsi_disk/0\:0\:0\:0/device/rescan 

echo '1' > /sys/class/scsi_disk/0\:0\:1\:0/device/rescan

又或者直接重启系统,让内核识别新增空间。

 

运行parted,键入print all free,发现磁盘大小已经增加,而且在磁盘/dev/sda尾部有5GB未分配空间。

 

wKioL1YLgMSxnEiSAASBEEJJM9A404.jpg

3. 使用GParted分区软件进行分区

访问http://www.gparted.org 下载最新版GParted Live CD,比如笔者下载的GParted镜像文件是gparted-live-0.21.0-1-i586.iso。

将该ISO文件上传到ESX主机的数据存储中,然后挂载到虚拟机的光驱中,接着调整启动顺序用该CD引导启动该虚拟机。

Live CD启动后能开到该机器硬盘的分区结构和未分配空间:

 

wKiom1YLgbuRuGWZAAJCvXv5Q-E095.jpg

 

鼠标右键点击/dev/sda2分区,用鼠标点击右边的三角符号,拉动鼠标将分区扩容5GB,点击“调整大小/移动”,最后点击工具栏上的“Apply”应用更改。

 

wKioL1YLgpSS1DGRAAJrJmlUYic871.jpg

 

点击工具栏最右边的按钮选择/dev/sdb硬盘,会看到sdb硬盘所有的空间都是未分配,因为sdb磁盘是直接在上面建立PV的裸设备磁盘,这种磁盘没有分区表和分区,GParted无法识别并进行分区。

 

wKiom1YLgeDDUR5pAAHOAEXgCW8389.jpg

 

卸载光盘,重启虚拟机进入本地系统,查看PV空间:

[root@user ~]# pvs

  PV        VG     Fmt  Attr PSize PFree

  /dev/sda2 centos lvm2 a--  14.51g 5.00g

  /dev/sdb  centos lvm2 a--   5.00g    0

使用GParted,sda2扩容成功。

 

键入pvresize命令扩容sdb:

[root@user ~]# pvresize -v /dev/sdb

    Using physical volume(s) on command line

    Archiving volume group "centos"metadata (seqno 6).

    Resizing volume "/dev/sdb" to10485760 sectors.

    Resizing physical volume /dev/sdb from 0 to2559 extents.

    Updating physical volume"/dev/sdb"

    Creating volume group backup"/etc/lvm/backup/centos" (seqno 7).

  Physical volume "/dev/sdb" changed

  1 physical volume(s) resized / 0 physicalvolume(s) not resized

 

键入pvs、vgs确认扩容后的空间:

[root@user ~]# pvs

  PV        VG     Fmt  Attr PSize PFree

  /dev/sda2 centos lvm2 a--  14.51g 5.00g

  /dev/sdb  centos lvm2 a--  10.00g 5.00g

[root@user ~]# vgs

  VG    #PV #LV #SN Attr   VSize  VFree

  centos  2   2   0 wz--n- 24.50g 10.00g

可以看到两个PV和VG中都有可分配的剩余空间了,PV扩容完毕。

 

LV及文件系统扩容

1. 扩容LV

   将LV swap扩容到3GB,另外的LV root则分配剩余的全部空间。

   查看原来LV空间情况:

[root@user ~]# lvs

  LV  VG     Attr       LSize Pool Origin Data%  Move LogCpy%Sync Convert

  root centos -wi-ao---- 13.50g                                            

  swap centos -wi-ao----  1.00g          

       

现在的root LV大小为13.5G,swap LV大小为1G。

 

将LV swap的空间增加2GB:

[root@user ~]# lvextend -L +2g /dev/centos/swap

  Extending logical volume swap to 3.00 GiB

  Logical volume swap successfully resized

 

查看VG剩余PE数量:

 --- Volume group ---

  VG Name               centos

  System ID            

  Format                lvm2

  Metadata Areas        2

  Metadata Sequence No  8

  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               24.50 GiB

  PE Size               4.00 MiB

  Total PE              6273

  Alloc PE / Size       4225 / 16.50 GiB

  Free PE / Size       2048 / 8.00 GiB

  VG UUID              U8Io1J-a7CY-X81w-lpiA-wj5A-3XOa-vKlWFL

剩余2048个PE。

 

扩容root LV:

[root@user ~]# lvextend -l +2048 /dev/centos/root

  Extending logical volume root to 21.50 GiB

  Logical volume root successfully resized

 

查看LV大小确认:

[root@user ~]# lvextend -l +2048 /dev/centos/root

  Extending logical volume root to 21.50 GiB

  Logical volume root successfully resized   

两个LV已经扩容成功。

 

2. 扩容根文件系统

LV扩容后需文件系统还没有扩容,键入df –h查看空间:

[root@user ~]# df -h

Filesystem               Size  Used Avail Use% Mounted on

/dev/mapper/centos-root   14G 4.2G  8.5G  33% /

devtmpfs                 489M     0 489M   0% /dev

tmpfs                    498M   80K 498M   1% /dev/shm

tmpfs                    498M  7.0M 491M   2% /run

tmpfs                    498M    0  498M   0% /sys/fs/cgroup

/dev/sda1                477M   95M 354M  22% /boot

根分区现在大小是14GB。

 

使用resize2fs命令对跟分区文件系统进行在线扩容:

[root@user ~]# resize2fs -p /dev/centos/root

resize2fs 1.42.9(28-Dec-2013)

Filesystem at/dev/centos/root is mounted on /; on-line resizing required

old_desc_blocks = 2,new_desc_blocks = 3

The filesystem on/dev/centos/root is now 5637120 blocks long.

 

再次查看分区大小:

[root@user ~]# df -h

Filesystem               Size  Used Avail Use% Mounted on

/dev/mapper/centos-root   22G 4.2G   16G  21% /

devtmpfs                 489M     0 489M   0% /dev

tmpfs                    498M   80K 498M   1% /dev/shm

tmpfs                    498M  7.0M 491M   2% /run

tmpfs                    498M     0 498M   0% /sys/fs/cgroup

/dev/sda1                477M  95M  354M  22% /boot

分区大小已经扩容为22GB。

 

3. 扩容swap分区

Swap分区不能直接扩容,需先将其删除再重建。

分别使用free –m和swapon –s命令查看swap分区大小。可以看到这时候swap分区大小还是1GB。

[root@user ~]# free -m

            total       used       free    shared    buffers     cached

Mem:       994        635        358    7         55         204

-/+ buffers/cache:      375       618

Swap:       1023       0      1023

 

[root@user ~]# swapon -s

Filename                       Type           Size    Used   Priority

/dev/dm-0                      partition      1048572 0       -1

 

 

停止swap分区:

[root@user ~]# swapoff -v /dev/centos/swap

swapoff /dev/centos/swap

 

重新建立swap分区:

[root@user ~]# mkswap /dev/centos/swap

mkswap:/dev/centos/swap: warning: wiping old swap signature.

Setting up swapspaceversion 1, size = 3145724 KiB

no label,UUID=6dca44dc-9bf2-40b2-b0c8-d73cbe409002

 

启用Swap分区:

[root@user ~]# swapon -v /dev/centos/swap

swapon /dev/centos/swap

swapon:/dev/mapper/centos-swap: found swap signature: version 1, page-size 4, samebyte order

swapon:/dev/mapper/centos-swap: pagesize=4096, swapsize=3221225472, devsize=3221225472

 

再次查看swap分区大小,swap分区已变成了3GB:

[root@user ~]# swapon -s

Filename                                Type            Size    Used   Priority

/dev/dm-0                               partition       3145724 0       -1

[root@user ~]# free -m

             total       used       free    shared    buffers     cached

Mem:         994        636       357          7         55        204

-/+ buffers/cache:      376        617

Swap:       3071          0       3071

 

 

注意事项:

  建立LVM时,若使用整块硬盘作为PV,应先在磁盘上建立分区表和分区,再设置分区的lvm标志位(Parted中使用set lvm on,fdisk中按t,然后设置8e ),不然的话就会出现本例子中sdb磁盘无法被GParted或者其他分区软件识别的情况,很容易被误操作。另外,对任何分区操作前应先对分区数据进行备份。

 

经验总结:

  通过直接增大PV空间来对LVM磁盘分区进行扩容,可以减少PV磁盘数量,使磁盘布局简单化,方便存储以及磁盘日后的维护工作。但需要使用GParted光盘引导服务器重启进行分区,若服务器不能停机则不太适合该方法。这种方法比较适合使用虚拟机或者共享存储的机器,磁盘可以直接扩容,加上虚拟机环境机器启动速度较快,且GParted分区简单快速,分区所需的停机时间比较短。

 

原文为博主所著,并刊登于《网络运维与管理》杂志2015.07期。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值