关键词:
Linux入门之磁盘管理(8)LVM逻辑卷的使用
在Linux中虽然有raid来保证数据的稳定以及磁盘性能的提高,但是其扩展性并不是很好,在很多生产环境中,都是数据正在使用中,在这时如果中断一段时间就会有很大的损失,因此Linux提供了LVM虚拟逻辑卷的概念,同样多个磁盘设备或分区设备组合在一起,但是,如果空间需要缩减或者扩展,可以很方便的进行动态改变,甚至进行数据快照。
逻辑卷管理器(LVM):
1、允许对卷进行方便操作的抽象层,包括重新定义文件系统的大小
2、允许在多个目录设备间重新组织文件系统
(1)将设备指定为物理卷
(2)用一个或多个物理卷来创建一个卷组
(3)物理卷是用来固定大小的物理区域(Physical Extent, PE)来定义的
(4)在物理卷上创建的逻辑卷是由物理区域(PE)组成的
(5)可以在逻辑卷上创建文件系统
LVM的需要:
dm: device mapper :将一个或多个底层块设备组成一个逻辑设备的模块
注意:内核必须支持此模块,否则无法使用lvm功能
设备名:/dev/dm-#
软连接:/dev/mapper/VG_NAME-LV_NAME
如:/dev/mapper/vol0-root
/dev/VG_NAME/LV_NAME
如:/dev/vol0/root
当pv被创建之后只有被加入指定创建的vg组,才会被划分PE,而Vg组管理每个pv设备,Lvm逻辑创建后指定大小使用的组不一定就是有序的,此时没有了各个分区以及各个设备的概念,然后扩展LV时就会向各个vg组中抽取PE使用,然后将PE标记为LE用于使用,如果缩减LV,也就是将LE移除变成PE。
Lvm逻辑卷管理相关命令
pv管理命令
pvcreate 创建pv物理卷
pvcreate /dev/dev_file... #将一个或多个磁盘设备创建为pv物理卷
pvremove 移除pv物理卷
pvremove /dev/dev_pvfile... #将一个或多个磁盘设备从pv物理卷移除
pvscan 扫描pv
pvs 列出pv列表
pvs /dev/pv_file #只列出指定pv
pvdisplay 查看pv详细信息
pvdisplay /dev/dev_pvfile #查询指定pv物理卷的详细信息
pvmove 迁移指定pv下的PE分配到其它pv的PE中
pvmove /dev/dev_pvfile #将指定pv中的PE迁移至其它pv中
vg管理命令
vgcreate 创建vg组
vgcreate VG_NAME [-s PE_SIZE] /dev/pv_file #将指定pv加入到名为VG_NAME的VG组中,分配PE
vgremove 移除vg组
vgremove /dev/vg_file
vgextend 扩展vg加入pv
vgextend VG_NAME /dev/new_pv_file #新增pv物理卷到指定VG组中
vgreduce 缩减vg移除pv
vgreduce VG_NAME /dev/pv_file #移除指定VG组中的pv成员
vgs 查看vg列表
vgs VG_NAME #只列出指定VG信息
vgdisplay 查看vg组详细信息
vgdisplay VG_NAME #示指定VG组的详细信息
lv管理命令
lvcreate 创建逻辑卷
lvcreate -n LV_NAME -L [SIZE] VG_NAME #创建指定大小逻辑卷,并从指定VG组中分配LE
lvcreate -n LV_NAME -L [SIZE] -p r -s /dev/vg/lv_file #创建基于指定lv逻辑卷的快照卷
lvextend 扩展逻辑卷
lvextend [[+]SIZE] /dev/vg/lv_file #扩展指定逻辑卷的大小,+SIZE为增加多少,SIZE为增加到多少
lvreduce 缩减逻辑卷
lvreduce [-[SIZE]] /dev/vg/lv_file #缩减指定逻辑卷的大小,-SIZE为缩减多少,SIZE为缩减到多少
lvresize 重置lv物理大小
lvresize -L SIZE /dev/vg/lvfile #重置逻辑卷的物理实际大小
其它命令
resizefs /dev/vg/lvfile SIZE #重置逻辑卷的物理实际大小,只适用于ext系列文件系统
lvextend -r -l +100%FREE /dev/myvg/lvtest #同时扩展物理大小和逻辑卷大小,使用剩余所有PE
xfs_growfs /dev/xfs_dev #专门用于扩展xfs文件系统类物理大小,使用所有剩余PE
使用案例-阶段1:
1、准备分区设备:
#准备lvm类型分区或设备
[[email protected] ~]# fdisk -l /dev/sdb 2> /dev/null | grep ‘^/.*‘ /dev/sdb1 1 132 1060258+ 8e Linux LVM /dev/sdb2 133 264 1060290 8e Linux LVM /dev/sdb3 265 396 1060290 8e Linux LVM /dev/sdb4 397 2610 17783955 5 Extended /dev/sdb5 397 528 1060258+ 8e Linux LVM /dev/sdb6 529 660 1060258+ 8e Linux LVM
#在使用fdisk中指定类型为Linux Lvm,设置为8e即可,可以使用以下命令来查看对应类型的code列表
[[email protected] ~]# echo -e ‘l q‘ | fdisk /dev/sdb 2> /dev/null | grep -i --color -o ‘..[[:space:]]+linux.*lvm‘ 8e Linux LVM
2、新增PV卷:
#先选出3个分区设备创建为pv
[[email protected] ~]# pvcreate /dev/sdb{1,2,3} Physical volume "/dev/sdb1" successfully created Physical volume "/dev/sdb2" successfully created Physical volume "/dev/sdb3" successfully created
解析:pvcreate支持分组表示多个设备,suceessfully表示创建成功
#查看pv成员,显示有3个,各种1G,但是没有分配VG组
[[email protected] ~]# pvs PV VG Fmt Attr PSize PFree /dev/sdb1 lvm2 ---- 1.01g 1.01g /dev/sdb2 lvm2 ---- 1.01g 1.01g /dev/sdb3 lvm2 ---- 1.01g 1.01g
#重新扫描pv,这里为了再次确认pv卷列表中的PV设备
[[email protected] ~]# pvscan
PV /dev/sdb1 lvm2 [1.01 GiB]
PV /dev/sdb2 lvm2 [1.01 GiB]
PV /dev/sdb3 lvm2 [1.01 GiB]
Total: 3 [3.03 GiB] / in use: 0 [0 ] / in no VG: 3 [3.03 GiB]
#使用pvdisplay查看当前pv详细信息,信息过长,因此这里进行截取部分重要信息
#查看PV及对应设备
[[email protected] ~]# pvdisplay | grep ‘<(VG|PV)>.*Name‘ PV Name /dev/sdb1 VG Name PV Name /dev/sdb2 VG Name PV Name /dev/sdb3 VG Name
注意:这里没有创建vg也就没有分配PE,下面创建vg组:
3、创建VG组,生成PE
#创建vg0组,名为myvg,分配pv卷sdb{1,2,3}3个,默认不指定PE块大小未4M
[[email protected] ~]# vgcreate myvg /dev/sdb{1,2,3} Volume group "myvg" successfully created
#查看vg组大小、PV个数
[[email protected] ~]# vgs VG #PV #LV #SN Attr VSize VFree myvg 3 0 0 wz--n- 3.02g 3.02g
#重新扫描vg组
[[email protected] ~]# vgscan Reading all physical volumes. This may take a while... Found volume group "myvg" using metadata type lvm2
#重新扫描pv,pv已经有了VG组,名为myvg
[[email protected] ~]# pvscan PV /dev/sdb1 VG myvg lvm2 [1.01 GiB / 1.01 GiB free] PV /dev/sdb2 VG myvg lvm2 [1.01 GiB / 1.01 GiB free] PV /dev/sdb3 VG myvg lvm2 [1.01 GiB / 1.01 GiB free] Total: 3 [3.02 GiB] / in use: 3 [3.02 GiB] / in no VG: 0 [0 ]
#查看PE大小分配
[[email protected] ~]# vgdisplay myvg | grep ‘PE.*‘ PE Size 4.00 MiB Total PE 774 Alloc PE / Size 0 / 0 Free PE / Size 774 / 3.02 GiB
解析:这里我们发现PE被划分4M一个,总共有774个PE,使用0个。
4、创建Lv逻辑卷
#创建30M的lv逻辑卷,名为lv0,从VG组myvg中的PV成员分配PE标记为LE空间表示lv逻辑卷的块
[[email protected] ~]# lvcreate -n lv0 -L 30M myvg Rounding up size to full physical extent 32.00 MiB Logical volume "lv0" created.
#查看lv信息,发现居然为32M,这里有小误差是正常的
[[email protected] ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lv0 myvg -wi-a----- 32.00m
#重新扫描lv
[[email protected] ~]# lvscan
ACTIVE ‘/dev/myvg/lv0‘ [32.00 MiB] inherit
#为lv0逻辑卷创建文件系统,类型为ext4
[[email protected] ~]# mke2fs -t ext4 /dev/myvg/lv0
#挂载lv0逻辑卷
[[email protected] ~]# mount /dev/myvg/lv0 /mnt/lv0
#查看挂载属性,确认挂载成功
[[email protected] ~]# mount | grep ‘lv0‘ /dev/mapper/myvg-lv0 on /mnt/lv0 type ext4 (rw)
#加入一个文本文件
[[email protected] ~]# cp /etc/issue /mnt/lv0/
#查看源文件内容
[[email protected] ~]# cat /mnt/lv0/issue CentOS release 6.8 (Final) Kernel on an m
#修改文件内容
[[email protected] ~]# sed -i ‘$ a add new line‘ /mnt/lv0/issue [[email protected] ~]# cat /mnt/lv0/issue CentOS release 6.8 (Final) Kernel on an m add new line
使用案例-阶段2:
5、逻辑卷大小的动态调整解析:
在进行逻辑卷大小之前,需要知道一个简单的概念,逻辑卷在进行扩展时,是需要配合时间物理大小进行扩展的,扩展后的总大小不能超过物理卷实际总大小,而进行逻辑卷缩减时物理卷也要同步缩减,逻辑卷就包含于物理卷中,如下图:
6、扩展逻辑卷:
#查看此时逻辑卷大小,总大小为30M左右,剩余25M
[[email protected] ~]# df -h | grep ‘myvg-lv0‘ /dev/mapper/myvg-lv0 27M 397K 25M 2% /mnt/lv0
说明:第一列表示lv0设备映射文件,第2列表示总大小,为27M。
#查看myvg组中剩余PE
[[email protected] ~]# vgs myvg VG #PV #LV #SN Attr VSize VFree myvg 3 1 0 wz--n- 3.02g 2.99g
解析:这里剩余还有很多,因此扩展30M
#扩展lv0逻辑大小增加 30M
[[email protected] ~]# lvextend -L +30M /dev/myvg/lv0 Rounding size to boundary between physical extents: 32.00 MiB. Size of logical volume myvg/lv0 changed from 32.00 MiB (8 extents) to 64.00 MiB (16 extents). Logical volume lv0 successfully resized.
解析:这里显示扩展32M,最终为64M,此时我们检查lv大小
[[email protected] ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lv0 myvg -wi-ao---- 64.00m
解析:这里已经从32M变为64M,表示逻辑大小扩展成功
#最后一步,检查物理大小是否改变
[[email protected] ~]# df -h | grep ‘myvg.*lv0‘ /dev/mapper/myvg-lv0 27M 397K 25M 2% /mnt/lv0
#这里发现,任然没有改变,因此我们需要重新设置物理卷同步大小
[[email protected] ~]# resize2fs -p /dev/myvg/lv0 resize2fs 1.41.12 (17-May-2010) Filesystem at /dev/myvg/lv0 is mounted on /mnt/lv0; on-line resizing required old desc_blocks = 1, new_desc_blocks = 1 Performing an on-line resize of /dev/myvg/lv0 to 65536 (1k) blocks. The filesystem on /dev/myvg/lv0 is now 65536 blocks long.
#再次查看分逻辑物理大小,已经改变,已经从27M变成58M
[[email protected] ~]# df -h | grep ‘myvg.*lv0‘ /dev/mapper/myvg-lv0 58M 651K 55M 2% /mnt/lv0
#下面查看文件是否正常:
[[email protected] ~]# cat /mnt/lv0/issue CentOS release 6.8 (Final) Kernel on an m add new line
7、缩减逻辑卷:
注意事项:
1、不能在线缩减,得先卸载;
2、确保缩减后的大小依然能存储原有的所有数据;
3、在缩减之前应该先前行检查文件系统,以确保文件系统处于停止状态
缩减操作:
#先查看物理空间大小,物理卷使用651K,剩余55M
[[email protected] ~]# df -lh | grep ‘myvg.*lv0‘ /dev/mapper/myvg-lv0 58M 651K 55M 2% /mnt/lv0
#卸载逻辑卷
[[email protected] ~]# umount /dev/myvg/lv0
#强行检查
[[email protected] ~]# e2fsck -f /dev/myvg/lv0 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/myvg/lv0: 12/16384 files (8.3% non-contiguous), 6822/65536 blocks
#查看先在lv0大小
[[email protected] ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lv0 myvg -wi-a----- 64.00m
#要缩减30M,物理卷使用651K,剩余55M,因此要设置物理卷总大小不得小于651K
[[email protected] ~]# resize2fs /dev/myvg/lv0 28 resize2fs 1.41.12 (17-May-2010) resize2fs: New size smaller than minimum (8870)
#缩减逻辑卷
[[email protected] ~]# lvreduce -L -30M /dev/myvg/lv0 Rounding size to boundary between physical extents: 28.00 MiB. WARNING: Reducing active logical volume to 36.00 MiB. THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce myvg/lv0? [y/n]: y Size of logical volume myvg/lv0 changed from 64.00 MiB (16 extents) to 36.00 MiB (9 extents). Logical volume lv0 successfully resized.
#再次挂载设备
[[email protected] ~]# df -lh | grep ‘/mnt/lv0‘ /dev/mapper/myvg-lv0 31M 445K 29M 2% /mnt/lv0
#再次查看文件
[[email protected] ~]# cat /mnt/lv0/issue CentOS release 6.8 (Final) Kernel on an m add new line
注意事项:如果需要扩展,发现剩余pv不够用,可以先添加pv设备然后加入指定vg值,分配PE空间后再进行扩展,如果缩减必须先卸载设备,不然会损坏设备数据,然后强行检查,确认无误再进行操作,缩减必须先缩减物理卷再操作逻辑。如果移除逻辑卷,需要lvremove先移除,然后移除vg,最后移除pv,如果pv有数据,想移除pv,得先pvmove移动PE空间至其它PE
本文出自 “神剑特兰克斯” 博客,请务必保留此出处http://mengzhaofu.blog.51cto.com/10085198/1845365
转载linux磁盘管理:lvm逻辑卷管理
Linux学习之CentOS(二十五)--Linux磁盘管理:LVM逻辑卷基本概念及LVM的工作原理 这篇随笔将详细讲解Linux磁盘管理机制中的LVM逻辑卷的基本概念以及LVM的工作原理!!!一、传统的磁盘管理其实在Linux操作系统中,我们的磁盘管理... 查看详情
逻辑卷管理器(lvm)
...LVM(LogicalVolumeManager)逻辑卷管理是在Linux2.4内核以上实现的磁盘管理技术。它是Linux环境下对磁盘分区进行管理的一种机制。现在不仅仅是Linux系统上可以使用LVM这种磁盘管理机制,对于其它的类UNIX操作系统,以及windows操作系统都... 查看详情
lvm基础详细说明及动态扩容lvm逻辑卷的操作记录
...区,然后在分区上创建文件系统。而LVM它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。通过LVM系统管理员可以轻松管理磁盘分区,如:将若干个磁盘分... 查看详情
lvm基础详细说明及动态扩容lvm逻辑卷的操作记录
...----------------------------------------------------它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。通过LVM系统管理员可以轻松管理磁盘分区,如:将若干个磁盘分... 查看详情
linux系统中lvm是啥?有啥作用?
...统中lvm是什么?LVM中文意思为逻辑卷管理,是Linux环境下对磁盘分区进行管理的一种机制,接下来我们来看看详细的内容介绍。 Linux系统中lvm是什么? LVM,全称LogicalVolumeManager,即逻辑卷管理,是Linux环境下对磁盘分区进行... 查看详情
磁盘空间的扩展与减少------逻辑卷管理器lvm
...LVM是LogicalVolumeManager(逻辑卷管理)的简写,是Linux环境下对磁盘分区进行管理的一种机制。逻辑卷管理通过将底层物理硬盘抽象封装起来,以逻辑卷的形式表现给上层系统,逻辑卷的大小可以动态调整,而且不会丢失现有数据。新... 查看详情
lvm逻辑磁盘管理
...盘卷管理(LogicalVolumeManager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。LVM的工作原理其实很简单,它就是通过将底层的物理硬盘抽象的... 查看详情
磁盘管理之lvm
...个或多个硬盘的分区在逻辑上集合来呈现给上层应用,对磁盘实现动态管理的机制。相对于普通的磁盘分区有很大的灵活性,使用LVM在一定程度上就可以解决普通磁盘分区带来的问题。2、专业术语 ●物理卷(PhysicalVo... 查看详情
逻辑卷管理(lvm)
...eloperworks/cn/linux/l-lvm2/ 比较详细地描述了Linux逻辑卷的管理https://linux.die.net/man/8/lvm LinuxLVM2工具手册本文将从以下几个方面介绍LVM什么是逻辑卷逻辑卷的结构逻辑卷的管理迁移逻辑卷到新的系统删除逻辑卷逻辑卷快照什么 查看详情
lvm逻辑卷的创建管理
1.给虚拟机加三个磁盘分区2.创建逻辑卷物理卷卷组新建目录并挂载到这个目录下df-Th查看挂载情况lvscan查看逻辑卷信息 查看详情
lvm基础应用扩展及缩减
... LVM(LogicalvolumeManager)即逻辑卷管理。它是Linux环境下对磁盘分区进行管理的一种机制。现在不仅仅是Linux系统上可以使用LVM这种磁盘管理机制,对于其它的类UNIX操作系统,以及windows操作系统都有类似与LVM这种磁盘管理软件。&n... 查看详情
lvm逻辑卷管理
...盘卷管理(LogicalVolumeManager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。LVM的工作原理其实很简单,它就是通过将底层的物理硬盘抽象的... 查看详情
lvm逻辑卷基本概念及lvm的工作原理
这篇随笔将详细讲解Linux磁盘管理机制中的LVM逻辑卷的基本概念以及LVM的工作原理!!!一、传统的磁盘管理其实在Linux操作系统中,我们的磁盘管理机制和windows上的差不多,绝大多数都是使用MBR(MasterBootRecorder)都是通过先对一... 查看详情
lvm逻辑卷的管理
lvm 逻辑卷管理工作原理:它是将普通的磁盘管理动态化,我们可以将物理硬盘封装起来,将其转换为逻辑卷进行管理,他经过的过程为物理卷(pv)- 逻辑卷组(vg)-逻辑卷(lv)步骤:1;创建分区 fdisk /dev/sda ... 查看详情
linux中的高级存储管理之逻辑卷管理器lvm(代码片段)
...3.LVM的拉伸1.VG容量充足时2.当VG不足时4.LVM的缩减5.LVM的LV磁盘快照6.LVM的删除7.如何移除正在使用的PV3.LVM相关命令集合前言在linux提升五中,我们介绍了关于磁盘分区等的内容。但是在生产环境中往往会出现这样的情况,在... 查看详情
lvm逻辑卷管理
c LVM是Linux环境中对磁盘分区进行管理的一种机制,是建立在硬盘和分区之上、文件系统之下的一个逻辑层,可提高磁盘分区管理的灵活性。默认安装的分区格式就是LVM逻辑卷的格式,需要注意的是/boot分区不能... 查看详情
lvm基础详细说明及动态扩容lvm逻辑卷的操作记录
LVM概念:--------------------------------------------------------------------------------------------------------------------------------------------------------它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个 查看详情
lvm逻辑盘卷管理
...盘卷管理(LogicalVolumeManager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。LVM的工作原理是通过将底层的物理硬盘抽象的封装起来,然后以... 查看详情