正德厚生,臻于至善

Linux 逻辑卷管理LVM

LVM命令
任务			PV阶段		VG阶段		LV阶段
扫描(scan)		pvscan		vgscan		lvscan
创建(create)		pvcreate	vgcreate	lvcreate
显示(display)		pvdisplay	vgdisplay	lvdisplay
扩展(extend)				vgextend	lvextend
减少(reduce)				vgreduce	lvreduce
移除(remove)		pvremove	vgremove	lvremove
改变容量(resize)        pvresize                        lvresize
改变属性(attribute)	pvchange	vgchange	lvchange
注意:查看命令有scan、display和s(pvs、vgs、lvs)。s是简单查看对应卷信息,display是详细查看对应卷信息。
而scan是扫描所有的相关的对应卷。
1.使用pvcreate创建物理卷PV
[root@racldb01 ~]# pvcreate /dev/sdb
[root@racldb01 ~]# pvs

2.创建卷组VG
使用vgcreate创建卷组VG,并且此处可以-s选项指定PE(LE)的大小,(默认PE大小4M)
[root@racldb01 ~]# vgcreate oraclevg /dev/sdb
[root@racldb01 ~]# vgs
[root@racldb01 ~]# vgdisplay oraclevg

注意:PE大,读取速度快,但浪费空间。反之,读取速度慢,但节省空间。类似于socket

另外还可以查看pv,会列出分配情况
[root@racldb01 ~]# pvs

3.创建逻辑卷LV
使用lvcreate创建LV
[root@racldb01 ~]# vgs
[root@racldb01 ~]# lvcreate -n oraclelv -L 30G oraclevg
[root@racldb01 ~]# vgs
[root@racldb01 ~]# lvs                                                 
[root@racldb01 ~]# pvdisplay /dev/sdb

4.格式化与挂载
注意:在格式化之前需要知道xfs文件系统只支持增大,不支持减小。ext2、ext3、ext4增大减小都支持
[root@racldb01 ~]# mkfs.xfs /dev/oraclevg/oraclelv
[root@racldb01 ~]# ls -l /dev/oraclevg/oraclelv
[root@racldb01 ~]# ls -l /dev/disk/by-uuid|grep dm-8
[root@racldb01 ~]# mkdir -p /oracle
[root@racldb01 ~]# mount /dev/oraclevg/oraclelv /oracle
[root@racldb01 ~]# df -h
[root@racldb01 ~]# vi /etc/fstab
UUID=4a44ad07-24a0-417c-a6b9-03835ee6f91c /oracle                 xfs     defaults        0 0
这里的/dev/oraclevg/oraclelv实际是一个软链接

逻辑卷LV扩容(动态扩容)
首先需要确认是否有可用的扩容空间,逻辑卷是从卷组vg中创建的,所有在逻辑卷LV扩容前需要查看卷组VG的空间使用情况。
[root@racldb01 ~]# vgs
在确认有多余空间的情况下,使用lvextend命令的-L选项扩展逻辑卷LV的大小
[root@racldb01 ~]# vgs
[root@racldb01 ~]# lvs                                         
[root@racldb01 ~]# lvextend -L +10G /dev/oraclevg/oraclelv
[root@racldb01 ~]# lvextend -L 50G /dev/oraclevg/oraclelv
[root@racldb01 ~]# lvextend -l 12799 /dev/oraclevg/oraclelv
[root@racldb01 ~]# lvs                                                
[root@racldb01 ~]# vgs
但是在我们使用df命令查看时,会发现我们文件系统并没有扩展
[root@racldb01 ~]# df -h /dev/oraclevg/oraclelv

这是因为文件系统也需要扩容。
ext4文件系统扩容使用resize2fs [逻辑卷名称]
xfs扩容使用"xfs_growfs 挂载点"

[root@racldb01 ~]# df -h /dev/oraclevg/oraclelv
[root@racldb01 ~]# xfs_growfs /oracle
[root@racldb01 ~]# df -h /oracle

xfs文件系统只能增大,不能减小。

删除LVM
删除LVM步骤:umount挂载-->lvremove移除逻辑卷LV-->vgremove移除卷组VG-->pvremove移除物理卷PV

SSM工具:检查关于可用硬盘和LVM卷的信息。显示关于现有磁盘存储设备、存储池、LVM卷和存储快照的信息。
yum -y install system-storage-manager

列出设备信息 		ssm list dev
列出存储池信息		ssm list pool
列出卷信息		ssm list vol

