1.LVM的概念
- LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制
- 由Heinz Mauelshagen在Linux 2.4内核上实现
- 目前最新版本为:稳定版1.0.5,开发版 1.1.0-rc2,以及LVM2开发版
- 本质上是一个虚拟设备驱动,是在内核中块设备和物理设备之间添加的一个新的抽象层次
- 它可以将几块磁盘(物理卷,PhysicalVolume)组合起来形成一个存储池或者卷组(VolumeGroup)
- 可以每次从卷组中划分出不同大小的逻辑卷(LogicalVolume)创建新的逻辑设备
- 底层的原始的磁盘不再由内核直接控制,而由LVM层来控制
- LVM管理着所有物理卷的物理盘区,维持着逻辑盘区和物理盘区之间的映射
- LVM逻辑设备向上层应用提供了和物理磁盘相同的功能,如文件系统的创建和数据的访问等
- LVM逻辑设备不受物理约束的限制,逻辑卷不必是连续的空间,它可以跨越许多物理卷,并且可以在任何时候任意的调整大小
- 相比物理磁盘来说,更易于磁盘空间的管理
2.LVM基本术语
1.物理存储介质(PhysicalStorageMedia):指系统的物理存储设备:磁盘,如:/dev/hda、/dev/sda等,是存储系统最底层的存储单元
2.物理卷(Physical Volume,PV):指磁盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数
3.卷组(Volume Group,VG):类似于非LVM系统中的物理磁盘,其由一个或多个物理卷PV组成。可以在卷组上创建一个或多个LV(逻辑卷)
4.逻辑卷(Logical Volume,LV):类似于非LVM系统中的磁盘分区,逻辑卷建立在卷组VG之上。在逻辑卷LV之上可以建立文件系统(比如/home或者/usr等)
5.物理块(Physical Extent,PE):每一个物理卷PV被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。所以物理卷(PV)由大小等同的基本单元PE组成
6.逻辑块(Logical Extent,LE):逻辑卷LV也被划分为可被寻址的基本单位,称为LE。在同一个卷组中,LE的大小和PE是相同的,并且一一对应
pv | 物理卷,被lv命令处理过的物理分区 |
---|---|
vg | 物理卷组,被组装到一起的物理卷 |
pe | 物理块,lvm设备的最小存储单元是pe的整数倍 |
lvm | 逻辑卷,直接使用的设备,可以增大缩减并保持原有数据不变(其实是用软件虚拟出来的) |
3.LVM逻辑卷的建立
fdisk /dev/vdb | 创建分区 |
---|---|
fdisk -l | 查看 |
partprobe | 同步分区表 |
cat /proc/partitions | 查看是否同步成功 |
pvcreate /dev/vdb1 | 创建物理分区 |
vgcreate vg0 /dev/vdb1 | 创建物理卷组 |
lvcreate -L 100M -n lv0 vg0 | 创建逻辑卷为100M |
mkfs.xfs /dev/vg0/lv0 | 格式化(先格式化再挂载) |
mount /dev/vg0/lv0 /weixin/ | 挂载设备 |
使用监控命令:watch -n 1 ‘pvs;echo ====;vgs;echo ====;lvs;echo ====;df -h /weixin’对建立过程进行监控
4.拉伸逻辑卷LVM
1.xfs类型文件系统的拉伸
1.当划分出来的主分区/dev/vdb1够用时,直接进行拉伸
lvextend -L 300M /dev/vg0/lv0 | 对设备进行拉伸 |
---|---|
xfs_growfs /dev/vg0/lv0 | 对文件进行拉伸 |
- 只有同步文件系统之后,拉伸的lvm才可以使用
2.当划分出来的主分区/dev/vdb1不够用时(我想将lvm拉伸为800M),先划分一个主分区出来/dev/vdb2,再进行拉伸(拉伸时要确定拉伸的容量大小)
fdisk /dev/vdb | 新建另一个分区 |
---|---|
partprobe | 同步分区表 |
pvcreate /dev/vdb2 | 创建物理分区 |
vgextend vg0 /dev/vdb2 | 创建物理卷组 |
lvextend -L 800M /dev/vg0/lv0 | 拉伸逻辑卷为800M |
xfs_growfs /dev/vg0/lv0 | 格式化 |
2.ext4类型文件系统的拉伸
umount /weixin | 卸载设备 |
---|---|
mkfs.ext4 /dev/vg0/lv0 | 将设备格式化为ext4文件系统 |
lvextend -L 900M /dev/vg0/lv0 | 扩展lvm设备为900M |
mount /dev/vg0/lv0 /weixin/ | 挂载设备 |
resize2fs /dev/vg0/lv0 | 将文件系统也拉伸 |
5.缩减ext4类型文件系统的设备
umount /weixin/ | 卸载设备 |
---|---|
e2fsck -f /dev/vg0/lv0 | 先对设备里面的数据进行扫描,否则直接缩减会造成损坏 |
resize2fs /dev/vg0/lv0 500M | 缩减文件系统大小为500M |
lvreduce -L 500M /dev/vg0/lv0 | 缩减lvm设备为500M |
mount /dev/vg0/lv0 /weixin/ | 挂载设备 |
注意:
- xfs文件不支持缩减,ext4可以进行缩减
- 缩减不支持在线缩减,必须卸载掉
6.对物理卷组vg进行缩减
pvmove /dev/vdb1 /dev/vdb2 | 将vdb1中的数据移到vdb2中 |
---|---|
vgreduce vg0 /dev/vdb1 | 将/dev/vdb1从vg0卷组中移出 |
pvremove /dev/vdb1 | 将/dev/vdb1分区从系统中删除 |
注意: 将vdb1中的数据转移到vdb2中时,要确保vdb2中有足够的空间能够将vdb1的数据转移,否则需要先将vdb1缩减
7.建立lvm的快照
umount /weixin/ | 卸载设备 |
---|---|
lvcreate -L 20M -n lv0-backup -s /dev/vg0/lv0 | 建立大小为20M,名称为lv0-backup的快照 |
lvs | 查看 |
mount /dev/vg0/lv0-backup /weixin | 挂载快照 |
df -H | 查看是否挂载成功 |
注意:
- 若快照的大小和原始设备一样大则快照没有生命周期
- 若截取的数据大于快照的大小则设备就挂载不上
8.设定PE的大小
vgcreate -s 4M vg0 /dev/vdb1 | 设定物理卷组的大小为4M |
---|---|
vgdisplay | 查看大小 |
9.删除lvm设备
umount /weixin/ | 卸载设备 |
---|---|
lvremove /dev/vg0/lv0-backup | 删除快照 |
lvremove /dev/vg0/lv0 | 删除lv0 |
vgremove vg0 | 删除vg0 |
pvremove /dev/vdb2 | 将/dev/vdb2分区从系统中删除 |
fdisk /dev/vdb | 删除建立的所有分区 |