lvm逻辑卷在线调整

 第1章 lvm概念

1.1 介绍

LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。

LVM最大的特点就是可以对磁盘进行动态管理。因为逻辑卷的大小是可以动态调整的,而且不会丢失现有的数据。如果我们新增加了硬盘,其也不会改变现有上层的逻辑卷。作为一个动态磁盘管理机制,逻辑卷技术大大提高了磁盘管理的灵活性。如果期望扩容云盘的IO能力,则可以通过将多块容量相同的云盘做RAID0。

1.2 术语

*物理存储介质(PhysicalStorageMedia)

指系统的物理存储设备:磁盘,如:/dev/hda、/dev/sda等,是存储系统最底层的存储单元

*物理卷(Physical Volume,PV)

指磁盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。

*卷组(Volume Group,VG)

类似于非LVM系统中的物理磁盘,其由一个或多个物理卷PV组成。可以在卷组上创建一个或多个LV(逻辑卷)。

*逻辑卷(Logical Volume,LV)

类似于非LVM系统中的磁盘分区,逻辑卷建立在卷组VG之上。在逻辑卷LV之上可以建立文件系统(比如/home或者/usr等)。

*物理块(Physical Extent,PE)

每一个物理卷PV被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。所以物理卷(PV)由大小等同的基本单元PE组成。

*逻辑块(Logical Extent,LE)

逻辑卷LV也被划分为可被寻址的基本单位,称为LE。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。

1.3 结构图

 

 

 

 

第2章 创建LVM卷

2.1 创建物理卷PV

查看当前现有磁盘信息 lsblk –f    ( 挂载信息df –hT )

[root@wu ~]# lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sr0     11:0    1  1024M  0 rom 
sda      8:0    0   120G  0 disk
├─sda1   8:1    0   200M  0 part /boot
├─sda2   8:2    0   768M  0 part [SWAP]
└─sda3   8:3    0 119.1G  0 part /
sdb      8:16   0     2G  0 disk
└─sdb1   8:17   0     2G  0 part
sdc      8:32   0    20G  0 disk
sdd      8:48   0    10G  0 disk

  

root执行以下命令创建PV卷

pvcreate  <磁盘路径1> ... <磁盘路径N>

注释: 此处需要填写设备(分区)名称,如需添加多个盘,则可添加多盘设备名称,中间以空格间隔

pvcreate /dev/sdb1 /dev/sdc

 

 

 正常操作如上图; 以下为问题解释

[root@wu test]# pvcreate /dev/sdb /dev/sdc
  Device /dev/sdb not found (or ignored by filtering). ## 因为设备已经分区导致的
  Physical volume "/dev/sdc" successfully created
[root@wu test]# lvmdiskscan |grep LVM
  /dev/sdc   [      20.00 GiB] LVM physical volume
  1 LVM physical volume whole disk
  0 LVM physical volumes
[root@wu test]# pvcreate /dev/sdb1           ##  因为分区在挂载着文件系统导致
  Can't open /dev/sdb1 exclusively.  Mounted filesystem?
[root@wu ~]# umount /dev/sdb1
[root@wu ~]# df -hT
Filesystem     Type   Size  Used Avail Use% Mounted on
/dev/sda3      ext4   118G  9.1G  103G   9% /
tmpfs          tmpfs  931M     0  931M   0% /dev/shm
/dev/sda1      ext4   190M   40M  141M  22% /boot
[root@wu ~]# pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created

 

查看LVM物理卷PV

[root@wu ~]# lvmdiskscan |grep LVM
  /dev/sdb1  [       2.00 GiB] LVM physical volume
  /dev/sdc   [      20.00 GiB] LVM physical volume
  1 LVM physical volume whole disk  ##整个设备物理卷
  1 LVM physical volume             ## 物理卷
[root@wu ~]# pvs
  PV         VG   Fmt  Attr PSize  PFree
  /dev/sdb1       lvm2 ----  2.00g  2.00g
  /dev/sdc        lvm2 ---- 20.00g 20.00g
[root@wu ~]# pvscan
  PV /dev/sdb1                      lvm2 [2.00 GiB]
  PV /dev/sdc                       lvm2 [20.00 GiB]
  Total: 2 [22.00 GiB] / in use: 0 [0   ] / in no VG: 2 [22.00 GiB]
[root@wu ~]#

  

 

2.2 创建卷组 VG

执行vgcreate命令,创建卷组(VG)

vgcreate  <卷组名>  <物理卷路径1>……<物理卷路径N>

注释: 卷组名可自定义; 物理卷路径填盘的物理卷名称,多个物理卷直接以空格间隔
[root@wu ~]# vgcreate  lvm_vg01  /dev/sdb1  /dev/sdc
  Volume group "lvm_vg01" successfully created
[root@wu ~]#

 

创建卷组(VG)成功后,可通过vgs,vgdisplay命令查看卷组信息

[root@wu ~]# vgs
  VG       #PV #LV #SN Attr   VSize  VFree
  lvm_vg01   2   0   0 wz--n- 21.99g 21.99g
[root@wu ~]# vgdisplay
  --- Volume group ---
  VG Name               lvm_vg01
  System ID            
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               21.99 GiB
  PE Size               4.00 MiB
  Total PE              5630
  Alloc PE / Size       0 / 0  
  Free  PE / Size       5630 / 21.99 GiB
  VG UUID               2Kq2lC-Rv0C-Axya-iUsF-76Cr-f7mb-2TNCoF
[root@wu ~]# vgscan

 

执行vgextend 命令,可以向卷组(VG)中添加物理卷(PV)

vgextend 卷组名称 <物理卷路径1>……<物理卷路径N>

[root@wu ~]# pvcreate /dev/sdd
  Physical volume "/dev/sdd" successfully created
[root@wu ~]# vgextend lvm_vg01 /dev/sdd
  Volume group "lvm_vg01" successfully extended
[root@wu ~]# vgs
  VG       #PV #LV #SN Attr   VSize  VFree
  lvm_vg01   3   0   0 wz--n- 31.99g 31.99g

  

 

2.3 创建逻辑卷LV

执行lvcreate命令创建逻辑卷(LV)

lvcreate [-L <逻辑卷大小>][ -n <逻辑卷名称>] <卷组名称>

注释:

1.逻辑卷的大小应小于卷组(VG)剩余可用空间,单位可以选择MB、GB或者TB

2.逻辑卷名称可自定义

3.卷组名称处填写逻辑卷所在的卷组名称

[root@wu ~]# lvcreate -L 31.98G -n lv01 lvm_vg01
  Rounding up size to full physical extent 31.98 GiB
  Logical volume "lv01" created.
[root@wu ~]# lvcreate -l 8189 -n lv01 lvm_vg01    ### 按照PE个数进行分配( 推荐 )
  Logical volume "lv01" created.

  

执行lvdisplay查看逻辑卷信息

[root@wu ~]# lvdisplay
  --- Logical volume ---
  LV Path                /dev/lvm_vg01/lv01
  LV Name                lv01
  VG Name                lvm_vg01
  LV UUID                3Ut1ox-OoAs-Uf29-Gc6A-mwJj-c09B-zwz1nN
  LV Write Access        read/write
  LV Creation host, time wu, 2019-11-05 14:09:41 +0800
  LV Status              available
  # open                 0
  LV Size                31.99 GiB
  Current LE             8189
  Segments               3
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0
[root@wu ~]#

  

附加: 删除逻辑卷

 

 

 

2.4 创建文件系统挂载

执行格式化创建文件系统后mount挂载上, 但是这样操作会把磁盘之前数据清空. 不适合有数据的磁盘建立LVM

[root@wu ~]# mkfs.ext4 /dev/lvm_vg01/lv01
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
2097152 inodes, 8385536 blocks
419276 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
256 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
      32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
      4096000, 7962624
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 29 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@wu ~]# mount  /dev/lvm_vg01/lv01 /testlvm/
[root@wu ~]# ll /testlvm/
total 16
drwx------ 2 root root 16384 Nov  5 14:35 lost+found

  

 

第3章 调整LVM容量

3.1 缩减逻辑卷及系统容量

3.1.1 lvreduce设置空间大小(减至多少)

可能会删除逻辑卷上已有的数据,操作前必须进行确认。输入 y

注意:减小后的大小不能小于文件的大小,否则会丢失数据

[root@wu ~]# lvreduce -L 10G /dev/lvm_vg01/lv01

  WARNING: Reducing active and open logical volume to 8.00 GiB.

  THIS MAY DESTROY YOUR DATA (filesystem etc.)

Do you really want to reduce lvm_vg01/lv01? [y/n]: y

  Size of logical volume lvm_vg01/lv01 changed from 31.99 GiB (8189 extents) to 8.00 GiB (2048 extents).

  Logical volume lv01 successfully resized.

 

如果减小的空间小于现有数据的大小, 会报错提示. 但保险起见最好避免这种情况

[root@wu ~]# resize2fs -p /dev/lvm_vg01/lv01 2048

resize2fs 1.41.12 (17-May-2010)

