一、LVM 简介
逻辑卷管理器 LVM(Logcal Volume Manager),LVM 可以弹性的调整文件系统的容量,不必要再去烦恼文件系统空间不够的问题。LVM 的实现是将几个物理分区(或磁盘)通过软件组合成为一块看起来是独立的大磁盘(VG),然后将这块大磁盘再经过分成可使用分区(LV),最终就能够挂载使用。
以下是 LVM 一些名词的解释,解释来自百度 LVM:
PhysicalStorageMedia 物理存储设备
指系统的物理存储设备:磁盘,如:/dev/hda、/dev/sda 等,是存储系统最底层的存储单元
PV(Physical Volume)物理卷
指磁盘分区或从逻辑上与磁盘分区具有同样功能的设备,是 LVM 的基本存储逻辑块,但和基本的物理存储介质相比,却包含有与 LVM 相关的管理参数。
VG(Volume Group)卷组
类似于非 LVM 系统中的物理磁盘,其由一个或多个物理卷 PV 组成,可以在卷组上创建一个或多个 LV
LV(Logical Volume)逻辑卷
类似于非 LVM 系统中的磁盘分区,逻辑卷建立在卷组 VG 之上,在逻辑卷 LV 之上可以建立文件系统
PE(Physical Extent)物理块
每一个物理卷 PV 被划分为称为 PE 的基本单元,具有唯一编号的 PE 是可以被 LVM 寻址的最小单元,PE 的大小是可以配置的,默认为 4MB。所以物理卷(PV)大小等同的基本单元 PE 组成。
LE(Logical Extent)逻辑块
逻辑卷 LV 也被划分为可被寻址的基本单位,称为 LE。在同一个卷组中,LE 的大小和 PE 是相同的,并且一一对应。
LVM 各组件的实现流程图如下图,图 1-1
图 1-1 LVM 各组件的实现流程图示
二、LVM 基础实践
1、创建一个大小为 5G 的 LVM
使用 fdisk 创建两个大小分别为 3G,7G 的磁盘分区
- fdisk /dev/sdb
将新建的 / dev/sdb5 和 / dev/sdb6 的 system ID 改为 Linux LVM(8e)
w 保存退出
让系统识别分区表
- partprobe /dev/sdb
查看系统是否识别了新的分区表
- cat /proc/partitions
创建 PV,使用 pvcreate 将物理分区新建为 PV (pvcreate 使用格式可参考 man 手册,简单的使用格式 pvcreate /PATH/TO/BLOCKDEVICE)
- pvcreate / dev / sdb {
- 5,
- 6
- }
使用 pvs 查看所有的 pv 设备
使用 pvdisplay 查看 pv 设备的详细信息
将新建的 pv 设备新建为 VG(vgcreate VGDEVICENAME /PATH/TO/PVDEVICE)
- vgcreate myvg / dev / sdb {
- 5,
- 6
- }
可以使用 - s 选项设置 PE 的大小,默认为 4MB
使用 vgs 查看所有的 vg 设备
使用 vgdisplay 查看 vg 设备的详细信息
(vgscan 和 pvscan 分别可以产看当前文件系统上存在的 vg 设备和 pv 设备)
使用 lvcreate 再 myvg 上新建 lv(lvcreate -n LV_NAME -L #G|M VG_NAME)
- lvcreate -n mylv -L 5G myvg
- lvs
- lvdisplay
格式化新建的 lv
- mke2fs -j /dev/myvg/mylv
挂载 lv
- mount /dev/myvg/mylv /mnt/mylv
使用 mount 查看挂载的 lv 设备
- mount
2、拓展 mylv 到 12GB
拓展 mylv 前,要卸载 mylv
- umount /dev/mapper/myvg-mylv
使用 fdisk 新建一个大小为 5G 的新分区 / dev/sdb7,并将其的 System ID 设置为 8e
将新分区设置为 PV
- pvcreate /dev/sdb7
使用新建的 PV 将 myvg 拓展
- vgextend myvg /dev/sdb7
拓展 lv
- lvextend -L 12G /dev/myvg/mylv
或者使用
- lvextend -L +7G /dev/myvg/mylv
使用 lvs 或者 lvdisplay 查看 mylv
为拓展的 mylv 的文件系统重新划分大小
划分之前需要强制检查磁盘,使用 e2fsck 检查 mylv,使用 - f 强制检查
- e2fsck -f /dev/myvg/mylv
使用 resize2fs 重新划分 mylv 文件系统的大小
- resize2fs -p /dev/myvg/mylv
-p 选项为划分至物理边界(就是将 mylv 全部划分,如果指定大小划分的话 resize2fs /dev/myvg/mylv #G)
重新挂载 mylv 至 / mnt/mylv
拓展 lv 结束
3、缩减 mylv 到 3GB
缩减要保证 mylv 中存贮数据的大小一定要小于缩减后的大小,否则会产生数据损坏的情况
使用 df 命令查看 mylv 被使用的大小
- df - lh | sed - n '1p;
- /mylv/p'
缩减 mylv 前,要卸载 mylv
- umount /dev/mapper/myvg-mylv
缩减的步骤和拓展的步骤相反
首先 resize mylv 的 fs
照样要进行强制检查
- e2fsck -f /dev/myvg/mylv
将 / dev/myvg/mylv 缩减至 3G
- resize2fs /dev/myvg/mylv 3G
使用 lvreduce 缩减 mylv 的空间
- lvreduce -L 3G /dev/myvg/mylv
或者使用
- lvreduce -L -9G /dev/myvg/mylv
重新挂载 mylv 至 / mnt/mylv
缩减 mylv 结束
4、为 mylv 创建快照卷
注意
(1) 创建快照卷生命周期为整个数据访问时长,在这段时长内,数据的增长量不能超出快照卷大小
(2) 快照卷应该是只读的
(3) 快照卷和原卷在同一卷组内
使用 lvcreate 创建快照卷
- lvcreate -L 50M -n mysnapshot -s -p r /dev/myvg/mylv
-L 指定大小,-n 指定名称,-s 创建为快照,-p 设置读写属性,r 为 readonly,rw 为 read and write
使用 lvdisplay 查看创建的快照卷
- lvdisplay /dev/myvg/mysnapshot
挂载快照卷
- mount /dev/myvg/mysnapshot /mnt/mysnapshot
创建快照卷完成
这里挂载的快照卷是创建快照时 mylv 的状态,可以使用 tar 命令将快照卷中的文件备份。
参考文献:
[1] 鸟哥,汪世江. 鸟哥的 Linux 私房菜基础学习篇(第三版)[M]. 北京:人民邮电出版社,2010:473-475.
来源: http://www.bubuko.com/infodetail-1987095.html