欢迎来到5分享! 微信公众号   新浪微博

5分享

技术类别:
当前位置: 主页 > 技术分享 > 操作系统 >

linux下LVM学习_逻辑卷管理

时间:2018-11-25 10:35来源:原创 作者:5分享 点击:
LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,通过LVM可以在不停机的情况下调整分区大小

一、LVM介绍

LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,通过LVM可以在不停机的情况下调整分区大小,提高了磁盘分区管理的灵活性。

111_conew1.jpg

LVM的原理是通过将底层的物理硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用。在传统的磁盘管理机制中,我们的上层应用是直接访问文件系统,从而对底层的物理硬盘进行读取,而在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,其不再是针对于分区进行操作,而是通过一个叫做逻辑卷的东西来对其进行底层的磁盘管理操作。比如说我增加一个物理硬盘,这个时候上层的服务是感觉不到的,因为呈现给上层服务的是以逻辑卷的方式。


LVM专业用语

*物理存储介质(PhysicalStorageMedia)

指系统的物理存储设备:磁盘,如:/dev/hda、/dev/sda等,是存储系统最底层的存储单元。

*物理卷(Physical Volume,PV)

指磁盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。

*卷组(Volume Group,VG)

类似于非LVM系统中的物理磁盘,其由一个或多个物理卷PV组成。可以在卷组上创建一个或多个LV(逻辑卷)。

*逻辑卷(Logical Volume,LV)

类似于非LVM系统中的磁盘分区,逻辑卷建立在卷组VG之上。在逻辑卷LV之上可以建立文件系统(比如/home或者/usr等)。

*物理块(Physical Extent,PE)

每一个物理卷PV被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。所以物理卷(PV)由大小等同的基本单元PE组成。

*逻辑块(Logical Extent,LE)

LVM抽象模型

LVM抽象模型

逻辑卷LV也被划分为可被寻址的基本单位,称为LE。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。


1.使用fdisk 新建分区 修改ID为8e,LVM的分区类型为8e

3.使用 pvcreate 创建 PV 利用该命令将希望添加到卷组的所有分区或者磁盘创建为物理卷。

4.使用 vgcreate 创建 VG 创建卷组。

5.使用 lvcreate 创建 LV 创建逻辑卷

6.格式化LV

7.挂载


示例过程:


1. 查看磁盘情况

# fdisk -l

# lsblk


2.使用fdisk 新建分区 修改ID为8e 并更新

# fdisk /dev/sdb

# partprobe


3.使用 pvcreate 创建 PV (pvscan pvdisplay)

# pvcreate /dev/sdb{5,6,7}


4.使用 vgcreate 创建 VG (vgscan vgdisplay pvscan)

# vgcreate -s 16M testvg /dev/sdb{5,6,7}


5.使用 lvcreate 创建 LV (vgdisplay lsblk lvdisplay)

# lvcreate -l 192 -n testlv testvg


6.格式化LV

# mkfs -t ext4 /dev/testvg/testlv


7.挂载(mkdir df lsblk)

# mount /dev/testvg/testlv /mnt/test


删除LVM的过程


1.先卸载系统上面的 LVM 文件系统 (包括快照与所有 LV)

2.使用 lvremove 移除 LV 

3.使用 vgchange -a n VGname 让 VGname 这个 VG 不具有 Active 的标志

4.使用 vgremove 移除 VG

5.使用 pvremove 移除 PV

6.使用 fdisk 修改 ID 回来啊


示例过程:1,2,1,3,4,5,6,1,7


1. 查看分区和磁盘情况

# df -h

# lsblk


2. 卸载LVM 文件系统

# umount /mnt/test

# umount /mnt/test2


3. 使用 lvremove 移除 LV ( lvscan lvdisplay )

# lvremove /dev/testvg/testlv

# lvremove /dev/testvg/test2lv


4.使用 vgchange -a n VGname 让 VGname 这个 VG 不具有 Active 的标志;

# vgchange -a n testvg


5.使用 vgremove 移除 VG:(vgscan vgdisplay)

# vgremove testvg


6.使用 pvremove 移除 PV (注意1 里面的lsblk 查看到的 )

# pvremove /dev/sdb{5,6,7,8}


7.使用 fdisk 修改ID为82

# fdisk /dev/sdb


8.更新

# partprobe



放大 LV 容量的过程

1.用 fdisk 配置新的具有 8e system ID 的 partition

2.利用 pvcreate 建置 PV

