逻辑卷管理

LVM 逻辑卷管理 Logical Volume Management

一、LVM介绍

​ 管理磁盘、使用磁盘的一种方式的称呼

​ 优势:

​ 1、在不影响数据的情况下, 扩容、缩容

​ 2、支持快照功能, 方便数据备份

​ LVM工作流程:

​ 磁盘/分区 ---> pv(物理卷) ----> vg(卷组) -----> lv(逻辑卷) ----> 格式化/挂载使用

​ 注意:

​ 磁盘/分区,要求是裸设备(无文件系统的设备)

​ 建议规范做法将分区的ID修改8e

二、lvm逻辑卷管理指令

1、pv物理卷相关指令

1) 查看pv 

[root@localhost ~]# pvscan  
  PV /dev/sda2   VG centos          lvm2 [<19.51 GiB / 0    free]
  Total: 1 [<19.51 GiB] / in use: 1 [<19.51 GiB] / in no VG: 0 [0   ]
  
  
2) 创建物理卷 

# pvcreate  磁盘/分区名称 

# pvcreate /dev/sdc 


3) 删除物理卷 

# pvremove  物理卷名称 

2、vg卷组相关指令

查看卷组 
[root@localhost ~]# vgscan 
  Reading volume groups from cache.
  Found volume group "centos" using metadata type lvm2
[root@localhost ~]# 
查看卷组详细信息
[root@localhost ~]# vgdisplay centos 
  --- 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               <19.51 GiB
  PE Size               4.00 MiB					//PE  物理扩展单元,  类似于数据块
  Total PE              4994						//该卷组中共有几个PE
  Alloc PE / Size       4994 / <19.51 GiB			//卷组已分配的空间
  Free  PE / Size       0 / 0   					//卷组剩余空间
  VG UUID               V1dlCd-vG4Q-zZAk-0Jhu-Ixxd-5KTP-sa83fz
   
创建卷组 

# vgcreate 卷组名称  pv名称  pv名称  pv名称  

	# 创建卷组 data   # vgcreate data  /dev/sdc   
	

3、lv逻辑卷相关指令

查看逻辑卷 

[root@localhost ~]# lvscan 
  ACTIVE            '/dev/centos/swap' [2.00 GiB] inherit
  ACTIVE            '/dev/centos/root' [<17.51 GiB] inherit
  
  		/dev/卷组名称/逻辑卷名称        /dev/data/web 
创建逻辑卷 
# lvcreate -L 容量  -n 逻辑卷名称  卷组名称  

	# lvcreate -L 100G -n test vg01  ---------->  /dev/vg01/test 

三、创建逻辑卷

​ /dev/data/web 5G ext4文件系统 /data/web

1、创建物理卷

[root@localhost ~]# pvcreate /dev/sdc /dev/sdd 
  Physical volume "/dev/sdc" successfully created.
  Physical volume "/dev/sdd" successfully created.

[root@localhost ~]# pvscan 
  PV /dev/sda2   VG centos          lvm2 [<19.51 GiB / 0    free]
  PV /dev/sdd                       lvm2 [20.00 GiB]
  PV /dev/sdc                       lvm2 [20.00 GiB]
  Total: 3 [<59.51 GiB] / in use: 1 [<19.51 GiB] / in no VG: 2 [40.00 GiB]
 
火爆上                  oopi[]'][[】、0

2、创建卷组data

[root@localhost ~]# vgcreate data /dev/sdc /dev/sdd
  Volume group "data" successfully created
[root@localhost ~]# 

[root@localhost ~]# vgdisplay data 
  --- Volume group ---
  VG Name               data
  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               39.99 GiB
  PE Size               4.00 MiB
  Total PE              10238
  Alloc PE / Size       0 / 0   
  Free  PE / Size       10238 / 39.99 GiB
  VG UUID               hK6DQf-A7ry-sbCC-1UqR-c0C0-iao7-TkcxDc

3、创建逻辑卷 web

[root@localhost ~]# lvcreate -L 5G -n web data
  Logical volume "web" created.

[root@localhost ~]# lvscan 
  ACTIVE            '/dev/data/web' [5.00 GiB] inherit
  ACTIVE            '/dev/centos/swap' [2.00 GiB] inherit
  ACTIVE            '/dev/centos/root' [<17.51 GiB] inherit

4、创建文件系统、挂载使用

[root@localhost ~]# mkfs -t ext4 /dev/data/web 

[root@localhost ~]# tail -n 1 /etc/fstab
/dev/data/web	/data/web	ext4	defaults	0 0

[root@localhost ~]# mkdir -p /data/web
[root@localhost ~]# mount -a



[root@localhost ~]# df -hT | grep "data"
/dev/mapper/data-web    ext4      4.8G   20M  4.6G   1% /data/web
[root@localhost ~]# 



