Centos 7 使用 LVM 扩容分区

Linux   2023-01-29 12:33   805   0  

背景需求

  • 公司的测试服务器用了好久了,里面文件很多,硬盘只有50G,应为是测试的,管理就没有那么严格,导致文件、日志越来越多。

  • 一开始我手动清除日志,后来发现这样太麻烦了,而且我还感觉这机器里有脏东西,清理不掉。

  • 于是开始扩容,一劳永逸。

基本概念

LVM(Logical Volume Manager)中文名叫逻辑卷管理器,它是Linux下对逻辑卷进行管理的一套程序,LVM分区,就是LVM管理下的一个逻辑卷。LVM通常涉及下面几个术语:

  • PP(physical Partition)
    物理分区,通常指硬盘中的主分区,逻辑分区。严格来讲整个硬盘或者其他能存东西的物理介质包括网络存储也能作为一个物理分区,但一定是有实物的

  • PV(Physical Volume)
    物理卷,就是在PP(物理分区)的基础上,使用pvcreate指令写入一些数据,转换为可供LVM识别后的物理介质。

  • VG(Volumes Group)
    卷组,由一个或多个PV组成的一个分组,形成一大块存储空间

  • LV(Logical Volume)
    逻辑卷,也就是LVM分区,在VG上划分一块空间称为逻辑卷,一个VG上只要还有空间就可以建立多个LV。在逻辑卷之上可以建立文件系统(ext3、ext4等),然后即可把数据存到分区里

  • PE(Physical Extent)
    具有唯一编号的PE是可以被LVM寻址的最小单元,其大小是在创建VG时确定的,默认为4MB(可通过vgcreate -s指定)。一个VG包含N个PE,从VG上划分一块空间作为LV时就是把其中一部分数量的PE标记为该LV。

它们之间的关系,可以简单地概括为:一块硬盘,被分成了几个分区(PP),然后把PP转换为PV,多个PV可以组成一个VG。组成VG后,就得到了一块很大的空间,它的大小是以PE的来衡量的。现在从VG上划分一块空间形成一个LV,然后就可以在LV上创建文件系统,进行读写数据。

查看当前分区情况

[root@test ]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0              11:0    1 1024M  0 rom  
xvdb            202:16   0  200G  0 disk 
├─xvdb1         202:17   0    1G  0 part /boot
└─xvdb2         202:18   0   49G  0 part 
  ├─centos-root 253:0    0   44G  0 lvm  /
  └─centos-swap 253:1    0    5G  0 lvm  [SWAP]
xvdc            202:32   0 1000G  0 disk 
└─vgdata-lvdata 253:2    0 1000G  0 lvm  /data
xvde            202:64   0  300G  0 disk

添加磁盘后

[root@test ]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0              11:0    1 1024M  0 rom  
xvdb            202:16   0  200G  0 disk 
├─xvdb1         202:17   0    1G  0 part /boot
├─xvdb2         202:18   0   49G  0 part 
│ ├─centos-root 253:0    0   44G  0 lvm  /
│ └─centos-swap 253:1    0    5G  0 lvm  [SWAP]
└─xvdb3         202:19   0  150G  0 part 
xvdc            202:32   0 1000G  0 disk 
└─vgdata-lvdata 253:2    0 1000G  0 lvm  /data
xvde            202:64   0  300G  0 disk

查看PV情况

[root@test ]# pvdisplay 
  --- Physical volume ---
  PV Name               /dev/xvdb2
  VG Name               centos
  PV Size               <49.00 GiB / not usable 3.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              12543
  Free PE               0
  Allocated PE          12543
  PV UUID               v7J4mo-Mndt-YsZD-eTRk-ixig-K25C-YhFEmh

  --- Physical volume ---
  PV Name               /dev/xvdc
  VG Name               vgdata
  PV Size               1000.00 GiB / not usable 4.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              255999
  Free PE               0
  Allocated PE          255999
  PV UUID               sYis9g-BmiM-17JW-xBHY-XogK-yoYF-Cy7pD9

查看VG情况

[root@test ]# vgdisplay
  --- Volume group ---
  VG Name               centos
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <49.00 GiB
  PE Size               4.00 MiB
  Total PE              12543
  Alloc PE / Size       12543 / <49.00 GiB
  Free  PE / Size       0 / 0   
  VG UUID               5ezkm8-5kuT-0Vs0-nqMH-9PxQ-906t-wd20Y6

  --- Volume group ---
  VG Name               vgdata
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <1000.00 GiB
  PE Size               4.00 MiB
  Total PE              255999
  Alloc PE / Size       255999 / <1000.00 GiB
  Free  PE / Size       0 / 0   
  VG UUID               y5rGh6-NPQ3-nvxJ-ytcO-M5La-51Y3-xjrFgA

查看LV情况

