lvm是什么?
LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制
实现过程:
借用了下别人日志的图片,在此表示感谢http://dreamfire.blog.51cto.com
基本术语:
LVM是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的存储卷,在存储卷上建立文件系统
物理存储介质(Physical storage media):
指系统的物理存储设备:如磁盘,/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的基本单元,具胡唯一编号的PE是可以被LVM寻址的最小单元,PE的大小是可配置的,默认为4MB,所以物理卷由大小等同的基本单元PE组成
逻辑块(logical Extent,简称LE):
逻辑卷LV也被划分为可被寻址的基本单位,称为LE,在同一个卷组中,LE的大小和PE是相同的,并且一一对应
安装管理工具:
如果系统安装时使用了lvm ,一般都会带管理工具,如果没有检查下是否安装一lvm工具
<span style="color:#000000"><code>rpm -qa <span style="color:#009900 !important">|grep lvm</span></code></span>
- 1
创建管理:
1.创建分区:
使用分区工具fdisk创建lvm分区,方法和创建其它一般分区一样,区别是LVM的分区类型是8e,普通的是83(他用fdisk下的t修改类型)
<span style="color:#000000"><code>fdisk /dev/sdb
n
e
+<span style="color:#006666 !important">5</span>G(这一步选择大小)
w
<span style="color:#009900 !important">#可以重复创建多个</span></code></span>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
2.创建物理卷:
将磁盘整个物理卷创建为物理卷:
<span style="color:#000000"><code>pvcreate /dev/sdb</code></span>
- 1
将单个分区创建为物理卷:
<span style="color:#000000"><code>pvcreate /dev/sdb5</code></span>
- 1
将多个分区创建为物理卷:
<span style="color:#000000"><code>pvcreate /dev/sdb{<span style="color:#006666 !important">5</span>,<span style="color:#006666 !important">6</span>} <span style="color:#880000 !important"><em>#或者pvcreate /dev/sdb5 /dev/sdb6 </em></span></code></span>
- 1
使用pvs或者 pvdisplay查看,pvdisplay也可以只指定某个pv 如:pvdiplay /dev/sdb6
3.创建卷组:
<span style="color:#000000"><code>vgcreate myvg /dev/sdb{<span style="color:#006666 !important">5</span>,<span style="color:#006666 !important">6</span>} <span style="color:#880000 !important"><em>#myvg是卷组的逻辑名,后面的添加到该卷组的所有分区和磁盘</em></span></code></span>
- 1
默认PE是4MB,但也可以手动指定,PE大小范围为8KB到16G,并且必须总是2的倍数,用-s指定,单位可以是bBsSkKmMgGtTpPeE
<span style="color:#000000"><code>vgcreate -s <span style="color:#006666 !important">8</span>M myvg /dev/sdb{<span style="color:#006666 !important">5</span>,<span style="color:#006666 !important">6</span>}</code></span>
- 1
注:由于内核原因,PE大小决定了逻辑卷的最大大小,4MB的PE决定了单个逻辑卷最大容量为256GB,若希望使用大于256G的逻辑卷则创建卷组 时指定更大的PE
使用vgs或者vgdisplay查看
4.添加新的物理卷到卷组中:
<span style="color:#000000"><code>pvcreate /dev/sdb7
vgextend myvg /dev/sdb7</code></span>
- 1
- 2
5.从卷组中删除一个物理卷:
要从一个卷组中删除一个物理卷,首先要确认要删除的物理卷没有被任何逻辑卷正在使用,就要使用pvdisplay命令察看一个该物理卷信息
如果某个物理卷正在被逻辑卷所使用,就需要将该物理卷的数据备份到其它地方,然后再删除,删除物理卷的命令为
<span style="color:#000000"><code>pvmove /dev/sdb5 <span style="color:#880000 !important"><em>#把数据移动其它PV上去</em></span>
vgreduce myvg /dev/sdb5 <span style="color:#880000 !important"><em>#返sdb5这个PV从myvg移除</em></span>
vgremove /dev/sdb5 <span style="color:#880000 !important"><em>#把sdb5这个pv删除,把里面的数据都抹除,使用pvs就看不到了</em></span></code></span>
- 1
- 2
- 3
6.创建逻辑卷:
在VG名为myvg上创建一个50M的逻辑卷名为testlv
<span style="color:#000000"><code>lvcreate -L <span style="color:#006666 !important">50</span>M -n testlv myvg <span style="color:#880000 !important"><em>#-L指定大小(支持的单位bBsSkKmMgGtTpPeE) -n 是逻辑卷的名称,myvg是卷组名</em></span></code></span>
- 1
然后格式化逻辑卷
<span style="color:#000000"><code>msfs<span style="color:#009900 !important">.ext</span>4 /dev/myvg/testlv</code></span>
- 1
挂载到/testlv目录
<span style="color:#000000"><code>mount /dev/myvg/testlv /testlv
注:挂载引用的的路径是/dev/mapper/myvg-testlv, <span style="color:#008800 !important">/dev/myvg</span><span style="color:#008800 !important">/testlv只是个软链接,链接到/dev</span><span style="color:#008800 !important">/mapper/myvg</span>-testlv</code></span>
- 1
- 2
使用lvs或lvdisplay查看逻辑卷相关信息
7.创建文件系统:
<span style="color:#000000"><code>resize2fs -p /dev/myvg/testlv <span style="color:#880000 !important"><em>#或者resize2fs -p /dev/mapper/myvg-testlv</em></span>
<span style="color:#880000 !important"><em>#然后挂载就可以使用了</em></span>
mount /dev/myvg/testlv /testlv</code></span>
- 1
- 2
- 3
8.删除一个逻辑卷:
a.删除逻辑卷以前首先需要将其卸载,然后删除
<span style="color:#000000"><code>umount /testlv</code></span>
- 1
b.删除逻辑卷
<span style="color:#000000"><code>lv<span style="color:#880000 !important"><em>remove /dev/myvg/testlv </em></span></code></span>
- 1
9.扩展逻辑卷大小:
a.扩展之前请确定vg里有足够的空间可以供扩展
b.扩展物理边界
<span style="color:#000000"><code>lvextend -L <span style="color:#006666 !important">3</span>G /dev/myvg/testlv <span style="color:#880000 !important"><em>#-L指定大小(+3G意思是扩展3G,不加就是扩展到3G) 扩展物理边界,这里用df -h 是看不到变化的</em></span></code></span>
- 1
c.扩展逻辑边界
<span style="color:#000000"><code>resize2fs -p /dev/myvg/testlv <span style="color:#880000 !important"><em>#扩展逻辑边界,或者写resize2fs -p /dev/mapper/myvg-testlv</em></span></code></span>
- 1
10.缩减逻辑卷大小:
a.缩减是有风险的,不能在线缩减,需要先卸载
<span style="color:#000000"><code>umount /testlv</code></span>
- 1
b.确保缩减后的空间大小,依然能存储原有的所有数据
<span style="color:#000000"><code>e2fsck <span style="color:#50a14f">-f</span> /dev/mapper/myvg<span style="color:#50a14f">-testlv</span></code></span>
- 1
c.在缩减之前,应该先强行检查文件系统,以确保文件系统牌一致性状态
<span style="color:#000000"><code>resize2fs /dev/mapper/myvg-testlv <span style="color:#006666 !important">3</span>G <span style="color:#880000 !important"><em>#缩减到3G</em></span></code></span>
- 1
d.缩减物理边界
<span style="color:#000000"><code>lvreduce -L <span style="color:#006666 !important">3</span>G /dev/myvg/testlv
<span style="color:#009900 !important">#会有提示:Do you really want to reduce testlv?[y/n]: 按y确定就好</span>
<span style="color:#009900 !important">#完成后会提示:Reducing logical volume testlv to 3GB</span>
Logical volume testlv successfully resized</code></span>
- 1
- 2
- 3
- 4
11.快照卷
a.生命周期为整个数据时长,在这段时长内,数据的增长量不能超出快照卷大小
b.快照卷应该是只读的
c.跟原卷在同一卷组内
lvcreate
-L: 指定大小,指定的大小需要自己估计,如果数据的增长量大于快照卷的大小,数据会损毁
-s:表示创建快照卷
-p:指定权限 r|w
<span style="color:#000000"><code><span style="color:#880000 !important"><em>#对/dev/myvg/testlv创建快照卷testlv_snap</em></span>
lvcreate -L <span style="color:#006666 !important">1</span>G -n testlv_snap -s -p r /dev/myvg/testlv </code></span>
- 1
- 2
使用lvs或者 lvdisplay可以查看
挂载快照卷:
<span style="color:#000000"><code>mount /dev/myvg/testlv_snap /testlv_snap</code></span>
- 1
卸载快照卷:
<span style="color:#000000"><code>umount /testlv_snap</code></span>
- 1
移除快照卷:
<span style="color:#000000"><code>lv<span style="color:#880000 !important"><em>remove /dev/myvg/tstlv_snap</em></span></code></span>