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

导读

传统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。查看系统的磁盘分区结构布局:

d714b2c76782b0a2edce38f8d1a5d97a.png

进入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的具体情况:

527864cb1740c91175391bbb20a7663b.png

可以看到,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:

805e34ff44fb4f5624b81e30703589b7.png

e436075c76ec516bc4bd56e9311198bb.png

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

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未分配空间。

ec3ebf226be7bb30cd8ff86af3499159.png

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

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

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

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

9eff65652dc927b5fa9d73d71e9060e1.png

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

9bdd966b7f7e8dc2caf2c0d5a3350006.png

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

d7a27826c562a59ad42429aaa5dbcdba.png

卸载光盘,重启虚拟机进入本地系统,查看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期。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值