Linux大神进阶十六:逻辑卷管理(lvm)
1.理解
(1)逻辑卷管理(LVM:Logical Volume Manager):Linux环境下对磁盘分区进行管理的一种机制;它由Heinz Mauelshagen在Linux 2.4内核上实现,目前最新版本为:稳定版1.0.5,开发版 1.1.0-rc2,以及LVM2开发版Linux用户安装Linux操作系统时遇到的一个常见的难以决定的问题就是如何正确地评估各分区大小,以分配合适的硬盘空间;普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小;当一个逻辑分区存放不下某个文件时,这个文件受上层文件系统的限制,不能跨越多个分区来存放,所以也不能同时放到别的磁盘上;而遇到出现某个分区空间耗尽时,解决的方法通常是使用符号链接或者使用调整分区大小的工具,但这只是暂时解决办法,没有从根本上解决问题;随着Linux的逻辑卷管理功能的出现,这些问题都迎刃而解,用户在无需停机的情况下可以方便地调整各个分区大小。
(1.1)使用场景:在日常工作或者学习中,随着电脑的不断被使用,我们的磁盘空间可能会越来越小,我们不能接更换大硬盘,因为硬盘有价,数据无价。,这时候我们就可以使用LVM,LV存储虚拟化,使用逻辑卷,你不会受跟于物理磁盘的大小,另外,和硬件相关的存储设置被其隐藏,你能不用停止应用或卸载文件系统来调整卷大小或数据迁移这样能减少操作成本,LVM最大的特点就是可以对磁盘进行动态管理。因为逻辑卷的大小是可以动态调整的,而且不会丢失现有的数据。如果我们新增加了硬盘,其也不会改变现有上层的逻辑卷。作为一个动态磁盘管理机制,逻辑卷技术大大提高了磁盘管理的灵活性。
(1.2)工作机制:通过捋底层的物理硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用。在传统的磁盘管理机制中,我们的上层应用是直接访问文件系统,从而对层的物理硬盘进行读取。而在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,其不再是针对于分区进行操怍,而是通过一个叫做逻辑卷的东西来对其进行底层的磁盘管理操作。LVM是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局。提供一个抽象的存储卷,在存储卷上建立文件系统。
(2)物理存储介质(Physical Storage Media):指系统的物理存储设备:磁盘,如:/dev/hda、/dev/sda等,是存储系统最底层的存储单元。
(3)物理卷(Physical Volume,PV):指磁盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块;但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。当前LVM允许你在每个物理卷上保存这个物理卷的至2份元数据拷贝默认为1,保存在设备的开始处为2时,在设备结束处保存第二份备.
(4)卷组(Volume Group,VG):类似于非LVM系统中的物理磁盘,其由一个或多个物理卷PV组成;可以在卷组上创建一个或多个LV(逻辑卷)。
(5)逻辑卷(Logical Volume,LV):类似于非LVM系统中的磁盘分区,逻辑卷建立在卷组VG之上;在逻辑卷LV之上可以建立文件系统(比如/home或者/usr等)。
(6)逻辑块(Logical Extent,LE):逻辑卷LV也被划分为可被寻址的基本单位,称为LE;在同一个卷组中,LE的大小和PE是相同的,并且一一对应。
(7)物理拓展(pe):vm最小的存储单元;(默认创建的大小为4M的整数倍;也可以进行修改)
2.LVM常见操作
功能 | 命令 | 注释 |
---|---|---|
1.建立lvm逻辑卷 | ##注意:建立的时候先建立设备,再装逻辑卷 | |
(1)查看实验素材 | fdisk -l | ## 查看磁盘设备 |
(2)制作实验素材 | fdisk /dev/vdb | ##对 /dev/vdb进行操作 |
t>>>1>>>L>>>8e>>> t>>>2>>>L>>>8e>>> t>>>1>>>L>>>8e>>>p>>>wq | ## 对三个分区进行lvm虚拟化 | |
partprobe | ## 同步分区表 | |
(3) | ##添加lvm相关参数 | |
watch -n 1 'pvs;echo======;vgs;echo ========;lvs” | ##进行监控 | |
pvcreate /dev/vdb{1…3} | ## 创建物理分区 | |
vgcreate johnsonlee /dev/vdb{1…3} | ## 创建卷组johnsonlee | |
lvcreate -n johnson_curry -L 1.2G johnsonlee | ##创建1.2G的 逻辑卷 johnson_curry | |
ll /dev/mapper/johnsonlee-johnsonlee_curry | ##产生虚拟设备 | |
2.删除lvm逻辑卷 | ##删除的时候,先删逻辑卷,再删设备 | |
(1) | lvremove -f /dev/datebase/johnsonlee | ##次实验删除的是datebase卷组的逻辑分卷:johnsonlee |
(2) | vgremove date | ## 删除datebase卷组 |
(3) | pvremove /dev/vdb* | ##删除物理分区 |
3逻辑卷挂载以及格式化 | ||
(1) | mkfs.ext4 /dev/johnsonlee-johnsonlee_curry | ##格式化逻辑卷设备 |
(2) 临时挂载 | mkdir /lvm | ##建立挂载目录 |
mount /dev/johnsonlee-johnsonlee_curry /lvm | ##临时挂载设备到文件系统 | |
(3)永久挂载 | mount | tail -n 1 |
vim /etc/tstab | ## 打开配置文件 | |
/dev/mapper/johnsonlee-johnsonlee_curry /lvm ext4 defaults 0 0 | ## ## 编辑配置文件 | |
mount -a | ##验证是否生效 | |
4.1 物理分区够用的拉伸(ext2/3/4) | ## 注意:(1)拉伸的话,先拉伸设备,再拉伸文件系统;(2)离线拉伸的话,需要先卸载 | |
(1) | watch -n 1 ‘pvs;echo======;vgs;echo ========;lvs” | ##输入监控命令 |
(2) | lvextend -L 1G /dev/johnsonlee-johnsonlee_curry | ##直接拉伸到1G |
lvextend -L +200M /dev/johnsonlee-johnsonlee_curry | ##在原有的基础拉伸200M | |
(3) | lvs | ##查看逻辑卷设备是否拉伸成功 |
(4) | df -h | ## 文件系统的大小是否拉伸成功发现并没有生效 |
(5) | resize2fs /dev/johnsonlee-johnsonlee_curry | ##更新文件系统 |
(6) | df -h | ## 文件系统的大小是否拉伸成功发现并没有生效 |
4.2物理分区不足的拉伸(ext2/3/4 2.5G) | ## 注意:(1)拉伸的话,先拉伸设备,再拉伸文件系统;(2)离线拉伸的话,需要先卸载 | |
(1) | watch -n 1 ‘pvs;echo======;vgs;echo ========;lvs” | ##输入监控命令 |
(2)创建一个物理卷 | ||
n 4 >>>n 5 >>>t 5 L 8e >>>p>>>wq | ## 对5分区进行lvm虚拟化 | |
partprobe | ## 同步分区表 | |
pvcreate /dev/vdb5 | ## 创建物理分区 | |
(3) | vgextend johnsonlee /dev/vdb5 | ##将新的物理卷添加到物理卷组 |
(4) | vgs | ## 查看拉伸后的物理卷组的大小 |
(5) | lvextend -L 2.5G /dev/johnsonlee-johnsonlee_curry | ##扩展逻辑卷大小到2.5G |
(6) | lvs | ##查看逻辑卷设备是否拉伸成功 |
(7) | df -h | ## 文件系统的大小是否拉伸成功发现并没有生效 |
(8) | resize2fs /dev/johnsonlee-johnsonlee_curry | ##更新文件系统 |
(9) | df -h | ## 文件系统的大小是否拉伸成功发现并没有生效 |
4.3xfs格式逻辑卷的拉伸(不能缩减1G>>>1.4G) | ||
(1) 格式化 | mkfs.xfs /dev/datebase/johnsonlee | |
(2) 确定卷组是否有足够的空间可以拉伸 | vgs | |
(3)逻辑卷拉伸命令 | lvextend -L 1.8G /dev/datebase/johnsonlee | ## 拉伸到1.8G |
lvextend -L +300M /dev/datebase/johnsonlee | ##在原有的基础上+300M | |
(4)查看拉伸后的空间大小 | lvs | ##查兰逻辑卷是否拉伸成功 |
df -h | ##查看文件系统的大小是否拉伸成功 | |
(5) 更新文件系统 | xfs_growfs /dev/datebase/johnsonlee | |
(6) 查看 更新后的文件系统 | df -h | |
5.逻辑卷的压缩(ext2/3/4) | ##注意:压缩的话,先压缩文件,再压缩设备 | |
(1) ##卸载逻辑卷 | umount /dev/mapper/johnsonlee-johnsonlee_curry | |
(2)对文件系统进行校验 | e2fsck -fv /dev/johnsonlee-johnsonlee_curry | |
(3)缩小文件系统到1G | resize2fs /dev/johnsonlee-johnsonlee_curry 1G | |
(4)缩小逻辑卷 | lvreduce -L 1G /dev/johnsonlee-johnsonlee_curry | |
(5)查看卷组中是否能有空闲的分区,有的移除; | vgreduce johnsonlee /dev/vdb3 | ##删除vg分区 3 |
premove /dev/vdb3 | ## 删除物理分区3 | |
6.逻辑卷的快照 | ## 如果想要获取以前快照的数据。删除快照,重新照 | |
(1) | umount /data | ##先卸载再进行快照 |
(2) | lvcreate -L 10M -n lve-snap -s /dev/johnsonlee-johnsonlee_curry | ##建立快照 |
(3) | lvs | ## 查看 |
(4) | mount /dev/johnsonlee-johnsonlee_curry /lvm | ##挂载快照 |
(5) | cd /lvm | ##打开目录 |
(6) | touch file | ##创建文件 |
(7) | mkfs.ext4 /dev/johnsonlee/ lve-snap | ##格式化 |
(8) | lvremove /dev/johnsonlee/ lve-snap | ## 删除快照 |
(9) | lvcreate -L 10M -n lve-snap -s /dev/johnsonlee-johnsonlee_curry | ##新建快照 |
(10) | mount /dev/johnsonlee-johnsonlee_curry /lvm | ## ##挂载快照 |
(11) | ls | ##发现文件依然在 |
3.LVM操作结果
RESULT1:建立lvm逻辑卷RESULT2:删除lvm逻辑卷
RESULT3:逻辑卷挂载以及格式化
RESULT4.1 物理分区够用的拉伸(ext2/3/4)
RESULT4.2 物理分区不足(2.5G)的拉伸(ext2/3/4)
RESULT4.3逻辑卷的拉伸(xfs)
RESULT5 逻辑卷的压缩(ext2/3/4)RESULT6逻辑卷的快照
4.例题
答案: