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


浙公网安备 33010602011771号