• 幕客老师召集小伙伴
  • 运维高手36项修炼
  • python自动化运维项目实战
  • nginx从入门到实战
  • 阿里云与Centos7实战

存储管理(逻辑卷LVM)

知识点:

 


 

逻辑卷LVM
LVM是Linux环境中对磁盘分区进行管理的一种机制,是建立在硬盘和分区之上、文件系统之下的一个逻辑层,可提高磁盘分区管理的灵活性。
1.逻辑卷的优缺点(优点:冗余 、动态扩容  缺点:不能减少、额外的性能、不稳定)
2. 在线(on-line)扩容,离线(off-line)缩小
3. 快照snapshot

参考文档:

========================================================
创建 扫描 显示详细 显示 扩展           缩小   删除         更改 …
pvcreate pvscan pvdisplay pvs pvremove
vgcreate vgscan vgdisplay vgs vgextend   vgremove       vgchange
lvcreate lvscan lvdisplay lvs lvextend lvreduce lvremove       lvchange
========================================================



一、创建逻辑卷
1. 创建物理卷PV(整个硬盘,不需要细分区)

 

[root@jeson ~]# pvcreate /dev/sdc

2. 创建卷组VG

[root@jeson ~]# vgcreate vg02 /dev/sdc

3. 创建逻辑卷LV

[root@jeson ~]# lvcreate -L 400M -n lv02 vg02
[root@jeson ~]# lvcreate -l 200 -n lv03 vg02
[root@jeson ~]# lvscan 
  ACTIVE            '/dev/vg02/lv02'
[400.00 MB] inherit

4. 创建文件系统并挂载

[root@jeson ~]# mkfs.ext4 /dev/vg02/lv02 
[root@jeson ~]# mount -t ext4  /dev/vg02/lv02 /tmp/test/
[root@jeson ~]# vim /etc/fstab /
dev/vg02/lv02          /mnt/lv02               ext4    defaults        00[root@jeson ~]# mkdir /mnt/lv02
[root@jeson ~]# mount -a
[root@jeson ~]# df文件系统1K-块已用可用已用%挂载点/dev/mapper/vg02-lv02
                        396672105443656483%/mnt/lv02

                        
//遇到错误:Device /dev/sdb not found (or ignored by filtering.
//遇到这个问题,我们需要把之前做过历史卷标 等信息进行一次清理。
一种方式:dd if=/dev/zero of=/dev/sdb bs=512 count=1
第二种方式:mkfs.ext4 /dev/sdb

 



二、扩展逻辑卷
第一种情况:lv所在的卷组还有足够用于扩展的空间

 

[root@jeson ~]# lvs
  LV      VG   AttrLSizeOriginSnap%MoveLogCopy%Convert                           
  lv02    vg02 -wi-ao 400.00M                                      
  lv03    vg02 -wi-ao 800.00M
[root@jeson ~]# vgs
  VG   #PV #LV #SN Attr   VSize   VFree 
  vg02   120 wz--n-100.00G98.82G

 

[root@jeson ~]# lvextend -L 1G /dev/vg02/lv02 //扩展逻辑卷
[root@jeson ~]# lvscan 
  ACTIVE            '/dev/vg02/lv02'[1.00 GB] inherit
  ACTIVE            '/dev/vg02/lv03'[800.00 MB] inherit
[root@jeson ~]# resize2fs /dev/vg02/lv02 //扩文件系统
[root@jeson ~]# df -h

第二种情况:lv所在的卷组没有足够的空间

[root@jeson ~]# vgs
  VG   #PV #LV #SN Attr   VSize   VFree 
  vg01   140 wz--n-9.97G0 
  vg02   120 wz--n-100.00G98.21G
[root@jeson ~]# pvcreate /dev/sdd	//建立PV
[root@jeson ~]# vgextend vg02 /dev/sdd  	//扩展卷组
[root@jeson ~]# lvextend -L 100T /dev/vg02/lv02 //扩展逻辑卷
[root@jeson ~]# resize2fs /dev/vg02/lv02 //扩文件系统

========================================================  
扩展知识:
PV也可以是一个分区:

[root@jeson ~]# fdisk -cul /dev/sdd
[root@jeson ~]# partx -a /dev/sdd
[root@jeson ~]# pvcreate /dev/sdd7
[root@jeson ~]# vgextend vg02 /dev/sdd7 
[root@jeson ~]# vgs
  VG   #PV #LV #SN Attr   VSize   VFree  
  vg01   140 wz--n-9.97G0 
  vg02   220 wz--n-101.82G100.04G

  
PE:创建VG时,指定PE的size(默认为4M)

[root@jeson ~]# pvcreate /dev/sdc
[root@jeson ~]# vgcreate -s 128M datastorage /dev/sdc
[root@jeson ~]# vgdisplay datastorage
  PE Size128.00 MB
  Total PE              	799Alloc PE /Size0/0Free  PE /Size799/99.88 GB