ssm创建LVM
mkdir /mail-lv
ssm create -s 1G -n mail-lv --fstype xfs -p mail /dev/sdb[1-4] /mail-lv
df -h /mail-lv
[root@racldb02 mapper]# lvextend -l 12799 /dev/oraclevg/oraclelv
[root@racldb02 mapper]# lvextend -l 12800 /dev/oraclevg/oraclelv
1: 扩大卷组
pvcreate /dev/sdb3#再创建一个物理卷分区
vgextend vg00 /dev/sdb3 #将创建好的分区加入到需要扩大的卷组中
vgs #查看

2: 扩大逻辑卷
首先要确定逻辑卷对应的卷组下有足够扩充的空间.
lvextend -L +66G /dev/mapper/vg00-root
resize2fs /dev/mapper/vg00-root
lvs #查看

3: 缩减卷组
有时候,某些分区坏了,可能需要移除逻辑卷.同时卷组的空间大小也减少了.
pvmove /dev/sdb1 /dev/sdb2 #通过pvmove命令转移空间数据
vgreduce vg00 /dev/sdb1 #将分区从卷组vg00里面移除除去
pvremove /dev/sdb1 #通过pvremove命令将分区从系统中删除掉(不一定需要)

4: 缩减逻辑卷
umount mount_point #先卸载逻辑卷
e2fsck -f /dev/vg00/lv_name #通过e2fsck命令检测逻辑卷上空余空间
resize2fs /dev/vg00/lv_name size_new #将文件系统减小至size_new大小
lvreduce -L size_new /dev/vg00/lv_name #将逻辑卷大小减小至size_new
df -hl查看
mount /dev/vg00/lv_name /mount_point #重新挂载,继续使用
注意:文件系统大小和逻辑卷大小一定要保持一致才行。如果逻辑卷大于文件系统,由于部分区域未格式化成文件系统会造成空间的浪费。如果逻辑卷小于文件系统,哪数据就出问题了。

5: 删除逻辑卷,卷组和物理卷
umount /mount_point #先卸载逻辑卷
vim /etc/fstab #修改下fstab里面逻辑卷的自动挂载信息
lvremove /dev/vg00/lv_name #删除逻辑卷
vgremove vg00 #删除卷组
pvremove /dev/sdb1 /dev/sdb2 #将物理卷转化成普通分区
用pvs/vgs/lvs查看
sudo fdisk /dev/sdb1#更改分区ID标识,修改成普通linux分区,而不是8e.
6: 创建快照卷
https://www.tecmint.com/take-snapshot-of-logical-volume-and-restore-in-lvm/
这个文章说的非常详细,推荐下。

快照(snapshot)是LVM所提供的一个非常有用的特性。它的原理是复制Origin原始卷的元数据(metadata)来创建一个逻辑卷,并没有复制物理卷上的任何数据,因此它的创建过程是实时瞬间完成的。快照是特殊类型的逻辑卷,它含有创建时刻所指定的原始逻辑卷的完整数据,您可以操作快照而无需担心数据的变更令备份失效。

当一个snapshot创建的时候,仅拷贝原始卷里的源数据,这不是物理上的数据拷贝,因此snapshot的创建特别快,当原始卷里的数据有写入时,备份卷开始记录原始卷哪些数据发生了变化,然后在原始卷新数据覆盖旧数据时,将旧数据拷贝到snapshot的预留空间里,起到备份数据的作用,就保证了所有数据和创建备份卷之前的数据一致性。

而对于snapshot的读操作,如果是读取数据块是没有修改过的,那么会将读操作直接重定向到原始卷上,如果是要读取已经修改过的块,那么就读取拷贝到snapshot中的块。所以当原始卷破坏了之后还能用snapshot备份的数据还原.

注意:snapshot其实是一个逻辑卷;snapshot只能对同一个卷组的逻辑卷进行备份.

#创建快照
lvcreate --snapshot--size 50g --name snapshot_name /dev/vg00/lv_name
lvscan #查看
#挂在快照卷
mkdir /tmp/snapshot
mount/dev/vg00/snapshot_name /tmp/snapshot
#此时的快照卷就像是普通的逻辑卷,可以进行增加,缩小,删除等操作
#此时你可以在原来的逻辑卷内进行修改等操作
#恢复快照
umount /tmp/snapshot #卸载
#方法一
lvconvert --merge /dev/vg00/snapshot_name 
#方法二
lvchange --refresh vg00 /snapshot_name
lvremove --force vg00 /snapshot_name
1.使用pvcreate创建物理卷PV
[root@racldb01 ~]# pvcreate /dev/sdb
  Physical volume "/dev/sdb" successfully created.