[root@test ]# lvdisplay 
  --- Logical volume ---
  LV Path                /dev/centos/swap
  LV Name                swap
  VG Name                centos
  LV UUID                qHsQZq-BuTH-PtOV-oz0V-as4m-8lo3-df2LRd
  LV Write Access        read/write
  LV Creation host, time localhost, 2017-11-03 13:59:29 +0800
  LV Status              available
  # open                 2
  LV Size                5.00 GiB
  Current LE             1280
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:1

  --- Logical volume ---
  LV Path                /dev/centos/root
  LV Name                root
  VG Name                centos
  LV UUID                gXT5ql-cQEr-azsh-SsoZ-RDri-Px1a-9NFzw1
  LV Write Access        read/write
  LV Creation host, time localhost, 2017-11-03 13:59:29 +0800
  LV Status              available
  # open                 1
  LV Size                <44.00 GiB
  Current LE             11263
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0

  --- Logical volume ---
  LV Path                /dev/vgdata/lvdata
  LV Name                lvdata
  VG Name                vgdata
  LV UUID                vq3i0C-8Dfp-PEsX-I6dK-nf1q-CU4h-RG0Apj
  LV Write Access        read/write
  LV Creation host, time test, 2017-11-07 10:54:36 +0800
  LV Status              available
  # open                 1
  LV Size                <1000.00 GiB
  Current LE             255999
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2

得到主要信息

PV Name /dev/xvdb2

VG Name centos

LV Name root

添加PV

fdisk 创建分区

[root@test ]# fdisk /dev/xvdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。


命令(输入 m 获取帮助):m
命令操作
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   g   create a new empty GPT partition table
   G   create an IRIX (SGI) partition table
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

命令(输入 m 获取帮助):p

磁盘 /dev/xvdb:214.7 GB, 214748364800 字节,419430400 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000bdf76

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

命令(输入 m 获取帮助):n
Partition type:
   p   primary (2 primary, 0 extended, 2 free)
   e   extended
Select (default p): p
分区号 (3,4,默认 3):3
起始 扇区 (104857600-419430399,默认为 104857600):   
将使用默认值 104857600
Last 扇区, +扇区 or +size{K,M,G} (104857600-419430399,默认为 419430399):
将使用默认值 419430399
分区 3 已设置为 Linux 类型,大小设为 150 GiB

命令(输入 m 获取帮助):t
分区号 (1-3,默认 3):3
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”

命令(输入 m 获取帮助):p

磁盘 /dev/xvdb:214.7 GB, 214748364800 字节,419430400 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000bdf76

    设备 Boot      Start         End      Blocks   Id  System
/dev/xvdb1   *        2048     2099199     1048576   83  Linux
/dev/xvdb2         2099200   104857599    51379200   8e  Linux LVM
/dev/xvdb3       104857600   419430399   157286400   8e  Linux LVM

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
正在同步磁盘。

重新探测分区

[root@test ]# partprobe /dev/xvdb

查看分区

[root@test ]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0              11:0    1 1024M  0 rom  
xvdb            202:16   0  200G  0 disk 
├─xvdb1         202:17   0    1G  0 part /boot
├─xvdb2         202:18   0   49G  0 part 
│ ├─centos-root 253:0    0   44G  0 lvm  /
│ └─centos-swap 253:1    0    5G  0 lvm  [SWAP]
└─xvdb3         202:19   0  150G  0 part 
xvdc            202:32   0 1000G  0 disk 
└─vgdata-lvdata 253:2    0 1000G  0 lvm  /data
xvde            202:64   0  300G  0 disk

创建PV

[root@test ]# pvcreate /dev/xvdb3
  Physical volume "/dev/xvdb3" successfully created.

将PV添加到VG里

[root@test ]# vgextend centos /dev/xvdb3 
  Volume group "centos" successfully extended
[root@test ]# vgdisplay
  --- Volume group ---
  VG Name               centos
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  4
  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               198.99 GiB
  PE Size               4.00 MiB
  Total PE              50942
  Alloc PE / Size       12543 / <49.00 GiB
  Free  PE / Size       38399 / <150.00 GiB
  VG UUID               5ezkm8-5kuT-0Vs0-nqMH-9PxQ-906t-wd20Y6

  --- Volume group ---
  VG Name               vgdata
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <1000.00 GiB
  PE Size               4.00 MiB
  Total PE              255999
  Alloc PE / Size       255999 / <1000.00 GiB
  Free  PE / Size       0 / 0   
  VG UUID               y5rGh6-NPQ3-nvxJ-ytcO-M5La-51Y3-xjrFgA

扩容LV

使用百分比扩容LV

[root@test ]# lvextend -l +100%FREE /dev/centos/root 
  Size of logical volume centos/root changed from <44.00 GiB (11263 extents) to 193.99 GiB (49662 extents).
  Logical volume centos/root successfully resized.

扩容文件系统

  • ext3/ext4

    • resize2fs

  • xfs

    • xfs_growfs

[root@test ]# xfs_growfs /dev/centos/root 
meta-data=/dev/mapper/centos-root isize=512    agcount=4, agsize=2883328 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=11533312, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=5631, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 11533312 to 50853888

查看磁盘情况

[root@test ]# df -Th
文件系统                  类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   xfs       194G   44G  151G   23% /
devtmpfs                  devtmpfs  5.8G     0  5.8G    0% /dev
tmpfs                     tmpfs     5.8G     0  5.8G    0% /dev/shm
tmpfs                     tmpfs     5.8G   65M  5.8G    2% /run
tmpfs                     tmpfs     5.8G     0  5.8G    0% /sys/fs/cgroup
/dev/xvdb1                xfs      1014M  142M  873M   15% /boot
/dev/mapper/vgdata-lvdata ext4      985G  677G  258G   73% /data
tmpfs                     tmpfs     1.2G     0  1.2G    0% /run/user/1001
tmpfs                     tmpfs     1.2G     0  1.2G    0% /run/user/0


博客评论
还没有人评论,赶紧抢个沙发~
发表评论
说明:请文明发言,共建和谐网络,您的个人信息不会被公开显示。