3.利用 vgextend 将 PV 加入VG

4.利用 lvresize 将新加入的 PV 内的 PE 加入LV 中

5.透过 resize2fs 将文件系统的容量确实添加!


示例过程


1. 查看磁盘情况

# fdisk -l

# lsblk


2.使用fdisk 新建分区 修改ID为8e 并更新

# fdisk /dev/sdb

# partprobe


3.使用 pvcreate 创建 PV (pvscan pvdisplay)

# pvcreate /dev/sdb8


4.利用 vgextend 将 PV 加入VG (vgdisplay)

# vgextend testvg /dev/sdb8


5.利用 lvresize 将新加入的 PV 内的 PE 加入LV 中(vgdisplay vgdisplay lvdisplay lsblk df )

# lvresize -l +64 /dev/testvg/testlv


6.透过 resize2fs 将文件系统的容量确实添加( df )

# resize2fs /dev/testvg/testlv


 


缩小LV容量的过程(抽取整块分区)


1.卸载

2.使用resize2f 直接降低LV的容量



示例过程


1.查看PV情况 (df lsblk)

# pvdisplay

# pvscan


2.卸载

# umount /mnt/test


3.磁盘检测LV

# e2fsck -f /dev/testvg/testlv


4.使用resize2fs 直接指定降低后的容量

# resize2fs /dev/testvg/testlv 3G


5.重新挂载

# mount /dev/testvg/testlv /mnt/test


6.使用lvresize 降低LV的容量 (pvscan pvdisplay )

#pvdisplay

#lvreszie -l -64 /dev/testvg/testlv


7.将要抽离的PV 的PE转移到 空闲PV中 (pvscan pvdisplay)

# pvmove /dev/sdb5 /dev/sdb8


8.使用vgreduce 将PV移除VG

# vgreduce testvg /dev/sdb5


9.使用pvremove 去除PV 

# pvremove /dev/sdb5


10.使用fdisk 修改ID 

# fdisk /dev/sdb



先缩小LV1容量,后增大LV2容量的过程(生产环境下的减小/home 增大/root)


1.卸载LV1

2.使用 e2fsck 检测一下LV1

3.使用resize2fs 重新定义LV1的大小

4.重新挂载,检验一下结果

5.使用lvreduce 或lvresize 减小LV1至指定大小

6.使用lvextend 增加LV2的大小

7.重新定义下LV2大小


示例过程


1. 查看磁盘情况

# fdisk -l

# df -h

# lsblk


2.备份LV1的数据(mkdir tar mv )

# mkdir /mnt/backup

# tar -jcv -f /mnt/backup/test.tar.bz2 * 

# mv /mnt/test/* /mnt/backup/


3.卸载LV1 ()

# umount /mnt/test


4.使用 e2fsck 检测一下LV1

# e2fsck -f /dev/testvg/testlv


5.使用resize2fs 重新定义LV1的大小

# resize2fs -p /dev/testvg/testlv 2G


6.重新挂载,检验一下结果

# mount /dev/testvg/testlv /mnt/test

# df -h


7.使用lvreduce 或lvresize 减小LV1至指定大小

# lvresize -L 2G /dev/testvg/testlv

# lvreduce -L 2G /dev/testvg/testlv


8.使用lvextend 增加LV2的大小

# lvextend -l +100%FREE /dev/testvg/test2lv

# lvextend -L +1G /dev/testvg/test2lv


9.重新定义下LV2大小

# resize2fs -p /dev/testvg/test2lv


10.检查结果

# df -h

# lsblk


查看下其他的实例过程


# mkdir /backup 

# mv /home/* /backup/ 

# umount /home 

# lvremove /dev/centos/home 

# lvcreate -L 50G -n home cents 

# mkfs -t xfs /dev/centos/home 

# mv /backup/* /home/ 

# lvextend -L +xxxG /dev/centos/root 

# xfs_growfs root 

# rm -rf /backup



缩小LV是先声明 resize2fs -p 后定义 lvresize -L 的过程

扩大LV是先定义 lvresize -L 后声明 resize2fs -p 的过程


缩下VG是移除空闲的PV的过程


服务器,数据库问题系统问题,硬件报价,虚拟化,服务部署可以扫描下方二维码,添加技术支持,7*12小时在线解答或是QQ联系我们。

欢迎关注【5分享】(fivsha)   

5分享公众号.jpg

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
最新评论
遇到困难可以给我发消息 遇到困难可以给我发消息
推荐内容