resize2fs: New size smaller than minimum (879590)

 

[root@wu ~]# resize2fs -p /dev/lvm_vg01/lv01 10G

resize2fs 1.41.12 (17-May-2010)

Please run 'e2fsck -f /dev/lvm_vg01/lv01' first.    ###如果提示就执行e2fsck,不提示直接过

 

[root@wu ~]# e2fsck -f /dev/lvm_vg01/lv01

e2fsck 1.41.12 (17-May-2010)

Pass 1: Checking inodes, blocks, and sizes

Pass 2: Checking directory structure

Pass 3: Checking directory connectivity

Pass 4: Checking reference counts

Pass 5: Checking group summary information

/dev/lvm_vg01/lv01: 11/2097152 files (0.0% non-contiguous), 176658/8385536 blocks

[root@wu ~]# resize2fs -p /dev/lvm_vg01/lv01 10G

resize2fs 1.41.12 (17-May-2010)

Resizing the filesystem on /dev/lvm_vg01/lv01 to 2621440 (4k) blocks.

Begin pass 2 (max = 32768)

Relocating blocks             XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Begin pass 3 (max = 256)

Scanning inode table          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

The filesystem on /dev/lvm_vg01/lv01 is now 2621440 blocks long.

 

xfs文件系统报错Couldn't find valid filesystem superblock

[root@zxb_opc_flink-192-168-0-4 ~]# resize2fs /dev/centos/root
resize2fs 1.42.9 (28-Dec-2013)
resize2fs: Bad magic number in super-block while trying to open /dev/centos/root
Couldn't find valid filesystem superblock.

#检查 /dev/centos/root 文件系统是xfs