[root@localhost ~]# touch /data/web/{1..10}.html
[root@localhost ~]# ls /data/web/
10.html  1.html  2.html  3.html  4.html  5.html  6.html  7.html  8.html  9.html
[root@localhost ~]# ls -l /dev/data/web 
lrwxrwxrwx. 1 root root 7 Dec 23 18:42 /dev/data/web -> ../dm-2
[root@localhost ~]# 
[root@localhost ~]# ls -l /dev/dm-2 
brw-rw----. 1 root disk 253, 2 Dec 23 18:42 /dev/dm-2
[root@localhost ~]# 
[root@localhost ~]# ls -l /dev/mapper/data-web 
lrwxrwxrwx. 1 root root 7 Dec 23 18:42 /dev/mapper/data-web -> ../dm-2

四、案例 ---- 以指定PE数量的方式创建逻辑卷

# lvcreate -l PE数量 -n 逻辑卷名称  卷组名称  

创建逻辑卷/dev/data/nginx, 容量800M, xfs文件系统    /data/nginx 

[root@localhost ~]# lvcreate -l 200 -n nginx data
  Logical volume "nginx" created.
[root@localhost ~]# lvscan 
  ACTIVE            '/dev/data/web' [5.00 GiB] inherit
  ACTIVE            '/dev/data/nginx' [800.00 MiB] inherit

PE默认大小为4M, 在创建卷组时使用-s选项可修改PE大小

[root@localhost ~]# pvcreate /dev/sde
  Physical volume "/dev/sde" successfully created.

[root@localhost ~]# vgcreate -s 16 vg01 /dev/sde
  Volume group "vg01" successfully created

[root@localhost ~]# vgdisplay vg01 
  --- Volume group ---
  VG Name               vg01
  System ID             
  Format                lvm2
  Metadata Areas        1
  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                1
  Act PV                1
  VG Size               19.98 GiB
  PE Size               16.00 MiB
  Total PE              1279
  Alloc PE / Size       0 / 0   
  Free  PE / Size       1279 / 19.98 GiB
  VG UUID               udttBx-RdYn-kTHW-rgDN-uSyJ-6DXz-DI0xUw

五、案例 ---- 逻辑卷扩展

流程: 
	1、扩展逻辑卷的物理边界大小
	2、扩展逻辑卷的文件系统大小
			resize2fs	扩展ext文件系统 
			xfs_growfs	扩展xfs文件系统 
扩展逻辑卷/dev/data/web容量到15GB 

1) 确认卷组有足够的剩余空间 
[root@localhost ~]# vgdisplay data | grep -i "free"
  Free  PE / Size       8758 / 34.21 GiB
  
2) 扩展物理边界  
[root@localhost ~]# lvextend -L +10G /dev/data/web 
  Size of logical volume data/web changed from 5.00 GiB (1280 extents) to 15.00 GiB (3840 extents).
  Logical volume data/web successfully resized.
[root@localhost ~]# 
[root@localhost ~]# lvscan 
  ACTIVE            '/dev/data/web' [15.00 GiB] inherit
  
3) 扩展文件系统 

[root@localhost ~]# resize2fs /dev/data/web 				//redisze2fs只能用于扩展ext文件系统
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/data/web is mounted on /data/web; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 2
The filesystem on /dev/data/web is now 3932160 blocks long.

[root@localhost ~]# df -hT | grep "web"
/dev/sdb1               ext4      477M  5.3M  442M   2% /web
/dev/mapper/data-web    ext4       15G   25M   14G   1% /data/web
为逻辑卷/dev/data/nginx扩展30GB空间  【xfs文件系统】

1) 确认卷组的剩余空间 
[root@localhost ~]# vgdisplay data | grep -i free
  Free  PE / Size       6198 / 24.21 GiB
  
2) 扩展卷组data 

[root@localhost ~]# pvcreate /dev/sdf
  Physical volume "/dev/sdf" successfully created.
[root@localhost ~]# 
[root@localhost ~]# vgextend data /dev/sdf
  Volume group "data" successfully extended
[root@localhost ~]# 
[root@localhost ~]# vgdisplay data | grep -i free
  Free  PE / Size       11317 / <44.21 GiB
  
3) 扩展逻辑卷物理边界  
[root@localhost ~]# lvextend -L +30G /dev/data/nginx 

[root@localhost ~]# lvscan 
  ACTIVE            '/dev/data/web' [15.00 GiB] inherit
  ACTIVE            '/dev/data/nginx' [30.78 GiB] inherit
  
4) 扩展文件系统 
[root@localhost ~]# xfs_growfs /dev/data/nginx 
meta-data=/dev/mapper/data-nginx isize=512    agcount=4, agsize=51200 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=204800, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=855, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 204800 to 8069120

