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