[root@racldb01 ~]# pvs
  PV         VG Fmt  Attr PSize  PFree 
  /dev/sdb      lvm2 ---  50.00g 50.00g
[root@racldb01 ~]# pvdisplay /dev/sdb
  --- Physical volume ---
  PV Name               /dev/sdb
  VG Name               oraclevg
  PV Size               50.00 GiB / not usable 4.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              12799
  Free PE               12799
  Allocated PE          0
  PV UUID               BXhyAo-9K83-KnHd-Z6kg-iU66-1Xx1-8rwPQ3
   
[root@racldb01 ~]# 

2.创建卷组VG
使用vgcreate创建卷组VG,并且此处可以-s选项指定PE(LE)的大小,(默认PE大小4M)
[root@racldb01 ~]# vgcreate oraclevg /dev/sdb
  Volume group "oraclevg" successfully created
[root@racldb01 ~]# vgs
  VG       #PV #LV #SN Attr   VSize   VFree  
  oraclevg   1   0   0 wz--n- <50.00g <50.00g
[root@racldb01 ~]# vgdisplay oraclevg
  --- Volume group ---
  VG Name               oraclevg
  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               <50.00 GiB
  PE Size               4.00 MiB
  Total PE              12799
  Alloc PE / Size       0 / 0   
  Free  PE / Size       12799 / <50.00 GiB
  VG UUID               roKJcp-6Z4Q-ffqz-AJCz-xyAl-AfYV-D07J3W
   
[root@racldb01 ~]# 
注意:PE大,读取速度快,但浪费空间。反之,读取速度慢,但节省空间。类似于socket

另外还可以查看pv,会列出分配情况
[root@racldb01 ~]# pvs
  PV         VG       Fmt  Attr PSize   PFree  
  /dev/sdb   oraclevg lvm2 a--  <50.00g <50.00g
[root@racldb01 ~]# 

3.创建逻辑卷LV
使用lvcreate创建LV
[root@racldb01 ~]# vgs
  VG       #PV #LV #SN Attr   VSize   VFree  
  oraclevg   1   0   0 wz--n- <50.00g <50.00g
[root@racldb01 ~]# lvcreate -n oraclelv -L 30G oraclevg
  Logical volume "oraclelv" created.
[root@racldb01 ~]# vgs
  VG       #PV #LV #SN Attr   VSize   VFree  
  oraclevg   1   1   0 wz--n- <50.00g <20.00g
[root@racldb01 ~]# lvs
  LV       VG       Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  oraclelv oraclevg -wi-a----- 30.00g                                                    
[root@racldb01 ~]# pvdisplay /dev/sdb
  --- Physical volume ---
  PV Name               /dev/sdb
  VG Name               oraclevg
  PV Size               50.00 GiB / not usable 4.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              12799
  Free PE               5119
  Allocated PE          7680
  PV UUID               BXhyAo-9K83-KnHd-Z6kg-iU66-1Xx1-8rwPQ3
   
[root@racldb01 ~]# 

4.格式化与挂载
注意:在格式化之前需要知道xfs文件系统只支持增大,不支持减小。ext2、ext3、ext4增大减小都支持
[root@racldb01 ~]# mkfs.xfs /dev/oraclevg/oraclelv
meta-data=/dev/oraclevg/oraclelv isize=512    agcount=4, agsize=1966080 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=7864320, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=3840, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@racldb01 ~]# ls -l /dev/oraclevg/oraclelv
lrwxrwxrwx 1 root root 7 Jul 27 13:08 /dev/oraclevg/oraclelv -> ../dm-8
[root@racldb01 ~]# ls -l /dev/disk/by-uuid|grep dm-8
lrwxrwxrwx 1 root root 10 Jul 27 13:19 4a44ad07-24a0-417c-a6b9-03835ee6f91c -> ../../dm-8
[root@racldb01 ~]# mkdir -p /oracle
[root@racldb01 ~]# mount /dev/oraclevg/oraclelv /oracle
[root@racldb01 ~]# 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  9.4M  3.9G   1% /run
tmpfs                          3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/sda3                       33G  4.6G   29G  14% /
/dev/sda1                     1014M  180M  835M  18% /boot
tmpfs                          783M   12K  783M   1% /run/user/42
tmpfs                          783M     0  783M   0% /run/user/0
/dev/mapper/oraclevg-oraclelv   30G   33M   30G   1% /oracle
[root@racldb01 ~]# vi /etc/fstab
UUID=4a44ad07-24a0-417c-a6b9-03835ee6f91c /oracle                 xfs     defaults        0 0