[root@zxb_opc_flink-192-168-0-4 ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs d9d5ac53-0aa1-4d5e-b19a-1a54faf91892 /boot
└─sda2 LVM2_member 17FiJI-47Q4-70n8-5SGT-AaTl-OBEK-08DnyP
├─centos-root xfs 22c73248-60b4-40b0-baaa-59f47a0a82fa /
└─centos-swap swap 7625481e-fa39-4987-a382-7d0a6559fb4f [SWAP]
sdb LVM2_member 7dRUG6-Br8F-Q7Qp-McSV-mVTI-xwSx-m6P81H
└─bszh-data ext4 5c7e94d3-b04f-4d84-9c4e-a8f9e3b46964 /data
sdc LVM2_member ZHTeZ7-heJb-NIgV-RR9o-y8Hp-dKHz-3xPwkt
└─centos-root xfs 22c73248-60b4-40b0-baaa-59f47a0a82fa /


xfs的文件系统重新定义大小用如下命令:

# xfs_growfs /dev/mapper/centos-root 
meta-data=/dev/mapper/centos-root isize=256 agcount=4, agsize=3276800 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0
data = bsize=4096 blocks=13107200, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal bsize=4096 blocks=6400, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 13107200 to 39336960

3.2 扩展逻辑卷及系统容量

 

[root@wu ~]# df -h

Filesystem            Size  Used Avail Use% Mounted on

/dev/sda3             118G  9.1G  103G   9% /

tmpfs                 931M     0  931M   0% /dev/shm

/dev/sda1             190M   40M  141M  22% /boot

/dev/mapper/lvm_vg01-lv01

                      7.8G  3.2G  4.3G  43% /testlvm

 

3.2.1 执行lvextend扩展逻辑卷的容量

lvextend [-L +/- <增减容量>] <逻辑卷路径>

注释:

1.增减容量:当卷组中可剩余容量时 ,可以执行扩容逻辑卷操作。扩容逻辑卷之后还需要扩容对应的文件系统才能生效;

2.逻辑卷路径:此处填写带扩容的逻辑卷路径

lvextend -L +1G  /dev/lvm_vg01/lv01

[root@wu ~]# lvextend -l +1000  /dev/lvm_vg01/lv01

  Size of logical volume lvm_vg01/lv01 changed from 8.00 GiB (2048 extents) to 11.91 GiB (3048 extents).

  Logical volume lv01 successfully resized.

 

3.2.2 查看逻辑卷信息.  用pvs看物理卷使用情况

[root@wu ~]# lvdisplay

  --- Logical volume ---

  LV Path                /dev/lvm_vg01/lv01

  LV Name                lv01

  VG Name                lvm_vg01

  LV UUID                3Ut1ox-OoAs-Uf29-Gc6A-mwJj-c09B-zwz1nN

  LV Write Access        read/write

  LV Creation host, time wu, 2019-11-05 14:09:41 +0800

  LV Status              available

  # open                 1

  LV Size                13.01 GiB

  Current LE             3330

  Segments               1

  Allocation             inherit

  Read ahead sectors     auto

  - currently set to     256

  Block device           253:0

 

 

3.2.3 执行resize2fs命令扩容文件系统

[root@wu ~]# resize2fs /dev/lvm_vg01/lv01

resize2fs 1.41.12 (17-May-2010)

Filesystem at /dev/lvm_vg01/lv01 is mounted on /testlvm; on-line resizing required

old desc_blocks = 1, new_desc_blocks = 1

Performing an on-line resize of /dev/lvm_vg01/lv01 to 3409920 (4k) blocks.

The filesystem on /dev/lvm_vg01/lv01 is now 3409920 blocks long.

 

3.2.4 检查文件系统扩容情况 df -h

[root@wu ~]# df -h

Filesystem            Size  Used Avail Use% Mounted on

/dev/sda3             118G  9.1G  103G   9% /

tmpfs                 931M     0  931M   0% /dev/shm

/dev/sda1             190M   40M  141M  22% /boot

/dev/mapper/lvm_vg01-lv01

                       13G  3.2G  8.9G  27% /testlvm

 

在线扩容一块盘

[root@prod-bj4-res-02 ~]# lsblk 
NAME             MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda              253:0    0  40G  0 disk 
└─vda1           253:1    0  40G  0 part /
vdb              253:16   0   5T  0 disk 
└─bszh_fdfs-fdfs 252:1    0   5T  0 lvm  /fdfsdata
vdc              253:32   0  60G  0 disk 
└─bszh_data-data 252:0    0  60G  0 lvm  /data
vdd              253:48   0   2T  0 disk 
[root@prod-bj4-res-02 ~]# pvcreate /dev/vdd
Physical volume "/dev/vdd" successfully created.
You have new mail in /var/spool/mail/root
[root@prod-bj4-res-02 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/vdb bszh_fdfs lvm2 a-- <5.00t 0 
/dev/vdc bszh_data lvm2 a-- <60.00g 0 
/dev/vdd lvm2 --- 2.00t 2.00t
[root@prod-bj4-res-02 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
bszh_data 1 1 0 wz--n- <60.00g 0 
bszh_fdfs 1 1 0 wz--n- <5.00t 0

[root@prod-bj4-res-02 ~]# vgextend bszh_fdfs /dev/vdd
Volume group "bszh_fdfs" successfully extended

[root@prod-bj4-res-02 ~]# vgs
VG #PV #LV #SN Attr VSize VFree 
bszh_data 1 1 0 wz--n- <60.00g 0 
bszh_fdfs 2 1 0 wz--n- <7.00t <2.00t

[root@prod-bj4-res-02 ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
data bszh_data -wi-ao---- <60.00g 
fdfs bszh_fdfs -wi-ao---- <5.00t 
[root@prod-bj4-res-02 ~]# lvdisplay

[root@prod-bj4-res-02 ~]# lvextend -L +2046G /dev/bszh_fdfs/fdfs 
Size of logical volume bszh_fdfs/fdfs changed from <5.00 TiB (1310719 extents) to <7.00 TiB (1834495 extents).
Logical volume bszh_fdfs/fdfs successfully resized.
You have new mail in /var/spool/mail/root
[root@prod-bj4-res-02 ~]#

[root@prod-bj4-res-02 ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
data bszh_data -wi-ao---- <60.00g 
fdfs bszh_fdfs -wi-ao---- <7.00t

[root@prod-bj4-res-02 ~]# resize2fs /dev/bszh_fdfs/fdfs
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/bszh_fdfs/fdfs is mounted on /fdfsdata; on-line resizing required
old_desc_blocks = 640, new_desc_blocks = 896
The filesystem on /dev/bszh_fdfs/fdfs is now 1878522880 blocks long.

[root@prod-bj4-res-02 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 225M 3.6G 6% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/vda1 40G 9.9G 28G 27% /
/dev/mapper/bszh_fdfs-fdfs 7.0T 4.3T 2.4T 64% /fdfsdata
/dev/mapper/bszh_data-data 59G 2.8G 54G 5% /data
tmpfs 783M 0 783M 0% /run/user/0
obsfs 256T 0 256T 0% /appClient
obsfs 256T 0 256T 0% /video
172.17.0.21:/uploads/ftpFile 5.0T 3.3T 1.5T 70% /uploads/ftpFile

 

posted @ 2019-11-05 16:26  mingetty  阅读(352)  评论(0)    收藏  举报