Lesson16 Linux系统中的 LVM(逻辑卷管理)
文章目录
1. 什么是LVM
LVM是 Logical Volume Manager(逻辑卷管理)的缩写,它是Linux环境下对磁盘分区进行管理的一种机制
Linux用户安装Linux操作系统时遇到的一个常见的难以决定的问题就是如何正确地评估各分区大小,以分配合适的硬盘空间
普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小,当一个逻辑分区存放不下某个文件时,这个文件受上层文件系统的限制,不能跨越多个分区来存放,所以也不能同时放到别的磁盘上,当某个分区空间耗尽时,解决的方法通常是使用符号链接
或者使用调整分区大小的工具,但这只是暂时解决办法,没有从根本上解决问题。
随着Linux的逻辑卷管理功能的出现,这些问题都迎刃而解,用户在无需停机的情况下可以方便地调整各个分区大小
2. LVM的相关术语解释
pv:物理卷(Physical Volume,PV)
指磁盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块
但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数
vg:卷组(Volume Group,VG)
类似于非LVM系统中的物理磁盘,其由一个或多个物理卷PV组成
可以在卷组上创建一个或多个LV(逻辑卷)
lv:逻辑卷(Logical Volume,LV)
类似于非LVM系统中的磁盘分区,逻辑卷建立在卷组VG之上
在逻辑卷LV之上可以建立文件系统(比如/home或者/usr等)
pe:物理块(Physical Extent,PE)
每一个物理卷PV被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元
PE的大小是可配置的,默认为4MB,所以物理卷(PV)由大小等同的基本单元PE组成
pv | 物理卷,被lvm命令处理过的物理分区 |
vg | 物理卷组,被组装到一起的物理卷 |
pe | lvm设备的最小存储单元是pe的整数倍 |
lvm | 直接使用的设备,可以增大缩减并保持原有数据不变(其实是用软件虚拟出来的) |
实验环境:为了使实验环境纯净,建议在做实验前先将server虚拟机reset
3. 建立LVM逻辑卷
使用监控命令:watch -n 1 'pvs;echo======;vgs;echo ========;lvs;echo ======;df -h /mnt’命令进行监控
fdisk -l 查看一个未分区的设备,这里选择/dev/vdb
fdisk /dev/vdb 划分一个主分区/dev/vdb1 ; wq退出保存(大小为1G)
fdisk /dev/vdb 按t,将标签写为8e(贴lvm标签)wq退出保存
pvcreate /dev/vdb1 创建物理分区(类似于将橙子榨成汁)
vgcreate -s vg0 /dev/vdb1 (将橙汁倒进一个大容器)
lvcreate -L 100M -n lv0 vg0(将大容器的橙子汁倒出来小杯子喝,想倒100M)
mkfs.xfs /dev/vg0/lv0(将分出来的lvm逻辑卷格式化才能挂载)
mount /dev/vg0/lv0 /mnt/(挂载在/mnt下面用)
df查看是否挂载
4. 拉伸LVM逻辑卷
监控命令仍然存在,继续监控
分vdb1够用和不够用两种情况:
第一种情况:当划分出来的主分区/dev/vdb1够用时,直接进行拉伸(当橙汁够喝的时候)
lvextend -L 500M /dev/vg0/lv0 拉伸lvm的大小
xfs_growfs /dev/vg0/lv0 同步文件系统的大小
第二种情况:当划分出来的主分区/dev/vdb1不够用时(我想将lvm拉伸为1500M),先划分一个主分区出来/dev/vdb2,再拉伸
partprobe 同步分区表
pvcreate /dev/vdb2 榨橙汁
vgextend vg0 /dev/vdb2将橙汁倒进去大杯子
lvextend -L 1500M /dev/vg0/lv0 拉伸lvm至1500M
xfs_growfs /dev/vg0/lvo 拉伸文件系统(否则拉伸的文件不能用)
说明:xfs文件系统不能进行缩减,ext4文件系统支持缩减,它的拉伸方式与xfs也不一样
5. 将ext4类型的文件系统的设备进行拉伸
umount /dev/vg0/lv0
mkfs.ext4 /dev/vg0/lv0将设备格式化为ext4文件系统
mount /dev/vg0/lv0 /mnt挂载
lvextend -L 1800M /dev/vg0/lv0 扩展lvm设备
resize2fs /dev/vg0/lv0 将文件系统也拉伸
6. 将ext4文件系统的设备进行缩减
umount /dev/vg0/lv0
e2fsck -f /dev/vg0/lv0扫描这个设备里面的东西,否则直接缩减会造成损坏
resize2fs /dev/vg0/lv0 1500M 缩减文件系统
lvreduce -L 1500M /dev/vg0/lv0 缩减lvm设备
mount /dev/vg0/lv0 /mnt
lvreduce -L 500M /dev/vg0/lv0 缩减lvm设备
7. 将/dev/vdb2下的东西移到/dev/vdb1,然后将/dev/vdb2空闲出来
pvmove /dev/vbd2 /dev/vdb1完全移过去再操作,否则会损坏文件
vgreduce vg0 /dev/vdb1 将这个橙汁移走
pvremove /dev/vdb1
8. 如何建立lvm的快照
umount /mnt 先卸载再进行快照
lvcreate -L 60M -n lv0-backup -s /dev/vg0/lv0 拍快照
lvs #查看快照信息
mount /dev/vg0/lv0-backup /data 挂载快照
9. 如何删除lvm设备
快照被破坏了,就要删掉快照重新再拍
umount /mnt
lvremove /dev/vg0/lv0backup
lvremove /dev/vg0/lv0
vgremove vg0
pvremove /dev/vdb2
fdisk /dev/vdb 删除建立的所有主分区即可