这里的/dev/oraclevg/oraclelv实际是一个软链接

逻辑卷LV扩容(动态扩容)
首先需要确认是否有可用的扩容空间,逻辑卷是从卷组vg中创建的,所有在逻辑卷LV扩容前需要查看卷组VG的空间使用情况。
[root@racldb01 ~]# vgs
  VG       #PV #LV #SN Attr   VSize   VFree  
  oraclevg   1   1   0 wz--n- <50.00g <20.00g
[root@racldb01 ~]# 
在确认有多余空间的情况下,使用lvextend命令的-L选项扩展逻辑卷LV的大小
[root@racldb01 ~]# vgs
  VG       #PV #LV #SN Attr   VSize   VFree  
  oraclevg   1   1   0 wz--n- <50.00g <20.00g
[root@racldb01 ~]# lvs
  LV       VG       Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  oraclelv oraclevg -wi-a----- 30.00g                                                    
[root@racldb01 ~]# lvextend -L +10G /dev/oraclevg/oraclelv
  Size of logical volume oraclevg/oraclelv changed from 30.00 GiB (7680 extents) to 40.00 GiB (10240 extents).
  Logical volume oraclevg/oraclelv successfully resized.
[root@racldb01 ~]# lvextend -L 50G /dev/oraclevg/oraclelv
  Insufficient free space: 2560 extents needed, but only 2559 available
[root@racldb01 ~]# lvextend -l 12799 /dev/oraclevg/oraclelv
  Size of logical volume oraclevg/oraclelv changed from 40.00 GiB (10240 extents) to <50.00 GiB (12799 extents).
  Logical volume oraclevg/oraclelv successfully resized.
[root@racldb01 ~]# lvs
  LV       VG       Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  oraclelv oraclevg -wi-a----- <50.00g                                                    
[root@racldb01 ~]# vgs
  VG       #PV #LV #SN Attr   VSize   VFree
  oraclevg   1   1   0 wz--n- <50.00g    0 
[root@racldb01 ~]# 
但是在我们使用df命令查看时,会发现我们文件系统并没有扩展
[root@racldb01 ~]# df -h /dev/oraclevg/oraclelv
Filesystem                     Size  Used Avail Use% Mounted on
/dev/mapper/oraclevg-oraclelv   30G   33M   30G   1% /oracle
[root@racldb01 ~]# 

这是因为文件系统也需要扩容。
ext4文件系统扩容使用resize2fs [逻辑卷名称]
xfs扩容使用"xfs_growfs 挂载点"

[root@racldb01 ~]# df -h /dev/oraclevg/oraclelv
Filesystem                     Size  Used Avail Use% Mounted on
/dev/mapper/oraclevg-oraclelv   30G   33M   30G   1% /oracle
[root@racldb01 ~]# xfs_growfs /oracle
meta-data=/dev/mapper/oraclevg-oraclelv isize=512    agcount=4, agsize=1966080 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=7864320, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=3840, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 7864320 to 13106176
[root@racldb01 ~]# df -h /oracle
Filesystem                     Size  Used Avail Use% Mounted on
/dev/mapper/oraclevg-oraclelv   50G   33M   50G   1% /oracle
[root@racldb01 ~]# 

xfs文件系统只能增大,不能减小。

删除LVM
删除LVM步骤:umount挂载-->lvremove移除逻辑卷LV-->vgremove移除卷组VG-->pvremove移除物理卷PV

SSM工具:检查关于可用硬盘和LVM卷的信息。显示关于现有磁盘存储设备、存储池、LVM卷和存储快照的信息。
yum -y install system-storage-manager

列出设备信息 		ssm list dev
列出存储池信息		ssm list pool
列出卷信息		ssm list vol

ssm创建LVM
mkdir /mail-lv
ssm create -s 1G -n mail-lv --fstype xfs -p mail /dev/sdb[1-4] /mail-lv
df -h /mail-lv

[root@racldb02 mapper]# lvextend -l 12799 /dev/oraclevg/oraclelv
  Size of logical volume oraclevg/oraclelv changed from <49.92 GiB (12779 extents) to <50.00 GiB (12799 extents).
  Logical volume oraclevg/oraclelv successfully resized.
[root@racldb02 mapper]# lvextend -l 12800 /dev/oraclevg/oraclelv
  Insufficient free space: 1 extents needed, but only 0 available

https://www.cnblogs.com/cheyunhua/p/14195518.html

赞(0) 打赏
未经允许不得转载:徐万新之路 » Linux 逻辑卷管理LVM
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