[root@localhost ~]# df -hT
Filesystem              Type      Size  Used Avail Use% Mounted on
/dev/mapper/centos-root xfs        18G  5.8G   12G  33% /
devtmpfs                devtmpfs  473M     0  473M   0% /dev
tmpfs                   tmpfs     489M     0  489M   0% /dev/shm
tmpfs                   tmpfs     489M  7.2M  481M   2% /run
tmpfs                   tmpfs     489M     0  489M   0% /sys/fs/cgroup
/dev/sdb5               xfs       497M   26M  472M   6% /openstack
/dev/sdb6               xfs       497M   26M  472M   6% /python
/dev/sdb1               ext4      477M  5.3M  442M   2% /web
/dev/sdb2               ext4      477M  2.3M  445M   1% /nginx
/dev/mapper/data-web    ext4       15G   25M   14G   1% /data/web
/dev/mapper/data-nginx  xfs        31G   37M   31G   1% /data/nginx

六、逻辑卷缩减

流程: 
	1、先缩减文件系统 
	2、再缩减物理边界 
	
注意事项: 
	1、逻辑卷要处于卸载状态  
	2、建议备份数据 
	3、xfs文件系统不支持缩减 
	4、缩减后的空间要可以保存之前数据 
	
缩减逻辑卷/dev/data/web的空间到10G 

1) 备份数据  
[root@localhost ~]# cd /data/
[root@localhost data]# tar czf /tmp/web_$(date +%Y_%m_%d).tar.gz web/ 

2) 卸载逻辑卷 
[root@localhost ~]# umount /dev/data/web 

3) 检测逻辑卷文件系统是否有损坏  
[root@localhost ~]# fsck -f /dev/data/web
fsck from util-linux 2.23.2
e2fsck 1.42.9 (28-Dec-2013)
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/mapper/data-web: 21/983040 files (0.0% non-contiguous), 100864/3932160 blocks

4) 缩减文件系统到10GB
[root@localhost ~]# resize2fs -f /dev/data/web 10G  
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/data/web to 2621440 (4k) blocks.
The filesystem on /dev/data/web is now 2621440 blocks long.

5) 缩减物理边界  
[root@localhost ~]# lvreduce -L -5GB /dev/data/web 
  WARNING: Reducing active logical volume to 10.00 GiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce data/web? [y/n]: y
  Size of logical volume data/web changed from 15.00 GiB (3840 extents) to 10.00 GiB (2560 extents).
  Logical volume data/web successfully resized.
[root@localhost ~]# 
[root@localhost ~]# 
[root@localhost ~]# lvscan 
  ACTIVE            '/dev/data/web' [10.00 GiB] inherit
  
 6) 重新挂载逻辑卷, 验证可正常查看数据  
 
 [root@localhost ~]# mount /dev/data/web /data/web/
 
 [root@localhost ~]# ls /data/web/
10.html  1.html  2.html  3.html  4.html  5.html  6.html  7.html  8.html  9.html 

七、逻辑卷快照 snapshot

​ 作用:结合特定应用程序, 方便备份数据

​ 基于cow(copy on write 写时复制)机制

​ 创建快照时,快照中只保存数据的指针信息(元数据信息), 只有当原逻辑卷数据发生变化时,才会将真实的数据复制到快照中来

创建快照
# lvcreate -s -p r -L 容量 -n 快照名称  逻辑卷名称  

	-s: 快照
	-p r:  将快照的权限设置为只读 
	-n: 快照名称  
	-L 容量: 
		快照所允许的原逻辑卷数据变化量 		

基于快照备份数据  

1) 创建快照 

[root@localhost ~]# lvcreate -s -p r -n web_snap -L 500M /dev/data/web
  Using default stripesize 64.00 KiB.
  Logical volume "web_snap" created.

[root@localhost ~]# lvscan 
  ACTIVE   Original '/dev/data/web' [10.00 GiB] inherit
  ACTIVE            '/dev/data/nginx' [30.78 GiB] inherit
  ACTIVE   Snapshot '/dev/data/web_snap' [500.00 MiB] inherit
  ACTIVE            '/dev/centos/swap' [2.00 GiB] inherit
  ACTIVE            '/dev/centos/root' [<29.51 GiB] inherit
  
  
 2) 挂载快照,备份数据  
 [root@localhost ~]# mount /dev/data/web_snap /mnt/

[root@localhost ~]# tar czf /tmp/web01_$(date +%Y_%m_%d).tar.gz /mnt/

3) 卸载、删除快照 

[root@localhost ~]# umount /dev/data/web_snap 
[root@localhost ~]# lvremove /dev/data/web_snap
Do you really want to remove active logical volume data/web_snap? [y/n]: y
  Logical volume "web_snap" successfully removed
[root@localhost ~]# 
[root@localhost ~]# lvscan 
  ACTIVE            '/dev/data/web' [10.00 GiB] inherit
  ACTIVE            '/dev/data/nginx' [30.78 GiB] inherit
  ACTIVE            '/dev/centos/swap' [2.00 GiB] inherit
  ACTIVE            '/dev/centos/root' [<29.51 GiB] inherit
posted @ 2023-03-25 10:34  nhxuan  阅读(110)  评论(0)    收藏  举报