LVM是逻辑盘卷管理(Logical Volume Manager)的简称,是Linux环境下对磁盘分区进行管理的一种机制。
LVM最大的特点就是可以对磁盘进行动态管理,不丢失现有的数据。
一、基本概念
1. PV(Physical Volume)-物理卷
可以是实际物理硬盘上的分区,也可以是整个物理硬盘,也可以是raid设备。
2. VG(Volumne Group)-卷组
一个卷组中至少要包括一个物理卷,在卷组建立之后可动态添加物理卷到卷组中。
3. LV(Logical Volume)-逻辑卷
卷组中的未分配空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态地扩展和缩小空间。
三者之间的关系如图1.1,三者的创建流程如图1.2
图1.1LVM结构
1. 一个物理盘就是一个PV,有几个物理盘就有几个PV
2. 一个或者几个硬盘可以组成一个VG,一个系统可以包括好几个VG
3. PV组成VG,在VG上划分LV。LV就可以挂载到你想要挂载到的一个目录下面了,
LV挂载到目录后,操作这个目录就是操作这个LV。
图1.2LVM创建流程
二、安装LVM依赖包和创建磁盘分区
2.1判断LVM管理工具是否已经安装
查看是否已经安装lvm的RPM包# rpm -qa|grep lvm
如果没有安装,采用yum方式安装依赖的包
# yum install lvm*
2.2创建LVM所需要的分区
为Linux系统添加一块新的磁盘进行分区操作查看添加的盘信息
# fdisk -l
图2.1查看磁盘信息
上图的Linux系统中目前共三块磁盘,/dev/sda 、/dev/sdb、/dev/sdc
前面两块磁盘均已经格式化了,第三块盘就是刚刚新增加的磁盘,暂未格式化。
2.3格式化新增的磁盘
输入的格式化命令顺序:n p t 8e w
图2.2 fdisk格式化
fdisk -l 再次查看磁盘信息如下图所示:
图2.3 fdisk操作完成
上图红色框中所展示的磁盘信息即为LVM需要的格式,Device Boot名称为: /dev/sdc1
三、利用LVM创建逻辑盘卷
3.1 创建 PV
查看目前PV
# pvs
# pvdisplay
创建新的PV
# pvcreate /dev/sdc1
3.2 创建 VG
查看目前VG
# vgs
# vgsdisplay
创建VG
# vgcreate VolGroup00 /dev/sdc1
说明:
VolGroup00 是VG的名称,可以随意取名,但不能和系统中已存在的VG名称重名,
如果想扩展已创建的VG容量请参考第五章。
注意:
关于创建VG时,说明下PE(Physical Extent)-物理块的概念,他们三者的结构关系图如图3.0所示:
图3.0 PE、LV、VG关系
LVM默认使用4MB的PE区块,而LVM的LV最多仅能含有65534个PE (lvm1 的格式),
因此默认的LVM的一个LV最大容量为4M*65534/(1024M/G)=256G。
PE是整个LVM最小的储存区块,如果想指定其他大小的存储块作为PE则创建VG时候指定参数-s即可。
例如:vgcreate-s64MBVolGroup01 /dev/sdb1 指定64M作为PE区块,-s后面的参数必须是2的倍数。
在Red Hat Enterprise Linux AS 4中PE大小范围为8 KB 到 16GB。
在CentOS 6.x以后,由于直接使用lvm2的各项格式功能,因此这个限制已经不存在了,
不过建议创建VG时指定下具体的PE值为好,不指定则默认4M。
3.3 创建 LV
查看目前LV
# lvs
# lvdisplay
创建VG
# lvcreate -L 4G -n lvData02 VolGroup00
说明:
-L 指定创建的LV 的大小 ,-n 指定 LV的名字为lvData02,
同样LV的名称不能重名,VolGroup00是VG的名称。
3.4 格式化LV
# mkfs -t ext4 /dev/VolGroup00/lvData02
3.5 挂载 LV
将新创建的LV 挂载到目录 /lvData2 下
# mkdir /lvData2
# mount /dev/VolGroup00/lvData02 /lvData2
3.6 开机自动挂载LV
l 生成磁盘的UUID
# blkid /dev/VolGroup00/lvData02
l 写入启动加载的配置文件中
# vi /etc/fstab
l 关于 /etc/fstab 配置各列项说明
|--第一列可以是实际分区名,也可以是实际分区的卷标(Lable)
|-- 第二列是挂载点
|--第三列为此分区的文件系统类型
|--第四列是挂载的选项,用于设置挂载的参数
|------- auto: 系统自动挂载,fstab默认就是这个选项
|------- defaults: rw, suid, dev, exec, auto, nouser, and async.
|------- noauto 开机不自动挂载
|------- nouser 只有超级用户可以挂载
|------- ro 按只读权限挂载
|------- rw 按可读可写权限挂载
|------- user 任何用户都可以挂载
|------- 请注意光驱和软驱只有在装有介质时才可以进行挂载,因此它是noauto
|--第五列是dump备份设置
当其值设置为1时,将允许dump备份程序备份;设置为0时,忽略备份操作
第六列是fsck磁盘检查设置
当其值为0时,永远不检查;而/根目录分区永远都为1。其它分区从2开始,
数字越小越先检查,如果两个分区的数字相同,则同时检查。修改完此文件并保存 后,
重启服务器生效
四、对LV进行扩容
LV扩容1G空间
# lvextend -L +1G /dev/VolGroup00/lvData02
执行完成后 VolGroup00空闲空间少了1G,lvData02增加了1G。
但df -h命令查看时发现逻辑券没有增加还是原来的4G,此时需要操作如下命令:
# resize2fs /dev/VolGroup00/lvData02
分配VG中所有剩余的空闲空间到某个LV中 (-l 是小写)
# lvextend -l +100%FREE /dev/VolGroup00/lvData01
# resize2fs /dev/VolGroup00/lvData01
五、对VG进行扩容
对某个VG卷组进行扩容,先增加PV在进行VG扩容。
如何创建PV,请参照前面3.1的内容。
例如对VG卷组“VolGroup00”扩容,假设已经新增了一个PV“/dev/sdd1”
# vgextend VolGroup00 /dev/sdd1