[root@jeson ~]# lvcreate -l 799 -n database datastorage
[root@jeson ~]# mkfs.ext4 /dev/datastorage/database
[root@jeson ~]# mkdir /mnt/lv
[root@jeson ~]# vim /etc/fstab/dev/datastorage/database /mnt/lv               ext3    defaults 00
[root@jeson ~]# mount -a
[root@jeson ~]# df

删除LV,VG:
1. 停止应用程序对该相应文件系统的访问
2. 卸载文件系统,包括/etc/fstab
3. lvremove
4. vgremove
5. pvremove

激活VG/LV:

[root@jeson ~]# lvchange -an /dev/vg01/lv01
[root@jeson ~]# lvscan 
  inactive          '/dev/vg01/lv01'[128.00MiB] inherit
  ACTIVE            '/dev/vg01/lv02'[128.00MiB] inherit
  ACTIVE            '/dev/vg01/lv03'[128.00MiB] inherit
[root@jeson ~]# vgchange -an vg010 logical volume(s)in volume group "vg01" now active
[root@jeson ~]# lvscan 
  inactive          '/dev/vg01/lv01'[128.00MiB] inherit
  inactive          '/dev/vg01/lv02'[128.00MiB] inherit
  inactive          '/dev/vg01/lv03'[128.00MiB] inherit
[root@jeson ~]# vgchange -ay vg01[root@jeson ~]# lvscan 
  ACTIVE            '/dev/vg01/lv01'[128.00MiB] inherit
  ACTIVE            '/dev/vg01/lv02'[128.00MiB] inherit
  ACTIVE            '/dev/vg01/lv03'[128.00MiB] inherit

  
缩小逻辑卷: off-line 

注意:一定要按照步骤进行
1. 停止应用
2. 备份数据
3. 卸载文件系统
4. 检查文件系统e2fsck
5. 缩小文件系统
6. 缩小逻辑卷

[root@jeson ~]# umount /mnt/lv04/
[root@jeson ~]# e2fsck -f /dev/vg01/lv04
[root@jeson ~]# resize2fs /dev/vg01/lv04 1000M
[root@jeson ~]# lvreduce /dev/vg01/lv04 -L 1000M //缩小逻辑卷到1000M
[root@jeson ~]# mount -a

========================================================
//遇到resize2fs: New size smaller than minimum (259448)

resize2fs -d debug-flags /dev/mapper/vg_zhuxuemin-lv_home 1000M

 



三、逻辑卷快照snapshot
逻辑卷做完快照后,对原卷的任何操作都不影响快照卷

 

作用:
1. 利用快照实现一致性备份

实现快照

[root@jeson ~]# lvscan 
  ACTIVE            '/dev/vg01/lv06'[20.00GiB] inherit
[root@jeson ~]# lvs
  LV     VG   AttrLSizePoolOriginData%MoveLogCpy%SyncConvert              
  lv06   vg01 -wi-ao---20.00g
[root@jeson ~]# df -ThP /mnt/lv06                        //-T显示文件类型FilesystemTypeSizeUsedAvailUse%Mounted on
/dev/mapper/vg01-lv06 ext4   20G287M19G2%/mnt/lv06

[root@jeson ~]# lvcreate -L 50M -s -n lv06-snap /dev/vg01/lv06[root@jeson ~]# lvs
  LV        	VG   AttrLSizePoolOriginData%MoveLogCpy%SyncConvert 
  lv06      	vg01 owi-aos--20.00g                                             
  lv06-snap vg01 swi-a-s--52.00m      	lv06    0.02
[root@jeson ~]# mkdir /mnt/lv06-snap
[root@jeson ~]# mount /dev/vg01/lv06-snap /mnt/lv06-snap
[root@jeson ~]# ls /mnt/lv06
etc1  etc2  etc3  lost+found
[root@sxl1 ~]# ls /mnt/lv06-snap/
etc1  etc2  etc3  lost+found

[root@jeson ~]# rm -rf /mnt/lv06/etc1
[root@sxl1 ~]# ls /mnt/lv06
etc2  etc3  lost+found
[root@sxl1 ~]# ls /mnt/lv06-snap/
etc1  etc2  etc3  lost+found

快照的自动增长:

[root@jeson ~]# vim /etc/lvm/lvm.conf
snapshot_autoextend_threshold =70
snapshot_autoextend_percent =50
[root@jeson ~]# /etc/init.d/lvm2-monitor start
[root@jeson ~]# chkconfig lvm2-monitor on

练习:对一个/home容量为400G的逻辑卷进行调节,使系统的/根分区更加合理。

步骤一、缩小/home对应分区的容量为1000M

umount /home
resize2fs -f -d debug-flags /dev/mapper/vg_zhuxuemin-lv_home 1000M
mount -a
df -h
lvreduce /dev/mapper/vg_zhuxuemin-lv_home -L 1000M
lvs

步骤二、扩大对应的/根分区的大小为100G

lvextend /dev/mapper/vg_zhuxuemin-lv_root -L 100G
lvs
resize2fs /dev/mapper/vg_zhuxuemin-lv_root 100G
mount -a
df -h

存储管理(逻辑卷LVM)

Pingbacks已打开。

引用地址

暂无评论

发表评论